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

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, 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 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_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 #include "content/public/common/url_constants.h" 45 #include "content/public/common/url_constants.h"
46 #include "net/base/net_errors.h" 46 #include "net/base/net_errors.h"
47 #include "url/gurl.h" 47 #include "url/gurl.h"
48 #include "url/url_constants.h" 48 #include "url/url_constants.h"
49 49
50 namespace content { 50 namespace content {
51 51
52 namespace { 52 namespace {
53 53
54 FrameMsg_Navigate_Type::Value GetNavigationType( 54 FrameMsg_Navigate_Type::Value GetNavigationType(
55 BrowserContext* browser_context, const NavigationEntryImpl& entry, 55 BrowserContext* browser_context,
56 NavigationController::ReloadType reload_type) { 56 const NavigationEntryImpl& entry,
57 ReloadType reload_type) {
57 switch (reload_type) { 58 switch (reload_type) {
58 case NavigationController::RELOAD: 59 case ReloadType::NORMAL:
59 return FrameMsg_Navigate_Type::RELOAD; 60 return FrameMsg_Navigate_Type::RELOAD;
60 case NavigationController::RELOAD_MAIN_RESOURCE: 61 case ReloadType::MAIN_RESOURCE:
61 return FrameMsg_Navigate_Type::RELOAD_MAIN_RESOURCE; 62 return FrameMsg_Navigate_Type::RELOAD_MAIN_RESOURCE;
62 case NavigationController::RELOAD_BYPASSING_CACHE: 63 case ReloadType::BYPASSING_CACHE:
63 case NavigationController::RELOAD_DISABLE_LOFI_MODE: 64 case ReloadType::DISABLE_LOFI_MODE:
64 return FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE; 65 return FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE;
65 case NavigationController::RELOAD_ORIGINAL_REQUEST_URL: 66 case ReloadType::ORIGINAL_REQUEST_URL:
66 return FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; 67 return FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
67 case NavigationController::NO_RELOAD: 68 case ReloadType::NONE:
68 break; // Fall through to rest of function. 69 break; // Fall through to rest of function.
69 } 70 }
70 71
71 // |RenderViewImpl::PopulateStateFromPendingNavigationParams| differentiates 72 // |RenderViewImpl::PopulateStateFromPendingNavigationParams| differentiates
72 // between |RESTORE_WITH_POST| and |RESTORE|. 73 // between |RESTORE_WITH_POST| and |RESTORE|.
73 if (entry.restore_type() == 74 if (entry.restore_type() == RestoreType::LAST_SESSION_EXITED_CLEANLY) {
74 NavigationEntryImpl::RESTORE_LAST_SESSION_EXITED_CLEANLY) {
75 if (entry.GetHasPostData()) 75 if (entry.GetHasPostData())
76 return FrameMsg_Navigate_Type::RESTORE_WITH_POST; 76 return FrameMsg_Navigate_Type::RESTORE_WITH_POST;
77 return FrameMsg_Navigate_Type::RESTORE; 77 return FrameMsg_Navigate_Type::RESTORE;
78 } 78 }
79 79
80 return FrameMsg_Navigate_Type::NORMAL; 80 return FrameMsg_Navigate_Type::NORMAL;
81 } 81 }
82 82
83 } // namespace 83 } // namespace
84 84
85 struct NavigatorImpl::NavigationMetricsData { 85 struct NavigatorImpl::NavigationMetricsData {
86 NavigationMetricsData(base::TimeTicks start_time, 86 NavigationMetricsData(base::TimeTicks start_time,
87 GURL url, 87 GURL url,
88 NavigationEntryImpl::RestoreType restore_type) 88 RestoreType restore_type)
89 : start_time_(start_time), url_(url) { 89 : start_time_(start_time), url_(url) {
90 is_restoring_from_last_session_ = 90 is_restoring_from_last_session_ =
91 (restore_type == 91 (restore_type == RestoreType::LAST_SESSION_EXITED_CLEANLY ||
92 NavigationEntryImpl::RESTORE_LAST_SESSION_EXITED_CLEANLY || 92 restore_type == RestoreType::LAST_SESSION_CRASHED);
93 restore_type == NavigationEntryImpl::RESTORE_LAST_SESSION_CRASHED);
94 } 93 }
95 94
96 base::TimeTicks start_time_; 95 base::TimeTicks start_time_;
97 GURL url_; 96 GURL url_;
98 bool is_restoring_from_last_session_; 97 bool is_restoring_from_last_session_;
99 base::TimeTicks url_job_start_time_; 98 base::TimeTicks url_job_start_time_;
100 base::TimeDelta before_unload_delay_; 99 base::TimeDelta before_unload_delay_;
101 }; 100 };
102 101
103 NavigatorImpl::NavigatorImpl( 102 NavigatorImpl::NavigatorImpl(
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 delegate_->DidFailLoadWithError( 261 delegate_->DidFailLoadWithError(
263 render_frame_host, url, error_code, 262 render_frame_host, url, error_code,
264 error_description, was_ignored_by_handler); 263 error_description, was_ignored_by_handler);
265 } 264 }
266 } 265 }
267 266
268 bool NavigatorImpl::NavigateToEntry( 267 bool NavigatorImpl::NavigateToEntry(
269 FrameTreeNode* frame_tree_node, 268 FrameTreeNode* frame_tree_node,
270 const FrameNavigationEntry& frame_entry, 269 const FrameNavigationEntry& frame_entry,
271 const NavigationEntryImpl& entry, 270 const NavigationEntryImpl& entry,
272 NavigationController::ReloadType reload_type, 271 ReloadType reload_type,
273 bool is_same_document_history_load, 272 bool is_same_document_history_load,
274 bool is_history_navigation_in_new_child, 273 bool is_history_navigation_in_new_child,
275 bool is_pending_entry, 274 bool is_pending_entry,
276 const scoped_refptr<ResourceRequestBodyImpl>& post_body) { 275 const scoped_refptr<ResourceRequestBodyImpl>& post_body) {
277 TRACE_EVENT0("browser,navigation", "NavigatorImpl::NavigateToEntry"); 276 TRACE_EVENT0("browser,navigation", "NavigatorImpl::NavigateToEntry");
278 277
279 GURL dest_url = frame_entry.url(); 278 GURL dest_url = frame_entry.url();
280 Referrer dest_referrer = frame_entry.referrer(); 279 Referrer dest_referrer = frame_entry.referrer();
281 if (reload_type == 280 if (reload_type == ReloadType::ORIGINAL_REQUEST_URL &&
282 NavigationController::ReloadType::RELOAD_ORIGINAL_REQUEST_URL &&
283 entry.GetOriginalRequestURL().is_valid() && !entry.GetHasPostData()) { 281 entry.GetOriginalRequestURL().is_valid() && !entry.GetHasPostData()) {
284 // We may have been redirected when navigating to the current URL. 282 // We may have been redirected when navigating to the current URL.
285 // Use the URL the user originally intended to visit, if it's valid and if a 283 // Use the URL the user originally intended to visit, if it's valid and if a
286 // POST wasn't involved; the latter case avoids issues with sending data to 284 // POST wasn't involved; the latter case avoids issues with sending data to
287 // the wrong page. 285 // the wrong page.
288 dest_url = entry.GetOriginalRequestURL(); 286 dest_url = entry.GetOriginalRequestURL();
289 dest_referrer = Referrer(); 287 dest_referrer = Referrer();
290 } 288 }
291 289
292 // Don't attempt to navigate to non-empty invalid URLs. 290 // Don't attempt to navigate to non-empty invalid URLs.
(...skipping 21 matching lines...) Expand all
314 TRACE_EVENT_SCOPE_GLOBAL, navigation_start.ToInternalValue()); 312 TRACE_EVENT_SCOPE_GLOBAL, navigation_start.ToInternalValue());
315 313
316 // Determine if LoFi should be used for the navigation. 314 // Determine if LoFi should be used for the navigation.
317 LoFiState lofi_state = LOFI_UNSPECIFIED; 315 LoFiState lofi_state = LOFI_UNSPECIFIED;
318 if (!frame_tree_node->IsMainFrame()) { 316 if (!frame_tree_node->IsMainFrame()) {
319 // For subframes, use the state of the top-level frame. 317 // For subframes, use the state of the top-level frame.
320 lofi_state = frame_tree_node->frame_tree() 318 lofi_state = frame_tree_node->frame_tree()
321 ->root() 319 ->root()
322 ->current_frame_host() 320 ->current_frame_host()
323 ->last_navigation_lofi_state(); 321 ->last_navigation_lofi_state();
324 } else if (reload_type == 322 } else if (reload_type == ReloadType::DISABLE_LOFI_MODE) {
325 NavigationController::ReloadType::RELOAD_DISABLE_LOFI_MODE) {
326 // Disable LoFi when asked for it explicitly. 323 // Disable LoFi when asked for it explicitly.
327 lofi_state = LOFI_OFF; 324 lofi_state = LOFI_OFF;
328 } 325 }
329 326
330 // PlzNavigate: the RenderFrameHosts are no longer asked to navigate. 327 // PlzNavigate: the RenderFrameHosts are no longer asked to navigate.
331 if (IsBrowserSideNavigationEnabled()) { 328 if (IsBrowserSideNavigationEnabled()) {
332 navigation_data_.reset(new NavigationMetricsData(navigation_start, dest_url, 329 navigation_data_.reset(new NavigationMetricsData(navigation_start, dest_url,
333 entry.restore_type())); 330 entry.restore_type()));
334 RequestNavigation(frame_tree_node, dest_url, dest_referrer, frame_entry, 331 RequestNavigation(frame_tree_node, dest_url, dest_referrer, frame_entry,
335 entry, reload_type, lofi_state, 332 entry, reload_type, lofi_state,
(...skipping 11 matching lines...) Expand all
347 TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP1( 344 TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP1(
348 "navigation", "Navigation timeToNetworkStack", 345 "navigation", "Navigation timeToNetworkStack",
349 frame_tree_node->navigation_request()->navigation_handle(), 346 frame_tree_node->navigation_request()->navigation_handle(),
350 navigation_start.ToInternalValue(), 347 navigation_start.ToInternalValue(),
351 "FrameTreeNode id", frame_tree_node->frame_tree_node_id()); 348 "FrameTreeNode id", frame_tree_node->frame_tree_node_id());
352 } 349 }
353 350
354 } else { 351 } else {
355 RenderFrameHostImpl* dest_render_frame_host = 352 RenderFrameHostImpl* dest_render_frame_host =
356 frame_tree_node->render_manager()->Navigate( 353 frame_tree_node->render_manager()->Navigate(
357 dest_url, frame_entry, entry, 354 dest_url, frame_entry, entry, reload_type != ReloadType::NONE);
358 reload_type != NavigationController::NO_RELOAD);
359 if (!dest_render_frame_host) 355 if (!dest_render_frame_host)
360 return false; // Unable to create the desired RenderFrameHost. 356 return false; // Unable to create the desired RenderFrameHost.
361 357
362 // Make sure no code called via RFHM::Navigate clears the pending entry. 358 // Make sure no code called via RFHM::Navigate clears the pending entry.
363 if (is_pending_entry) 359 if (is_pending_entry)
364 CHECK_EQ(controller_->GetPendingEntry(), &entry); 360 CHECK_EQ(controller_->GetPendingEntry(), &entry);
365 361
366 // For security, we should never send non-Web-UI URLs to a Web UI renderer. 362 // For security, we should never send non-Web-UI URLs to a Web UI renderer.
367 // Double check that here. 363 // Double check that here.
368 CheckWebUIRendererDoesNotDisplayNormalURL(dest_render_frame_host, dest_url); 364 CheckWebUIRendererDoesNotDisplayNormalURL(dest_render_frame_host, dest_url);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 // Notify observers about navigation. 428 // Notify observers about navigation.
433 if (delegate_ && is_pending_entry) 429 if (delegate_ && is_pending_entry)
434 delegate_->DidStartNavigationToPendingEntry(dest_url, reload_type); 430 delegate_->DidStartNavigationToPendingEntry(dest_url, reload_type);
435 431
436 return true; 432 return true;
437 } 433 }
438 434
439 bool NavigatorImpl::NavigateToPendingEntry( 435 bool NavigatorImpl::NavigateToPendingEntry(
440 FrameTreeNode* frame_tree_node, 436 FrameTreeNode* frame_tree_node,
441 const FrameNavigationEntry& frame_entry, 437 const FrameNavigationEntry& frame_entry,
442 NavigationController::ReloadType reload_type, 438 ReloadType reload_type,
443 bool is_same_document_history_load) { 439 bool is_same_document_history_load) {
444 return NavigateToEntry(frame_tree_node, frame_entry, 440 return NavigateToEntry(frame_tree_node, frame_entry,
445 *controller_->GetPendingEntry(), reload_type, 441 *controller_->GetPendingEntry(), reload_type,
446 is_same_document_history_load, false, true, nullptr); 442 is_same_document_history_load, false, true, nullptr);
447 } 443 }
448 444
449 bool NavigatorImpl::NavigateNewChildFrame( 445 bool NavigatorImpl::NavigateNewChildFrame(
450 RenderFrameHostImpl* render_frame_host, 446 RenderFrameHostImpl* render_frame_host,
451 const std::string& unique_name) { 447 const std::string& unique_name) {
452 NavigationEntryImpl* entry = 448 NavigationEntryImpl* entry =
453 controller_->GetEntryWithUniqueID(render_frame_host->nav_entry_id()); 449 controller_->GetEntryWithUniqueID(render_frame_host->nav_entry_id());
454 if (!entry) 450 if (!entry)
455 return false; 451 return false;
456 452
457 // TODO(creis): Remove unique_name from the IPC, now that we can rely on the 453 // TODO(creis): Remove unique_name from the IPC, now that we can rely on the
458 // replication state. 454 // replication state.
459 DCHECK_EQ(render_frame_host->frame_tree_node()->unique_name(), unique_name); 455 DCHECK_EQ(render_frame_host->frame_tree_node()->unique_name(), unique_name);
460 FrameNavigationEntry* frame_entry = 456 FrameNavigationEntry* frame_entry =
461 entry->GetFrameEntry(render_frame_host->frame_tree_node()); 457 entry->GetFrameEntry(render_frame_host->frame_tree_node());
462 if (!frame_entry) 458 if (!frame_entry)
463 return false; 459 return false;
464 460
465 return NavigateToEntry(render_frame_host->frame_tree_node(), *frame_entry, 461 return NavigateToEntry(render_frame_host->frame_tree_node(), *frame_entry,
466 *entry, NavigationControllerImpl::NO_RELOAD, false, 462 *entry, ReloadType::NONE, false, true, false, nullptr);
467 true, false, nullptr);
468 } 463 }
469 464
470 void NavigatorImpl::DidNavigate( 465 void NavigatorImpl::DidNavigate(
471 RenderFrameHostImpl* render_frame_host, 466 RenderFrameHostImpl* render_frame_host,
472 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { 467 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
473 FrameTree* frame_tree = render_frame_host->frame_tree_node()->frame_tree(); 468 FrameTree* frame_tree = render_frame_host->frame_tree_node()->frame_tree();
474 bool oopifs_possible = SiteIsolationPolicy::AreCrossProcessFramesPossible(); 469 bool oopifs_possible = SiteIsolationPolicy::AreCrossProcessFramesPossible();
475 470
476 bool has_embedded_credentials = 471 bool has_embedded_credentials =
477 params.url.has_username() || params.url.has_password(); 472 params.url.has_username() || params.url.has_password();
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 // scratch. This works because we do not depend on |frame_entry| being inside 852 // scratch. This works because we do not depend on |frame_entry| being inside
858 // |entry| during NavigateToEntry. This will go away when we shortcut this 853 // |entry| during NavigateToEntry. This will go away when we shortcut this
859 // further in https://crbug.com/536906. 854 // further in https://crbug.com/536906.
860 scoped_refptr<FrameNavigationEntry> frame_entry(entry->GetFrameEntry(node)); 855 scoped_refptr<FrameNavigationEntry> frame_entry(entry->GetFrameEntry(node));
861 if (!frame_entry) { 856 if (!frame_entry) {
862 frame_entry = new FrameNavigationEntry( 857 frame_entry = new FrameNavigationEntry(
863 node->unique_name(), -1, -1, nullptr, 858 node->unique_name(), -1, -1, nullptr,
864 static_cast<SiteInstanceImpl*>(source_site_instance), dest_url, 859 static_cast<SiteInstanceImpl*>(source_site_instance), dest_url,
865 referrer_to_use, method, -1); 860 referrer_to_use, method, -1);
866 } 861 }
867 NavigateToEntry(node, *frame_entry, *entry.get(), 862 NavigateToEntry(node, *frame_entry, *entry.get(), ReloadType::NONE, false,
868 NavigationController::NO_RELOAD, false, false, false, 863 false, false, post_body);
869 post_body);
870 } 864 }
871 865
872 // PlzNavigate 866 // PlzNavigate
873 void NavigatorImpl::OnBeforeUnloadACK(FrameTreeNode* frame_tree_node, 867 void NavigatorImpl::OnBeforeUnloadACK(FrameTreeNode* frame_tree_node,
874 bool proceed) { 868 bool proceed) {
875 CHECK(IsBrowserSideNavigationEnabled()); 869 CHECK(IsBrowserSideNavigationEnabled());
876 DCHECK(frame_tree_node); 870 DCHECK(frame_tree_node);
877 871
878 NavigationRequest* navigation_request = frame_tree_node->navigation_request(); 872 NavigationRequest* navigation_request = frame_tree_node->navigation_request();
879 873
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 // Only stores the beforeunload delay if we're tracking a browser initiated 1001 // Only stores the beforeunload delay if we're tracking a browser initiated
1008 // navigation and it happened later than the navigation request. 1002 // navigation and it happened later than the navigation request.
1009 if (navigation_data_ && 1003 if (navigation_data_ &&
1010 renderer_before_unload_start_time > navigation_data_->start_time_) { 1004 renderer_before_unload_start_time > navigation_data_->start_time_) {
1011 navigation_data_->before_unload_delay_ = 1005 navigation_data_->before_unload_delay_ =
1012 renderer_before_unload_end_time - renderer_before_unload_start_time; 1006 renderer_before_unload_end_time - renderer_before_unload_start_time;
1013 } 1007 }
1014 } 1008 }
1015 1009
1016 // PlzNavigate 1010 // PlzNavigate
1017 void NavigatorImpl::RequestNavigation( 1011 void NavigatorImpl::RequestNavigation(FrameTreeNode* frame_tree_node,
1018 FrameTreeNode* frame_tree_node, 1012 const GURL& dest_url,
1019 const GURL& dest_url, 1013 const Referrer& dest_referrer,
1020 const Referrer& dest_referrer, 1014 const FrameNavigationEntry& frame_entry,
1021 const FrameNavigationEntry& frame_entry, 1015 const NavigationEntryImpl& entry,
1022 const NavigationEntryImpl& entry, 1016 ReloadType reload_type,
1023 NavigationController::ReloadType reload_type, 1017 LoFiState lofi_state,
1024 LoFiState lofi_state, 1018 bool is_same_document_history_load,
1025 bool is_same_document_history_load, 1019 bool is_history_navigation_in_new_child,
1026 bool is_history_navigation_in_new_child, 1020 base::TimeTicks navigation_start) {
1027 base::TimeTicks navigation_start) {
1028 CHECK(IsBrowserSideNavigationEnabled()); 1021 CHECK(IsBrowserSideNavigationEnabled());
1029 DCHECK(frame_tree_node); 1022 DCHECK(frame_tree_node);
1030 1023
1031 // This value must be set here because creating a NavigationRequest might 1024 // This value must be set here because creating a NavigationRequest might
1032 // change the renderer live/non-live status and change this result. 1025 // change the renderer live/non-live status and change this result.
1033 bool should_dispatch_beforeunload = 1026 bool should_dispatch_beforeunload =
1034 frame_tree_node->current_frame_host()->ShouldDispatchBeforeUnload(); 1027 frame_tree_node->current_frame_host()->ShouldDispatchBeforeUnload();
1035 FrameMsg_Navigate_Type::Value navigation_type = 1028 FrameMsg_Navigate_Type::Value navigation_type =
1036 GetNavigationType(controller_->GetBrowserContext(), entry, reload_type); 1029 GetNavigationType(controller_->GetBrowserContext(), entry, reload_type);
1037 std::unique_ptr<NavigationRequest> scoped_request = 1030 std::unique_ptr<NavigationRequest> scoped_request =
(...skipping 25 matching lines...) Expand all
1063 1056
1064 // Have the current renderer execute its beforeunload event if needed. If it 1057 // Have the current renderer execute its beforeunload event if needed. If it
1065 // is not needed (when beforeunload dispatch is not needed or this navigation 1058 // is not needed (when beforeunload dispatch is not needed or this navigation
1066 // is synchronous and same-site) then NavigationRequest::BeginNavigation 1059 // is synchronous and same-site) then NavigationRequest::BeginNavigation
1067 // should be directly called instead. 1060 // should be directly called instead.
1068 if (should_dispatch_beforeunload && 1061 if (should_dispatch_beforeunload &&
1069 ShouldMakeNetworkRequestForURL( 1062 ShouldMakeNetworkRequestForURL(
1070 navigation_request->common_params().url)) { 1063 navigation_request->common_params().url)) {
1071 navigation_request->SetWaitingForRendererResponse(); 1064 navigation_request->SetWaitingForRendererResponse();
1072 frame_tree_node->current_frame_host()->DispatchBeforeUnload( 1065 frame_tree_node->current_frame_host()->DispatchBeforeUnload(
1073 true, reload_type != NavigationController::NO_RELOAD); 1066 true, reload_type != ReloadType::NONE);
1074 } else { 1067 } else {
1075 navigation_request->BeginNavigation(); 1068 navigation_request->BeginNavigation();
1076 } 1069 }
1077 } 1070 }
1078 1071
1079 void NavigatorImpl::RecordNavigationMetrics( 1072 void NavigatorImpl::RecordNavigationMetrics(
1080 const LoadCommittedDetails& details, 1073 const LoadCommittedDetails& details,
1081 const FrameHostMsg_DidCommitProvisionalLoad_Params& params, 1074 const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
1082 SiteInstance* site_instance) { 1075 SiteInstance* site_instance) {
1083 DCHECK(site_instance->HasProcess()); 1076 DCHECK(site_instance->HasProcess());
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 if (pending_entry != controller_->GetVisibleEntry() || 1202 if (pending_entry != controller_->GetVisibleEntry() ||
1210 !should_preserve_entry) { 1203 !should_preserve_entry) {
1211 controller_->DiscardPendingEntry(true); 1204 controller_->DiscardPendingEntry(true);
1212 1205
1213 // Also force the UI to refresh. 1206 // Also force the UI to refresh.
1214 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_URL); 1207 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_URL);
1215 } 1208 }
1216 } 1209 }
1217 1210
1218 } // namespace content 1211 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigator_impl.h ('k') | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698