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

Side by Side Diff: content/browser/frame_host/navigator_impl.cc

Issue 2225343002: Navigation: move RestoreType and ReloadType into a separate file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase+ Created 4 years, 4 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/browser/frame_host/navigator_impl.h" 5 #include "content/browser/frame_host/navigator_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "content/public/common/url_constants.h" 44 #include "content/public/common/url_constants.h"
45 #include "net/base/net_errors.h" 45 #include "net/base/net_errors.h"
46 #include "url/gurl.h" 46 #include "url/gurl.h"
47 #include "url/url_constants.h" 47 #include "url/url_constants.h"
48 48
49 namespace content { 49 namespace content {
50 50
51 namespace { 51 namespace {
52 52
53 FrameMsg_Navigate_Type::Value GetNavigationType( 53 FrameMsg_Navigate_Type::Value GetNavigationType(
54 BrowserContext* browser_context, const NavigationEntryImpl& entry, 54 BrowserContext* browser_context,
55 NavigationController::ReloadType reload_type) { 55 const NavigationEntryImpl& entry,
56 ReloadType reload_type) {
56 switch (reload_type) { 57 switch (reload_type) {
57 case NavigationController::RELOAD: 58 case ReloadType::NORMAL:
58 return FrameMsg_Navigate_Type::RELOAD; 59 return FrameMsg_Navigate_Type::RELOAD;
59 case NavigationController::RELOAD_MAIN_RESOURCE: 60 case ReloadType::MAIN_RESOURCE:
60 return FrameMsg_Navigate_Type::RELOAD_MAIN_RESOURCE; 61 return FrameMsg_Navigate_Type::RELOAD_MAIN_RESOURCE;
61 case NavigationController::RELOAD_BYPASSING_CACHE: 62 case ReloadType::BYPASSING_CACHE:
62 case NavigationController::RELOAD_DISABLE_LOFI_MODE: 63 case ReloadType::DISABLE_LOFI_MODE:
63 return FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE; 64 return FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE;
64 case NavigationController::RELOAD_ORIGINAL_REQUEST_URL: 65 case ReloadType::ORIGINAL_REQUEST_URL:
65 return FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; 66 return FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
66 case NavigationController::NO_RELOAD: 67 case ReloadType::NONE:
67 break; // Fall through to rest of function. 68 break; // Fall through to rest of function.
68 } 69 }
69 70
70 // |RenderViewImpl::PopulateStateFromPendingNavigationParams| differentiates 71 // |RenderViewImpl::PopulateStateFromPendingNavigationParams| differentiates
71 // between |RESTORE_WITH_POST| and |RESTORE|. 72 // between |RESTORE_WITH_POST| and |RESTORE|.
72 if (entry.restore_type() == 73 if (entry.restore_type() == RestoreType::LAST_SESSION_EXITED_CLEANLY) {
73 NavigationEntryImpl::RESTORE_LAST_SESSION_EXITED_CLEANLY) {
74 if (entry.GetHasPostData()) 74 if (entry.GetHasPostData())
75 return FrameMsg_Navigate_Type::RESTORE_WITH_POST; 75 return FrameMsg_Navigate_Type::RESTORE_WITH_POST;
76 return FrameMsg_Navigate_Type::RESTORE; 76 return FrameMsg_Navigate_Type::RESTORE;
77 } 77 }
78 78
79 return FrameMsg_Navigate_Type::NORMAL; 79 return FrameMsg_Navigate_Type::NORMAL;
80 } 80 }
81 81
82 } // namespace 82 } // namespace
83 83
84 struct NavigatorImpl::NavigationMetricsData { 84 struct NavigatorImpl::NavigationMetricsData {
85 NavigationMetricsData(base::TimeTicks start_time, 85 NavigationMetricsData(base::TimeTicks start_time,
86 GURL url, 86 GURL url,
87 NavigationEntryImpl::RestoreType restore_type) 87 RestoreType restore_type)
88 : start_time_(start_time), url_(url) { 88 : start_time_(start_time), url_(url) {
89 is_restoring_from_last_session_ = 89 is_restoring_from_last_session_ =
90 (restore_type == 90 (restore_type == RestoreType::LAST_SESSION_EXITED_CLEANLY ||
91 NavigationEntryImpl::RESTORE_LAST_SESSION_EXITED_CLEANLY || 91 restore_type == RestoreType::LAST_SESSION_CRASHED);
92 restore_type == NavigationEntryImpl::RESTORE_LAST_SESSION_CRASHED);
93 } 92 }
94 93
95 base::TimeTicks start_time_; 94 base::TimeTicks start_time_;
96 GURL url_; 95 GURL url_;
97 bool is_restoring_from_last_session_; 96 bool is_restoring_from_last_session_;
98 base::TimeTicks url_job_start_time_; 97 base::TimeTicks url_job_start_time_;
99 base::TimeDelta before_unload_delay_; 98 base::TimeDelta before_unload_delay_;
100 }; 99 };
101 100
102 NavigatorImpl::NavigatorImpl( 101 NavigatorImpl::NavigatorImpl(
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 delegate_->DidFailLoadWithError( 264 delegate_->DidFailLoadWithError(
266 render_frame_host, url, error_code, 265 render_frame_host, url, error_code,
267 error_description, was_ignored_by_handler); 266 error_description, was_ignored_by_handler);
268 } 267 }
269 } 268 }
270 269
271 bool NavigatorImpl::NavigateToEntry( 270 bool NavigatorImpl::NavigateToEntry(
272 FrameTreeNode* frame_tree_node, 271 FrameTreeNode* frame_tree_node,
273 const FrameNavigationEntry& frame_entry, 272 const FrameNavigationEntry& frame_entry,
274 const NavigationEntryImpl& entry, 273 const NavigationEntryImpl& entry,
275 NavigationController::ReloadType reload_type, 274 ReloadType reload_type,
276 bool is_same_document_history_load, 275 bool is_same_document_history_load,
277 bool is_history_navigation_in_new_child, 276 bool is_history_navigation_in_new_child,
278 bool is_pending_entry, 277 bool is_pending_entry,
279 const scoped_refptr<ResourceRequestBodyImpl>& post_body) { 278 const scoped_refptr<ResourceRequestBodyImpl>& post_body) {
280 TRACE_EVENT0("browser,navigation", "NavigatorImpl::NavigateToEntry"); 279 TRACE_EVENT0("browser,navigation", "NavigatorImpl::NavigateToEntry");
281 280
282 GURL dest_url = frame_entry.url(); 281 GURL dest_url = frame_entry.url();
283 Referrer dest_referrer = frame_entry.referrer(); 282 Referrer dest_referrer = frame_entry.referrer();
284 if (reload_type == 283 if (reload_type == ReloadType::ORIGINAL_REQUEST_URL &&
285 NavigationController::ReloadType::RELOAD_ORIGINAL_REQUEST_URL &&
286 entry.GetOriginalRequestURL().is_valid() && !entry.GetHasPostData()) { 284 entry.GetOriginalRequestURL().is_valid() && !entry.GetHasPostData()) {
287 // We may have been redirected when navigating to the current URL. 285 // We may have been redirected when navigating to the current URL.
288 // Use the URL the user originally intended to visit, if it's valid and if a 286 // Use the URL the user originally intended to visit, if it's valid and if a
289 // POST wasn't involved; the latter case avoids issues with sending data to 287 // POST wasn't involved; the latter case avoids issues with sending data to
290 // the wrong page. 288 // the wrong page.
291 dest_url = entry.GetOriginalRequestURL(); 289 dest_url = entry.GetOriginalRequestURL();
292 dest_referrer = Referrer(); 290 dest_referrer = Referrer();
293 } 291 }
294 292
295 // Don't attempt to navigate to non-empty invalid URLs. 293 // Don't attempt to navigate to non-empty invalid URLs.
(...skipping 21 matching lines...) Expand all
317 TRACE_EVENT_SCOPE_GLOBAL, navigation_start.ToInternalValue()); 315 TRACE_EVENT_SCOPE_GLOBAL, navigation_start.ToInternalValue());
318 316
319 // Determine if LoFi should be used for the navigation. 317 // Determine if LoFi should be used for the navigation.
320 LoFiState lofi_state = LOFI_UNSPECIFIED; 318 LoFiState lofi_state = LOFI_UNSPECIFIED;
321 if (!frame_tree_node->IsMainFrame()) { 319 if (!frame_tree_node->IsMainFrame()) {
322 // For subframes, use the state of the top-level frame. 320 // For subframes, use the state of the top-level frame.
323 lofi_state = frame_tree_node->frame_tree() 321 lofi_state = frame_tree_node->frame_tree()
324 ->root() 322 ->root()
325 ->current_frame_host() 323 ->current_frame_host()
326 ->last_navigation_lofi_state(); 324 ->last_navigation_lofi_state();
327 } else if (reload_type == 325 } else if (reload_type == ReloadType::DISABLE_LOFI_MODE) {
328 NavigationController::ReloadType::RELOAD_DISABLE_LOFI_MODE) {
329 // Disable LoFi when asked for it explicitly. 326 // Disable LoFi when asked for it explicitly.
330 lofi_state = LOFI_OFF; 327 lofi_state = LOFI_OFF;
331 } 328 }
332 329
333 // PlzNavigate: the RenderFrameHosts are no longer asked to navigate. 330 // PlzNavigate: the RenderFrameHosts are no longer asked to navigate.
334 if (IsBrowserSideNavigationEnabled()) { 331 if (IsBrowserSideNavigationEnabled()) {
335 navigation_data_.reset(new NavigationMetricsData(navigation_start, dest_url, 332 navigation_data_.reset(new NavigationMetricsData(navigation_start, dest_url,
336 entry.restore_type())); 333 entry.restore_type()));
337 RequestNavigation(frame_tree_node, dest_url, dest_referrer, frame_entry, 334 RequestNavigation(frame_tree_node, dest_url, dest_referrer, frame_entry,
338 entry, reload_type, lofi_state, 335 entry, reload_type, lofi_state,
(...skipping 11 matching lines...) Expand all
350 TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP1( 347 TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP1(
351 "navigation", "Navigation timeToNetworkStack", 348 "navigation", "Navigation timeToNetworkStack",
352 frame_tree_node->navigation_request()->navigation_handle(), 349 frame_tree_node->navigation_request()->navigation_handle(),
353 navigation_start.ToInternalValue(), 350 navigation_start.ToInternalValue(),
354 "FrameTreeNode id", frame_tree_node->frame_tree_node_id()); 351 "FrameTreeNode id", frame_tree_node->frame_tree_node_id());
355 } 352 }
356 353
357 } else { 354 } else {
358 RenderFrameHostImpl* dest_render_frame_host = 355 RenderFrameHostImpl* dest_render_frame_host =
359 frame_tree_node->render_manager()->Navigate( 356 frame_tree_node->render_manager()->Navigate(
360 dest_url, frame_entry, entry, 357 dest_url, frame_entry, entry, reload_type != ReloadType::NONE);
361 reload_type != NavigationController::NO_RELOAD);
362 if (!dest_render_frame_host) 358 if (!dest_render_frame_host)
363 return false; // Unable to create the desired RenderFrameHost. 359 return false; // Unable to create the desired RenderFrameHost.
364 360
365 // Make sure no code called via RFHM::Navigate clears the pending entry. 361 // Make sure no code called via RFHM::Navigate clears the pending entry.
366 if (is_pending_entry) 362 if (is_pending_entry)
367 CHECK_EQ(controller_->GetPendingEntry(), &entry); 363 CHECK_EQ(controller_->GetPendingEntry(), &entry);
368 364
369 // For security, we should never send non-Web-UI URLs to a Web UI renderer. 365 // For security, we should never send non-Web-UI URLs to a Web UI renderer.
370 // Double check that here. 366 // Double check that here.
371 CheckWebUIRendererDoesNotDisplayNormalURL(dest_render_frame_host, dest_url); 367 CheckWebUIRendererDoesNotDisplayNormalURL(dest_render_frame_host, dest_url);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 // Notify observers about navigation. 431 // Notify observers about navigation.
436 if (delegate_ && is_pending_entry) 432 if (delegate_ && is_pending_entry)
437 delegate_->DidStartNavigationToPendingEntry(dest_url, reload_type); 433 delegate_->DidStartNavigationToPendingEntry(dest_url, reload_type);
438 434
439 return true; 435 return true;
440 } 436 }
441 437
442 bool NavigatorImpl::NavigateToPendingEntry( 438 bool NavigatorImpl::NavigateToPendingEntry(
443 FrameTreeNode* frame_tree_node, 439 FrameTreeNode* frame_tree_node,
444 const FrameNavigationEntry& frame_entry, 440 const FrameNavigationEntry& frame_entry,
445 NavigationController::ReloadType reload_type, 441 ReloadType reload_type,
446 bool is_same_document_history_load) { 442 bool is_same_document_history_load) {
447 return NavigateToEntry(frame_tree_node, frame_entry, 443 return NavigateToEntry(frame_tree_node, frame_entry,
448 *controller_->GetPendingEntry(), reload_type, 444 *controller_->GetPendingEntry(), reload_type,
449 is_same_document_history_load, false, true, nullptr); 445 is_same_document_history_load, false, true, nullptr);
450 } 446 }
451 447
452 bool NavigatorImpl::NavigateNewChildFrame( 448 bool NavigatorImpl::NavigateNewChildFrame(
453 RenderFrameHostImpl* render_frame_host, 449 RenderFrameHostImpl* render_frame_host,
454 const std::string& unique_name) { 450 const std::string& unique_name) {
455 NavigationEntryImpl* entry = 451 NavigationEntryImpl* entry =
456 controller_->GetEntryWithUniqueID(render_frame_host->nav_entry_id()); 452 controller_->GetEntryWithUniqueID(render_frame_host->nav_entry_id());
457 if (!entry) 453 if (!entry)
458 return false; 454 return false;
459 455
460 // TODO(creis): Remove unique_name from the IPC, now that we can rely on the 456 // TODO(creis): Remove unique_name from the IPC, now that we can rely on the
461 // replication state. 457 // replication state.
462 DCHECK_EQ(render_frame_host->frame_tree_node()->unique_name(), unique_name); 458 DCHECK_EQ(render_frame_host->frame_tree_node()->unique_name(), unique_name);
463 FrameNavigationEntry* frame_entry = 459 FrameNavigationEntry* frame_entry =
464 entry->GetFrameEntry(render_frame_host->frame_tree_node()); 460 entry->GetFrameEntry(render_frame_host->frame_tree_node());
465 if (!frame_entry) 461 if (!frame_entry)
466 return false; 462 return false;
467 463
468 return NavigateToEntry(render_frame_host->frame_tree_node(), *frame_entry, 464 return NavigateToEntry(render_frame_host->frame_tree_node(), *frame_entry,
469 *entry, NavigationControllerImpl::NO_RELOAD, false, 465 *entry, ReloadType::NONE, false, true, false, nullptr);
470 true, false, nullptr);
471 } 466 }
472 467
473 void NavigatorImpl::DidNavigate( 468 void NavigatorImpl::DidNavigate(
474 RenderFrameHostImpl* render_frame_host, 469 RenderFrameHostImpl* render_frame_host,
475 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { 470 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
476 FrameTree* frame_tree = render_frame_host->frame_tree_node()->frame_tree(); 471 FrameTree* frame_tree = render_frame_host->frame_tree_node()->frame_tree();
477 bool oopifs_possible = SiteIsolationPolicy::AreCrossProcessFramesPossible(); 472 bool oopifs_possible = SiteIsolationPolicy::AreCrossProcessFramesPossible();
478 473
479 bool has_embedded_credentials = 474 bool has_embedded_credentials =
480 params.url.has_username() || params.url.has_password(); 475 params.url.has_username() || params.url.has_password();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 // or transfer should decide whether to swap as if the net error had not 585 // or transfer should decide whether to swap as if the net error had not
591 // occurred. 586 // occurred.
592 // TODO(creis): Remove this block and always set the URL once transfers handle 587 // TODO(creis): Remove this block and always set the URL once transfers handle
593 // network errors or PlzNavigate is enabled. See https://crbug.com/588314. 588 // network errors or PlzNavigate is enabled. See https://crbug.com/588314.
594 if (!params.url_is_unreachable) 589 if (!params.url_is_unreachable)
595 render_frame_host->set_last_successful_url(params.url); 590 render_frame_host->set_last_successful_url(params.url);
596 591
597 // Send notification about committed provisional loads. This notification is 592 // Send notification about committed provisional loads. This notification is
598 // different from the NAV_ENTRY_COMMITTED notification which doesn't include 593 // different from the NAV_ENTRY_COMMITTED notification which doesn't include
599 // the actual URL navigated to and isn't sent for AUTO_SUBFRAME navigations. 594 // the actual URL navigated to and isn't sent for AUTO_SUBFRAME navigations.
600 if (details.type != NAVIGATION_TYPE_NAV_IGNORE && delegate_) { 595 if (details.type != NavigationType::NAV_IGNORE && delegate_) {
601 DCHECK_EQ(!render_frame_host->GetParent(), 596 DCHECK_EQ(!render_frame_host->GetParent(),
602 did_navigate ? details.is_main_frame : false); 597 did_navigate ? details.is_main_frame : false);
603 ui::PageTransition transition_type = params.transition; 598 ui::PageTransition transition_type = params.transition;
604 // Whether or not a page transition was triggered by going backward or 599 // Whether or not a page transition was triggered by going backward or
605 // forward in the history is only stored in the navigation controller's 600 // forward in the history is only stored in the navigation controller's
606 // entry list. 601 // entry list.
607 if (did_navigate && 602 if (did_navigate &&
608 (controller_->GetLastCommittedEntry()->GetTransitionType() & 603 (controller_->GetLastCommittedEntry()->GetTransitionType() &
609 ui::PAGE_TRANSITION_FORWARD_BACK)) { 604 ui::PAGE_TRANSITION_FORWARD_BACK)) {
610 transition_type = ui::PageTransitionFromInt( 605 transition_type = ui::PageTransitionFromInt(
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 // scratch. This works because we do not depend on |frame_entry| being inside 841 // scratch. This works because we do not depend on |frame_entry| being inside
847 // |entry| during NavigateToEntry. This will go away when we shortcut this 842 // |entry| during NavigateToEntry. This will go away when we shortcut this
848 // further in https://crbug.com/536906. 843 // further in https://crbug.com/536906.
849 scoped_refptr<FrameNavigationEntry> frame_entry(entry->GetFrameEntry(node)); 844 scoped_refptr<FrameNavigationEntry> frame_entry(entry->GetFrameEntry(node));
850 if (!frame_entry) { 845 if (!frame_entry) {
851 frame_entry = new FrameNavigationEntry( 846 frame_entry = new FrameNavigationEntry(
852 node->unique_name(), -1, -1, nullptr, 847 node->unique_name(), -1, -1, nullptr,
853 static_cast<SiteInstanceImpl*>(source_site_instance), dest_url, 848 static_cast<SiteInstanceImpl*>(source_site_instance), dest_url,
854 referrer_to_use, method, -1); 849 referrer_to_use, method, -1);
855 } 850 }
856 NavigateToEntry(node, *frame_entry, *entry.get(), 851 NavigateToEntry(node, *frame_entry, *entry.get(), ReloadType::NONE, false,
857 NavigationController::NO_RELOAD, false, false, false, 852 false, false, post_body);
858 post_body);
859 } 853 }
860 854
861 // PlzNavigate 855 // PlzNavigate
862 void NavigatorImpl::OnBeforeUnloadACK(FrameTreeNode* frame_tree_node, 856 void NavigatorImpl::OnBeforeUnloadACK(FrameTreeNode* frame_tree_node,
863 bool proceed) { 857 bool proceed) {
864 CHECK(IsBrowserSideNavigationEnabled()); 858 CHECK(IsBrowserSideNavigationEnabled());
865 DCHECK(frame_tree_node); 859 DCHECK(frame_tree_node);
866 860
867 NavigationRequest* navigation_request = frame_tree_node->navigation_request(); 861 NavigationRequest* navigation_request = frame_tree_node->navigation_request();
868 862
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 // Only stores the beforeunload delay if we're tracking a browser initiated 990 // Only stores the beforeunload delay if we're tracking a browser initiated
997 // navigation and it happened later than the navigation request. 991 // navigation and it happened later than the navigation request.
998 if (navigation_data_ && 992 if (navigation_data_ &&
999 renderer_before_unload_start_time > navigation_data_->start_time_) { 993 renderer_before_unload_start_time > navigation_data_->start_time_) {
1000 navigation_data_->before_unload_delay_ = 994 navigation_data_->before_unload_delay_ =
1001 renderer_before_unload_end_time - renderer_before_unload_start_time; 995 renderer_before_unload_end_time - renderer_before_unload_start_time;
1002 } 996 }
1003 } 997 }
1004 998
1005 // PlzNavigate 999 // PlzNavigate
1006 void NavigatorImpl::RequestNavigation( 1000 void NavigatorImpl::RequestNavigation(FrameTreeNode* frame_tree_node,
1007 FrameTreeNode* frame_tree_node, 1001 const GURL& dest_url,
1008 const GURL& dest_url, 1002 const Referrer& dest_referrer,
1009 const Referrer& dest_referrer, 1003 const FrameNavigationEntry& frame_entry,
1010 const FrameNavigationEntry& frame_entry, 1004 const NavigationEntryImpl& entry,
1011 const NavigationEntryImpl& entry, 1005 ReloadType reload_type,
1012 NavigationController::ReloadType reload_type, 1006 LoFiState lofi_state,
1013 LoFiState lofi_state, 1007 bool is_same_document_history_load,
1014 bool is_same_document_history_load, 1008 bool is_history_navigation_in_new_child,
1015 bool is_history_navigation_in_new_child, 1009 base::TimeTicks navigation_start) {
1016 base::TimeTicks navigation_start) {
1017 CHECK(IsBrowserSideNavigationEnabled()); 1010 CHECK(IsBrowserSideNavigationEnabled());
1018 DCHECK(frame_tree_node); 1011 DCHECK(frame_tree_node);
1019 1012
1020 // This value must be set here because creating a NavigationRequest might 1013 // This value must be set here because creating a NavigationRequest might
1021 // change the renderer live/non-live status and change this result. 1014 // change the renderer live/non-live status and change this result.
1022 bool should_dispatch_beforeunload = 1015 bool should_dispatch_beforeunload =
1023 frame_tree_node->current_frame_host()->ShouldDispatchBeforeUnload(); 1016 frame_tree_node->current_frame_host()->ShouldDispatchBeforeUnload();
1024 FrameMsg_Navigate_Type::Value navigation_type = 1017 FrameMsg_Navigate_Type::Value navigation_type =
1025 GetNavigationType(controller_->GetBrowserContext(), entry, reload_type); 1018 GetNavigationType(controller_->GetBrowserContext(), entry, reload_type);
1026 std::unique_ptr<NavigationRequest> scoped_request = 1019 std::unique_ptr<NavigationRequest> scoped_request =
(...skipping 14 matching lines...) Expand all
1041 1034
1042 // Have the current renderer execute its beforeunload event if needed. If it 1035 // Have the current renderer execute its beforeunload event if needed. If it
1043 // is not needed (when beforeunload dispatch is not needed or this navigation 1036 // is not needed (when beforeunload dispatch is not needed or this navigation
1044 // is synchronous and same-site) then NavigationRequest::BeginNavigation 1037 // is synchronous and same-site) then NavigationRequest::BeginNavigation
1045 // should be directly called instead. 1038 // should be directly called instead.
1046 if (should_dispatch_beforeunload && 1039 if (should_dispatch_beforeunload &&
1047 ShouldMakeNetworkRequestForURL( 1040 ShouldMakeNetworkRequestForURL(
1048 navigation_request->common_params().url)) { 1041 navigation_request->common_params().url)) {
1049 navigation_request->SetWaitingForRendererResponse(); 1042 navigation_request->SetWaitingForRendererResponse();
1050 frame_tree_node->current_frame_host()->DispatchBeforeUnload( 1043 frame_tree_node->current_frame_host()->DispatchBeforeUnload(
1051 true, reload_type != NavigationController::NO_RELOAD); 1044 true, reload_type != ReloadType::NONE);
1052 } else { 1045 } else {
1053 navigation_request->BeginNavigation(); 1046 navigation_request->BeginNavigation();
1054 } 1047 }
1055 } 1048 }
1056 1049
1057 void NavigatorImpl::RecordNavigationMetrics( 1050 void NavigatorImpl::RecordNavigationMetrics(
1058 const LoadCommittedDetails& details, 1051 const LoadCommittedDetails& details,
1059 const FrameHostMsg_DidCommitProvisionalLoad_Params& params, 1052 const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
1060 SiteInstance* site_instance) { 1053 SiteInstance* site_instance) {
1061 DCHECK(site_instance->HasProcess()); 1054 DCHECK(site_instance->HasProcess());
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 if (pending_entry != controller_->GetVisibleEntry() || 1183 if (pending_entry != controller_->GetVisibleEntry() ||
1191 !should_preserve_entry) { 1184 !should_preserve_entry) {
1192 controller_->DiscardPendingEntry(true); 1185 controller_->DiscardPendingEntry(true);
1193 1186
1194 // Also force the UI to refresh. 1187 // Also force the UI to refresh.
1195 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_URL); 1188 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_URL);
1196 } 1189 }
1197 } 1190 }
1198 1191
1199 } // namespace content 1192 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698