OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |