Index: chrome/renderer/prerender/prerender_helper.cc |
=================================================================== |
--- chrome/renderer/prerender/prerender_helper.cc (revision 239602) |
+++ chrome/renderer/prerender/prerender_helper.cc (working copy) |
@@ -8,6 +8,7 @@ |
#include "base/metrics/histogram.h" |
#include "chrome/common/prerender_messages.h" |
#include "content/public/renderer/document_state.h" |
+#include "content/public/renderer/render_frame.h" |
#include "content/public/renderer/render_view.h" |
#include "third_party/WebKit/public/web/WebFrame.h" |
#include "third_party/WebKit/public/web/WebView.h" |
@@ -16,11 +17,14 @@ |
namespace { |
-// Updates the visibility state of the RenderView. Must be called whenever |
+// Updates the visibility state of the RenderFrame. Must be called whenever |
// prerendering starts or finishes and the page is about to be show. At both |
-// those times, the RenderView is hidden. |
-void UpdateVisibilityState(content::RenderView* render_view) { |
- if (render_view->GetWebView()) { |
+// those times, the RenderFrame is hidden. |
+void UpdateVisibilityState(content::RenderFrame* render_frame) { |
+ // TODO(jam): until the prerendering code works on frames instead of views, we |
+ // have to do this awkward check. |
+ content::RenderView* render_view = render_frame->GetRenderView(); |
+ if (render_view->GetMainRenderFrame() == render_frame) { |
render_view->GetWebView()->setVisibilityState( |
render_view->GetVisibilityState(), false); |
} |
@@ -30,18 +34,18 @@ |
namespace prerender { |
-PrerenderHelper::PrerenderHelper(content::RenderView* render_view) |
- : content::RenderViewObserver(render_view), |
- content::RenderViewObserverTracker<PrerenderHelper>(render_view) { |
- UpdateVisibilityState(render_view); |
+PrerenderHelper::PrerenderHelper(content::RenderFrame* render_frame) |
+ : content::RenderFrameObserver(render_frame), |
+ content::RenderFrameObserverTracker<PrerenderHelper>(render_frame) { |
+ UpdateVisibilityState(render_frame); |
} |
PrerenderHelper::~PrerenderHelper() { |
} |
// static. |
-bool PrerenderHelper::IsPrerendering(const content::RenderView* render_view) { |
- return PrerenderHelper::Get(render_view) != NULL; |
+bool PrerenderHelper::IsPrerendering(const content::RenderFrame* render_frame) { |
+ return PrerenderHelper::Get(render_frame) != NULL; |
} |
bool PrerenderHelper::OnMessageReceived( |
@@ -60,7 +64,7 @@ |
if (is_prerendering) |
return; |
- content::RenderView* view = render_view(); |
+ content::RenderFrame* view = render_frame(); |
mmenke
2013/12/10 20:56:41
nit: view -> frame?
jam
2013/12/10 21:14:17
Done.
|
// |this| must be deleted so PrerenderHelper::IsPrerendering returns false |
// when the visibility state is updated, so the visibility state string will |
// not be "prerendered". |