Index: chrome/renderer/prerender/prerender_helper.cc |
diff --git a/chrome/renderer/prerender/prerender_helper.cc b/chrome/renderer/prerender/prerender_helper.cc |
index 2ea8d076cfdbce133dd32adc38bb1e0989b153b7..b006236124616f5dbe40624f0e221444b23e13dc 100644 |
--- a/chrome/renderer/prerender/prerender_helper.cc |
+++ b/chrome/renderer/prerender/prerender_helper.cc |
@@ -34,18 +34,38 @@ void UpdateVisibilityState(content::RenderFrame* render_frame) { |
namespace prerender { |
-PrerenderHelper::PrerenderHelper(content::RenderFrame* render_frame) |
+PrerenderHelper::PrerenderHelper(content::RenderFrame* render_frame, |
+ PrerenderMode prerender_mode) |
: content::RenderFrameObserver(render_frame), |
- content::RenderFrameObserverTracker<PrerenderHelper>(render_frame) { |
+ content::RenderFrameObserverTracker<PrerenderHelper>(render_frame), |
+ prerender_mode_(prerender_mode) { |
+ DCHECK_NE(prerender_mode_, NO_PRERENDER); |
UpdateVisibilityState(render_frame); |
} |
+PrerenderHelper::PrerenderHelper(content::RenderFrame* sub_frame) |
+ : PrerenderHelper(sub_frame, |
+ GetPrerenderMode( |
+ sub_frame->GetRenderView()->GetMainRenderFrame())) { |
mmenke
2016/08/19 16:42:50
DCHECK that render_frame is not the main render fr
droger
2016/08/22 09:30:06
Done.
|
+} |
+ |
PrerenderHelper::~PrerenderHelper() { |
} |
// static. |
bool PrerenderHelper::IsPrerendering(const content::RenderFrame* render_frame) { |
- return PrerenderHelper::Get(render_frame) != NULL; |
+ return PrerenderHelper::GetPrerenderMode(render_frame) != NO_PRERENDER; |
+} |
+ |
+// static. |
+PrerenderMode PrerenderHelper::GetPrerenderMode( |
+ const content::RenderFrame* render_frame) { |
+ PrerenderHelper* helper = PrerenderHelper::Get(render_frame); |
+ if (!helper) |
+ return NO_PRERENDER; |
+ |
+ DCHECK_NE(helper->prerender_mode_, NO_PRERENDER); |
+ return helper->prerender_mode_; |
} |
bool PrerenderHelper::OnMessageReceived( |