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

Side by Side Diff: ios/web/interstitials/web_interstitial_impl.mm

Issue 2756753002: Reland of "Cleaned up old navigation code that did not use pending navigation item." (Closed)
Patch Set: Fix Created 3 years, 9 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #import "ios/web/interstitials/web_interstitial_impl.h" 5 #import "ios/web/interstitials/web_interstitial_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "ios/web/interstitials/web_interstitial_facade_delegate.h" 8 #include "ios/web/interstitials/web_interstitial_facade_delegate.h"
9 #import "ios/web/navigation/crw_session_controller.h" 9 #import "ios/web/navigation/crw_session_controller.h"
10 #import "ios/web/navigation/navigation_manager_impl.h" 10 #import "ios/web/navigation/navigation_manager_impl.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 } 77 }
78 78
79 void WebInterstitialImpl::DontProceed() { 79 void WebInterstitialImpl::DontProceed() {
80 // Proceed() and DontProceed() are not re-entrant, as they delete |this|. 80 // Proceed() and DontProceed() are not re-entrant, as they delete |this|.
81 if (action_taken_) 81 if (action_taken_)
82 return; 82 return;
83 action_taken_ = true; 83 action_taken_ = true;
84 84
85 // Clear the pending entry, since that's the page that's not being 85 // Clear the pending entry, since that's the page that's not being
86 // proceeded to. 86 // proceeded to.
87 NavigationManager* nav_manager = GetWebStateImpl()->GetNavigationManager(); 87 GetWebStateImpl()->GetNavigationManager()->DiscardNonCommittedItems();
88 nav_manager->DiscardNonCommittedItems();
89 88
90 Hide(); 89 Hide();
91 90
92 GetDelegate()->OnDontProceed(); 91 GetDelegate()->OnDontProceed();
93 92
94 NSUserDefaults* user_defaults = [NSUserDefaults standardUserDefaults];
95 if (![user_defaults boolForKey:@"PendingIndexNavigationDisabled"]) {
96 // Reload last committed entry.
97 nav_manager->Reload(ReloadType::NORMAL, true /* check_for_repost */);
98 }
99
100 delete this; 93 delete this;
101 } 94 }
102 95
103 void WebInterstitialImpl::Proceed() { 96 void WebInterstitialImpl::Proceed() {
104 // Proceed() and DontProceed() are not re-entrant, as they delete |this|. 97 // Proceed() and DontProceed() are not re-entrant, as they delete |this|.
105 if (action_taken_) 98 if (action_taken_)
106 return; 99 return;
107 action_taken_ = true; 100 action_taken_ = true;
108 Hide(); 101 Hide();
109 GetDelegate()->OnProceed(); 102 GetDelegate()->OnProceed();
110 delete this; 103 delete this;
111 } 104 }
112 105
113 void WebInterstitialImpl::WebStateDestroyed() { 106 void WebInterstitialImpl::WebStateDestroyed() {
114 DontProceed(); 107 DontProceed();
115 } 108 }
116 109
117 WebStateImpl* WebInterstitialImpl::GetWebStateImpl() const { 110 WebStateImpl* WebInterstitialImpl::GetWebStateImpl() const {
118 return static_cast<web::WebStateImpl*>(web_state()); 111 return static_cast<web::WebStateImpl*>(web_state());
119 } 112 }
120 113
121 } // namespace web 114 } // namespace web
OLDNEW
« no previous file with comments | « ios/chrome/browser/web/visible_url_egtest.mm ('k') | ios/web/public/web_state/ui/crw_web_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698