| Index: chrome/browser/extensions/api/web_navigation/frame_navigation_state.cc
|
| diff --git a/chrome/browser/extensions/api/web_navigation/frame_navigation_state.cc b/chrome/browser/extensions/api/web_navigation/frame_navigation_state.cc
|
| index 766f04a78239a2a5bc5b8d0f93cdeae9a93f373d..4548eb54f52945542c60b72537512c941ff19f92 100644
|
| --- a/chrome/browser/extensions/api/web_navigation/frame_navigation_state.cc
|
| +++ b/chrome/browser/extensions/api/web_navigation/frame_navigation_state.cc
|
| @@ -89,6 +89,7 @@ bool FrameNavigationState::IsValidUrl(const GURL& url) const {
|
| }
|
|
|
| void FrameNavigationState::TrackFrame(FrameID frame_id,
|
| + FrameID parent_frame_id,
|
| const GURL& url,
|
| bool is_main_frame,
|
| bool is_error_page) {
|
| @@ -99,6 +100,12 @@ void FrameNavigationState::TrackFrame(FrameID frame_id,
|
| frame_state.is_navigating = true;
|
| frame_state.is_committed = false;
|
| frame_state.is_server_redirected = false;
|
| + if (!is_main_frame) {
|
| + frame_state.parent_frame_num = parent_frame_id.frame_num;
|
| + } else {
|
| + DCHECK(parent_frame_id.frame_num == -1);
|
| + frame_state.parent_frame_num = -1;
|
| + }
|
| frame_ids_.insert(frame_id);
|
| }
|
|
|
| @@ -156,6 +163,18 @@ FrameNavigationState::FrameID FrameNavigationState::GetMainFrameID() const {
|
| return main_frame_id_;
|
| }
|
|
|
| +FrameNavigationState::FrameID FrameNavigationState::GetParentFrameID(
|
| + FrameID frame_id) const {
|
| + FrameIdToStateMap::const_iterator frame_state =
|
| + frame_state_map_.find(frame_id);
|
| + if (frame_state == frame_state_map_.end()) {
|
| + NOTREACHED();
|
| + return FrameID();
|
| + }
|
| + return FrameID(frame_state->second.parent_frame_num,
|
| + frame_id.render_view_host);
|
| +}
|
| +
|
| void FrameNavigationState::SetErrorOccurredInFrame(FrameID frame_id) {
|
| DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
|
| frame_state_map_[frame_id].error_occurred = true;
|
|
|