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

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 483773002: PlzNavigate: implement CommitNavigation on the browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: NavigationRequest has ownership of NavigationParams Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 #if defined(OS_ANDROID) 336 #if defined(OS_ANDROID)
337 // Delay between tapping in content and launching the associated android intent. 337 // Delay between tapping in content and launching the associated android intent.
338 // Used to allow users see what has been recognized as content. 338 // Used to allow users see what has been recognized as content.
339 const size_t kContentIntentDelayMilliseconds = 700; 339 const size_t kContentIntentDelayMilliseconds = 700;
340 #endif 340 #endif
341 341
342 static RenderViewImpl* (*g_create_render_view_impl)(RenderViewImplParams*) = 342 static RenderViewImpl* (*g_create_render_view_impl)(RenderViewImplParams*) =
343 NULL; 343 NULL;
344 344
345 // static 345 // static
346 bool RenderViewImpl::IsReload(const FrameMsg_Navigate_Params& params) { 346 bool RenderViewImpl::IsReload(FrameMsg_Navigate_Type::Value navigation_type) {
347 return 347 return navigation_type == FrameMsg_Navigate_Type::RELOAD ||
348 params.navigation_type == FrameMsg_Navigate_Type::RELOAD || 348 navigation_type == FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE ||
349 params.navigation_type == FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE || 349 navigation_type == FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
350 params.navigation_type ==
351 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
352 } 350 }
353 351
354 // static 352 // static
355 Referrer RenderViewImpl::GetReferrerFromRequest( 353 Referrer RenderViewImpl::GetReferrerFromRequest(
356 WebFrame* frame, 354 WebFrame* frame,
357 const WebURLRequest& request) { 355 const WebURLRequest& request) {
358 return Referrer(GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))), 356 return Referrer(GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))),
359 request.referrerPolicy()); 357 request.referrerPolicy());
360 } 358 }
361 359
(...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after
1399 webview()->focusedFrame()->selectWordAroundCaret(); 1397 webview()->focusedFrame()->selectWordAroundCaret();
1400 handling_input_event_ = false; 1398 handling_input_event_ = false;
1401 } 1399 }
1402 1400
1403 bool RenderViewImpl::IsBackForwardToStaleEntry( 1401 bool RenderViewImpl::IsBackForwardToStaleEntry(
1404 const FrameMsg_Navigate_Params& params, 1402 const FrameMsg_Navigate_Params& params,
1405 bool is_reload) { 1403 bool is_reload) {
1406 // Make sure this isn't a back/forward to an entry we have already cropped 1404 // Make sure this isn't a back/forward to an entry we have already cropped
1407 // or replaced from our history, before the browser knew about it. If so, 1405 // or replaced from our history, before the browser knew about it. If so,
1408 // a new navigation has committed in the mean time, and we can ignore this. 1406 // a new navigation has committed in the mean time, and we can ignore this.
1409 bool is_back_forward = !is_reload && params.page_state.IsValid(); 1407 bool is_back_forward =
1408 !is_reload && params.commit_params.page_state.IsValid();
1410 1409
1411 // Note: if the history_list_length_ is 0 for a back/forward, we must be 1410 // Note: if the history_list_length_ is 0 for a back/forward, we must be
1412 // restoring from a previous session. We'll update our state in OnNavigate. 1411 // restoring from a previous session. We'll update our state in OnNavigate.
1413 if (!is_back_forward || history_list_length_ <= 0) 1412 if (!is_back_forward || history_list_length_ <= 0)
1414 return false; 1413 return false;
1415 1414
1416 DCHECK_EQ(static_cast<int>(history_page_ids_.size()), history_list_length_); 1415 DCHECK_EQ(static_cast<int>(history_page_ids_.size()), history_list_length_);
1417 1416
1418 // Check for whether the forward history has been cropped due to a recent 1417 // Check for whether the forward history has been cropped due to a recent
1419 // navigation the browser didn't know about. 1418 // navigation the browser didn't know about.
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
2277 } 2276 }
2278 2277
2279 void RenderViewImpl::PopulateDocumentStateFromPending( 2278 void RenderViewImpl::PopulateDocumentStateFromPending(
2280 DocumentState* document_state) { 2279 DocumentState* document_state) {
2281 const FrameMsg_Navigate_Params& params = *pending_navigation_params_.get(); 2280 const FrameMsg_Navigate_Params& params = *pending_navigation_params_.get();
2282 document_state->set_request_time(params.request_time); 2281 document_state->set_request_time(params.request_time);
2283 2282
2284 InternalDocumentStateData* internal_data = 2283 InternalDocumentStateData* internal_data =
2285 InternalDocumentStateData::FromDocumentState(document_state); 2284 InternalDocumentStateData::FromDocumentState(document_state);
2286 2285
2287 if (!params.url.SchemeIs(url::kJavaScriptScheme) && 2286 if (!params.core_params.url.SchemeIs(url::kJavaScriptScheme) &&
2288 params.navigation_type == FrameMsg_Navigate_Type::RESTORE) { 2287 params.core_params.navigation_type == FrameMsg_Navigate_Type::RESTORE) {
2289 // We're doing a load of a page that was restored from the last session. By 2288 // We're doing a load of a page that was restored from the last session. By
2290 // default this prefers the cache over loading (LOAD_PREFERRING_CACHE) which 2289 // default this prefers the cache over loading (LOAD_PREFERRING_CACHE) which
2291 // can result in stale data for pages that are set to expire. We explicitly 2290 // can result in stale data for pages that are set to expire. We explicitly
2292 // override that by setting the policy here so that as necessary we load 2291 // override that by setting the policy here so that as necessary we load
2293 // from the network. 2292 // from the network.
2294 // 2293 //
2295 // TODO(davidben): Remove this in favor of passing a cache policy to the 2294 // TODO(davidben): Remove this in favor of passing a cache policy to the
2296 // loadHistoryItem call in OnNavigate. That requires not overloading 2295 // loadHistoryItem call in OnNavigate. That requires not overloading
2297 // UseProtocolCachePolicy to mean both "normal load" and "determine cache 2296 // UseProtocolCachePolicy to mean both "normal load" and "determine cache
2298 // policy based on load type, etc". 2297 // policy based on load type, etc".
2299 internal_data->set_cache_policy_override( 2298 internal_data->set_cache_policy_override(
2300 WebURLRequest::UseProtocolCachePolicy); 2299 WebURLRequest::UseProtocolCachePolicy);
2301 } 2300 }
2302 2301
2303 if (IsReload(params)) 2302 if (IsReload(params.core_params.navigation_type))
2304 document_state->set_load_type(DocumentState::RELOAD); 2303 document_state->set_load_type(DocumentState::RELOAD);
2305 else if (params.page_state.IsValid()) 2304 else if (params.commit_params.page_state.IsValid())
2306 document_state->set_load_type(DocumentState::HISTORY_LOAD); 2305 document_state->set_load_type(DocumentState::HISTORY_LOAD);
2307 else 2306 else
2308 document_state->set_load_type(DocumentState::NORMAL_LOAD); 2307 document_state->set_load_type(DocumentState::NORMAL_LOAD);
2309 2308
2310 internal_data->set_is_overriding_user_agent(params.is_overriding_user_agent); 2309 internal_data->set_is_overriding_user_agent(
2310 params.commit_params.is_overriding_user_agent);
2311 internal_data->set_must_reset_scroll_and_scale_state( 2311 internal_data->set_must_reset_scroll_and_scale_state(
2312 params.navigation_type == 2312 params.core_params.navigation_type ==
2313 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL); 2313 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL);
2314 document_state->set_can_load_local_resources(params.can_load_local_resources); 2314 document_state->set_can_load_local_resources(params.can_load_local_resources);
2315 } 2315 }
2316 2316
2317 NavigationState* RenderViewImpl::CreateNavigationStateFromPending() { 2317 NavigationState* RenderViewImpl::CreateNavigationStateFromPending() {
2318 const FrameMsg_Navigate_Params& params = *pending_navigation_params_.get(); 2318 const FrameMsg_Navigate_Params& params = *pending_navigation_params_.get();
2319 NavigationState* navigation_state = NULL; 2319 NavigationState* navigation_state = NULL;
2320 2320
2321 // A navigation resulting from loading a javascript URL should not be treated 2321 // A navigation resulting from loading a javascript URL should not be treated
2322 // as a browser initiated event. Instead, we want it to look as if the page 2322 // as a browser initiated event. Instead, we want it to look as if the page
2323 // initiated any load resulting from JS execution. 2323 // initiated any load resulting from JS execution.
2324 if (!params.url.SchemeIs(url::kJavaScriptScheme)) { 2324 if (!params.core_params.url.SchemeIs(url::kJavaScriptScheme)) {
2325 navigation_state = NavigationState::CreateBrowserInitiated( 2325 navigation_state = NavigationState::CreateBrowserInitiated(
2326 params.page_id, 2326 params.page_id,
2327 params.pending_history_list_offset, 2327 params.pending_history_list_offset,
2328 params.should_clear_history_list, 2328 params.should_clear_history_list,
2329 params.transition); 2329 params.core_params.transition);
2330 navigation_state->set_should_replace_current_entry( 2330 navigation_state->set_should_replace_current_entry(
2331 params.should_replace_current_entry); 2331 params.should_replace_current_entry);
2332 navigation_state->set_transferred_request_child_id( 2332 navigation_state->set_transferred_request_child_id(
2333 params.transferred_request_child_id); 2333 params.transferred_request_child_id);
2334 navigation_state->set_transferred_request_request_id( 2334 navigation_state->set_transferred_request_request_id(
2335 params.transferred_request_request_id); 2335 params.transferred_request_request_id);
2336 navigation_state->set_allow_download(params.allow_download); 2336 navigation_state->set_allow_download(params.core_params.allow_download);
2337 navigation_state->set_extra_headers(params.extra_headers); 2337 navigation_state->set_extra_headers(params.request_params.extra_headers);
2338 } else { 2338 } else {
2339 navigation_state = NavigationState::CreateContentInitiated(); 2339 navigation_state = NavigationState::CreateContentInitiated();
2340 } 2340 }
2341 return navigation_state; 2341 return navigation_state;
2342 } 2342 }
2343 2343
2344 void RenderViewImpl::ProcessViewLayoutFlags(const CommandLine& command_line) { 2344 void RenderViewImpl::ProcessViewLayoutFlags(const CommandLine& command_line) {
2345 bool enable_viewport = 2345 bool enable_viewport =
2346 command_line.HasSwitch(switches::kEnableViewport) || 2346 command_line.HasSwitch(switches::kEnableViewport) ||
2347 command_line.HasSwitch(switches::kEnableViewportMeta); 2347 command_line.HasSwitch(switches::kEnableViewportMeta);
(...skipping 1868 matching lines...) Expand 10 before | Expand all | Expand 10 after
4216 std::vector<gfx::Size> sizes; 4216 std::vector<gfx::Size> sizes;
4217 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); 4217 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes);
4218 if (!url.isEmpty()) 4218 if (!url.isEmpty())
4219 urls.push_back( 4219 urls.push_back(
4220 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); 4220 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes));
4221 } 4221 }
4222 SendUpdateFaviconURL(urls); 4222 SendUpdateFaviconURL(urls);
4223 } 4223 }
4224 4224
4225 } // namespace content 4225 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698