// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/renderer/chrome_render_frame_observer.h"
#include "chrome/common/prerender_messages.h"
#include "chrome/renderer/prerender/prerender_helper.h"
ChromeRenderFrameObserver::ChromeRenderFrameObserver(
content::RenderFrame* render_frame)
: content::RenderFrameObserver(render_frame) {
}
ChromeRenderFrameObserver::~ChromeRenderFrameObserver() {
}
bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) {
// Filter only.
IPC_BEGIN_MESSAGE_MAP(ChromeRenderFrameObserver, message)
IPC_MESSAGE_HANDLER(PrerenderMsg_SetIsPrerendering, OnSetIsPrerendering);
IPC_END_MESSAGE_MAP()
return false;
}
void ChromeRenderFrameObserver::OnSetIsPrerendering(bool is_prerendering) {
if (is_prerendering) {
DCHECK(!prerender::PrerenderHelper::Get(render_frame()));
// The PrerenderHelper will destroy itself either after recording histograms
// or on destruction of the RenderView.
new prerender::PrerenderHelper(render_frame());
}
}