Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Unified Diff: chrome/renderer/render_view.cc

Issue 6532031: Fix for swapping in prerendered RenderViews with provisional data sources (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Remove some unneeded code Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/render_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/render_view.cc
===================================================================
--- chrome/renderer/render_view.cc (revision 75181)
+++ chrome/renderer/render_view.cc (working copy)
@@ -557,6 +557,7 @@
navigation_gesture_(NavigationGestureUnknown),
opened_by_user_gesture_(true),
opener_suppressed_(false),
+ is_prerendering_(false),
page_id_(-1),
last_page_id_sent_to_browser_(-1),
last_indexed_page_id_(-1),
@@ -1425,8 +1426,7 @@
navigation_state->set_load_type(NavigationState::NORMAL_LOAD);
} else {
navigation_state->set_load_type(NavigationState::PRERENDER_LOAD);
- navigation_state->set_was_started_as_prerender(true);
- navigation_state->set_is_prerendering(true);
+ is_prerendering_ = true;
}
}
main_frame->loadRequest(request);
@@ -2720,11 +2720,8 @@
if (info.path.value() == webkit::npapi::kDefaultPluginLibraryName ||
plugin_setting == CONTENT_SETTING_ALLOW ||
host_setting == CONTENT_SETTING_ALLOW) {
- // Delay loading plugins if prerendering main frame.
- WebDataSource* main_frame_ds = webview()->mainFrame()->dataSource();
- NavigationState* navigation_state =
- NavigationState::FromDataSource(main_frame_ds);
- if (navigation_state->is_prerendering()) {
+ // Delay loading plugins if prerendering.
+ if (is_prerendering_) {
return CreatePluginPlaceholder(frame,
params,
*group,
@@ -3229,19 +3226,7 @@
new UserScriptIdleScheduler(this, frame));
}
- // If the RenderView was prerendering before, it is still prerendering.
- if (!frame->parent() && content_initiated) {
- WebDataSource* ds_old = webview()->mainFrame()->dataSource();
- if (ds_old) {
- NavigationState* navigation_state =
- NavigationState::FromDataSource(ds_old);
- if (navigation_state) {
- state->set_is_prerendering(navigation_state->is_prerendering());
- state->set_was_started_as_prerender(
- navigation_state->was_started_as_prerender());
- }
- }
- }
+ state->set_was_started_as_prerender(is_prerendering_);
ds->setExtraData(state);
}
@@ -4718,15 +4703,25 @@
}
void RenderView::OnDisplayPrerenderedPage() {
- NavigationState* navigation_state = pending_navigation_state_.get();
- if (!navigation_state) {
- WebDataSource* ds = webview()->mainFrame()->dataSource();
- navigation_state = NavigationState::FromDataSource(ds);
- }
+ DCHECK(is_prerendering_);
+ is_prerendering_ = false;
- DCHECK(navigation_state->is_prerendering());
- navigation_state->set_is_prerendering(false);
+ // Update NavigationState for histograms.
+ WebDataSource* ds = webview()->mainFrame()->dataSource();
+ NavigationState* navigation_state = NavigationState::FromDataSource(ds);
navigation_state->set_prerendered_page_display_time(Time::Now());
+
+ // If there is a provisional data source, update its NavigationState, too.
+ WebDataSource* povisional_ds =
cbentzel 2011/02/18 13:56:47 provisional_ds - although at least the misspelling
mmenke 2011/02/18 14:53:04 Fixed, though I prefer my more creative spelling.
+ webview()->mainFrame()->provisionalDataSource();
+ if (povisional_ds) {
+ NavigationState* provisional_navigation_state =
+ NavigationState::FromDataSource(povisional_ds);
+ if (provisional_navigation_state) {
+ provisional_navigation_state->set_prerendered_page_display_time(
+ Time::Now());
+ }
+ }
}
void RenderView::OnFileChooserResponse(const std::vector<FilePath>& paths) {
« no previous file with comments | « chrome/renderer/render_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698