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

Side by Side Diff: chrome/browser/extensions/api/web_navigation/frame_navigation_state.cc

Issue 10834125: When committing a provisional load that didn't change the RVH, still abort pending navigations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch for landing Created 8 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 | Annotate | Revision Log
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 "chrome/browser/extensions/api/web_navigation/frame_navigation_state.h" 5 #include "chrome/browser/extensions/api/web_navigation/frame_navigation_state.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/common/url_constants.h" 8 #include "chrome/common/url_constants.h"
9 9
10 namespace extensions { 10 namespace extensions {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 frame_state.error_occurred = is_error_page; 96 frame_state.error_occurred = is_error_page;
97 frame_state.url = url; 97 frame_state.url = url;
98 frame_state.is_main_frame = is_main_frame; 98 frame_state.is_main_frame = is_main_frame;
99 frame_state.is_navigating = true; 99 frame_state.is_navigating = true;
100 frame_state.is_committed = false; 100 frame_state.is_committed = false;
101 frame_state.is_server_redirected = false; 101 frame_state.is_server_redirected = false;
102 frame_ids_.insert(frame_id); 102 frame_ids_.insert(frame_id);
103 } 103 }
104 104
105 void FrameNavigationState::StopTrackingFramesInRVH( 105 void FrameNavigationState::StopTrackingFramesInRVH(
106 content::RenderViewHost* render_view_host) { 106 content::RenderViewHost* render_view_host,
107 FrameID id_to_skip) {
107 for (std::set<FrameID>::iterator frame = frame_ids_.begin(); 108 for (std::set<FrameID>::iterator frame = frame_ids_.begin();
108 frame != frame_ids_.end();) { 109 frame != frame_ids_.end();) {
109 if (frame->render_view_host != render_view_host) { 110 if (frame->render_view_host != render_view_host ||
111 *frame == id_to_skip) {
110 ++frame; 112 ++frame;
111 continue; 113 continue;
112 } 114 }
113 FrameID frame_id = *frame; 115 FrameID frame_id = *frame;
114 ++frame; 116 ++frame;
115 if (frame_id == main_frame_id_) 117 if (frame_id == main_frame_id_)
116 main_frame_id_ = FrameID(); 118 main_frame_id_ = FrameID();
117 frame_state_map_.erase(frame_id); 119 frame_state_map_.erase(frame_id);
118 frame_ids_.erase(frame_id); 120 frame_ids_.erase(frame_id);
119 } 121 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 bool FrameNavigationState::GetNavigationCompleted(FrameID frame_id) const { 177 bool FrameNavigationState::GetNavigationCompleted(FrameID frame_id) const {
176 FrameIdToStateMap::const_iterator frame_state = 178 FrameIdToStateMap::const_iterator frame_state =
177 frame_state_map_.find(frame_id); 179 frame_state_map_.find(frame_id);
178 return (frame_state == frame_state_map_.end() || 180 return (frame_state == frame_state_map_.end() ||
179 !frame_state->second.is_navigating); 181 !frame_state->second.is_navigating);
180 } 182 }
181 183
182 void FrameNavigationState::SetNavigationCommitted(FrameID frame_id) { 184 void FrameNavigationState::SetNavigationCommitted(FrameID frame_id) {
183 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 185 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
184 frame_state_map_[frame_id].is_committed = true; 186 frame_state_map_[frame_id].is_committed = true;
185 if (frame_state_map_[frame_id].is_main_frame) 187 if (frame_state_map_[frame_id].is_main_frame) {
188 DCHECK_EQ(1u, frame_ids_.size());
186 main_frame_id_ = frame_id; 189 main_frame_id_ = frame_id;
190 }
187 } 191 }
188 192
189 bool FrameNavigationState::GetNavigationCommitted(FrameID frame_id) const { 193 bool FrameNavigationState::GetNavigationCommitted(FrameID frame_id) const {
190 FrameIdToStateMap::const_iterator frame_state = 194 FrameIdToStateMap::const_iterator frame_state =
191 frame_state_map_.find(frame_id); 195 frame_state_map_.find(frame_id);
192 return (frame_state != frame_state_map_.end() && 196 return (frame_state != frame_state_map_.end() &&
193 frame_state->second.is_committed); 197 frame_state->second.is_committed);
194 } 198 }
195 199
196 void FrameNavigationState::SetIsServerRedirected(FrameID frame_id) { 200 void FrameNavigationState::SetIsServerRedirected(FrameID frame_id) {
197 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 201 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
198 frame_state_map_[frame_id].is_server_redirected = true; 202 frame_state_map_[frame_id].is_server_redirected = true;
199 } 203 }
200 204
201 bool FrameNavigationState::GetIsServerRedirected(FrameID frame_id) const { 205 bool FrameNavigationState::GetIsServerRedirected(FrameID frame_id) const {
202 FrameIdToStateMap::const_iterator frame_state = 206 FrameIdToStateMap::const_iterator frame_state =
203 frame_state_map_.find(frame_id); 207 frame_state_map_.find(frame_id);
204 return (frame_state != frame_state_map_.end() && 208 return (frame_state != frame_state_map_.end() &&
205 frame_state->second.is_server_redirected); 209 frame_state->second.is_server_redirected);
206 } 210 }
207 211
208 } // namespace extensions 212 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698