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

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

Issue 10805066: Pass the render process id to the FrameNavigationState. (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 {
11 11
12 namespace { 12 namespace {
13 13
14 // URL schemes for which we'll send events. 14 // URL schemes for which we'll send events.
15 const char* kValidSchemes[] = { 15 const char* kValidSchemes[] = {
16 chrome::kHttpScheme, 16 chrome::kHttpScheme,
17 chrome::kHttpsScheme, 17 chrome::kHttpsScheme,
18 chrome::kFileScheme, 18 chrome::kFileScheme,
19 chrome::kFtpScheme, 19 chrome::kFtpScheme,
20 chrome::kJavaScriptScheme, 20 chrome::kJavaScriptScheme,
21 chrome::kDataScheme, 21 chrome::kDataScheme,
22 chrome::kFileSystemScheme, 22 chrome::kFileSystemScheme,
23 }; 23 };
24 24
25 } // namespace 25 } // namespace
26 26
27 FrameNavigationState::FrameID::FrameID()
28 : frame_num(-1),
29 render_process_id(-1) {
30 }
31
32 FrameNavigationState::FrameID::FrameID(int64 frame_num,
33 int render_process_id)
34 : frame_num(frame_num),
35 render_process_id(render_process_id) {
36 }
37
38 FrameNavigationState::FrameID::~FrameID() {}
39
40 bool FrameNavigationState::FrameID::operator<(
41 const FrameNavigationState::FrameID& other) const {
42 return frame_num < other.frame_num ||
43 (frame_num == other.frame_num &&
44 render_process_id < other.render_process_id);
45 }
46
47 bool FrameNavigationState::FrameID::operator==(
48 const FrameNavigationState::FrameID& other) const {
49 return frame_num == other.frame_num &&
50 render_process_id == other.render_process_id;
51 }
52
53 bool FrameNavigationState::FrameID::operator!=(
54 const FrameNavigationState::FrameID& other) const {
55 return !(*this == other);
56 }
57
58 // static
59 FrameNavigationState::FrameID FrameNavigationState::kInvalidFrameID =
60 FrameNavigationState::FrameID(-1, -1);
61
27 // static 62 // static
28 bool FrameNavigationState::allow_extension_scheme_ = false; 63 bool FrameNavigationState::allow_extension_scheme_ = false;
29 64
30 FrameNavigationState::FrameNavigationState() 65 FrameNavigationState::FrameNavigationState()
31 : main_frame_id_(-1) { 66 : main_frame_id_(kInvalidFrameID) {
32 } 67 }
33 68
34 FrameNavigationState::~FrameNavigationState() {} 69 FrameNavigationState::~FrameNavigationState() {}
35 70
36 bool FrameNavigationState::CanSendEvents(int64 frame_id) const { 71 bool FrameNavigationState::CanSendEvents(FrameID frame_id) const {
37 FrameIdToStateMap::const_iterator frame_state = 72 FrameIdToStateMap::const_iterator frame_state =
38 frame_state_map_.find(frame_id); 73 frame_state_map_.find(frame_id);
39 if (frame_state == frame_state_map_.end() || 74 if (frame_state == frame_state_map_.end() ||
40 frame_state->second.error_occurred) { 75 frame_state->second.error_occurred) {
41 return false; 76 return false;
42 } 77 }
43 return IsValidUrl(frame_state->second.url); 78 return IsValidUrl(frame_state->second.url);
44 } 79 }
45 80
46 bool FrameNavigationState::IsValidUrl(const GURL& url) const { 81 bool FrameNavigationState::IsValidUrl(const GURL& url) const {
47 for (unsigned i = 0; i < arraysize(kValidSchemes); ++i) { 82 for (unsigned i = 0; i < arraysize(kValidSchemes); ++i) {
48 if (url.scheme() == kValidSchemes[i]) 83 if (url.scheme() == kValidSchemes[i])
49 return true; 84 return true;
50 } 85 }
51 // Allow about:blank. 86 // Allow about:blank.
52 if (url.spec() == chrome::kAboutBlankURL) 87 if (url.spec() == chrome::kAboutBlankURL)
53 return true; 88 return true;
54 if (allow_extension_scheme_ && url.scheme() == chrome::kExtensionScheme) 89 if (allow_extension_scheme_ && url.scheme() == chrome::kExtensionScheme)
55 return true; 90 return true;
56 return false; 91 return false;
57 } 92 }
58 93
59 void FrameNavigationState::TrackFrame(int64 frame_id, 94 void FrameNavigationState::TrackFrame(FrameID frame_id,
60 const GURL& url, 95 const GURL& url,
61 bool is_main_frame, 96 bool is_main_frame,
62 bool is_error_page) { 97 bool is_error_page) {
63 if (is_main_frame) { 98 if (is_main_frame) {
64 frame_state_map_.clear(); 99 frame_state_map_.clear();
65 frame_ids_.clear(); 100 frame_ids_.clear();
66 } 101 }
67 FrameState& frame_state = frame_state_map_[frame_id]; 102 FrameState& frame_state = frame_state_map_[frame_id];
68 frame_state.error_occurred = is_error_page; 103 frame_state.error_occurred = is_error_page;
69 frame_state.url = url; 104 frame_state.url = url;
70 frame_state.is_main_frame = is_main_frame; 105 frame_state.is_main_frame = is_main_frame;
71 frame_state.is_navigating = true; 106 frame_state.is_navigating = true;
72 frame_state.is_committed = false; 107 frame_state.is_committed = false;
73 frame_state.is_server_redirected = false; 108 frame_state.is_server_redirected = false;
74 if (is_main_frame) { 109 if (is_main_frame) {
75 main_frame_id_ = frame_id; 110 main_frame_id_ = frame_id;
76 } 111 }
77 frame_ids_.insert(frame_id); 112 frame_ids_.insert(frame_id);
78 } 113 }
79 114
80 void FrameNavigationState::UpdateFrame(int64 frame_id, const GURL& url) { 115 void FrameNavigationState::UpdateFrame(FrameID frame_id, const GURL& url) {
81 FrameIdToStateMap::iterator frame_state = frame_state_map_.find(frame_id); 116 FrameIdToStateMap::iterator frame_state = frame_state_map_.find(frame_id);
82 if (frame_state == frame_state_map_.end()) { 117 if (frame_state == frame_state_map_.end()) {
83 NOTREACHED(); 118 NOTREACHED();
84 return; 119 return;
85 } 120 }
86 frame_state->second.url = url; 121 frame_state->second.url = url;
87 } 122 }
88 123
89 bool FrameNavigationState::IsValidFrame(int64 frame_id) const { 124 bool FrameNavigationState::IsValidFrame(FrameID frame_id) const {
90 FrameIdToStateMap::const_iterator frame_state = 125 FrameIdToStateMap::const_iterator frame_state =
91 frame_state_map_.find(frame_id); 126 frame_state_map_.find(frame_id);
92 return (frame_state != frame_state_map_.end()); 127 return (frame_state != frame_state_map_.end());
93 } 128 }
94 129
95 GURL FrameNavigationState::GetUrl(int64 frame_id) const { 130 GURL FrameNavigationState::GetUrl(FrameID frame_id) const {
96 FrameIdToStateMap::const_iterator frame_state = 131 FrameIdToStateMap::const_iterator frame_state =
97 frame_state_map_.find(frame_id); 132 frame_state_map_.find(frame_id);
98 if (frame_state == frame_state_map_.end()) { 133 if (frame_state == frame_state_map_.end()) {
99 NOTREACHED(); 134 NOTREACHED();
100 return GURL(); 135 return GURL();
101 } 136 }
102 return frame_state->second.url; 137 return frame_state->second.url;
103 } 138 }
104 139
105 bool FrameNavigationState::IsMainFrame(int64 frame_id) const { 140 bool FrameNavigationState::IsMainFrame(FrameID frame_id) const {
106 return main_frame_id_ != -1 && main_frame_id_ == frame_id; 141 return main_frame_id_ != kInvalidFrameID && main_frame_id_ == frame_id;
107 } 142 }
108 143
109 int64 FrameNavigationState::GetMainFrameID() const { 144 FrameNavigationState::FrameID FrameNavigationState::GetMainFrameID() const {
110 return main_frame_id_; 145 return main_frame_id_;
111 } 146 }
112 147
113 void FrameNavigationState::SetErrorOccurredInFrame(int64 frame_id) { 148 void FrameNavigationState::SetErrorOccurredInFrame(FrameID frame_id) {
114 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 149 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
115 frame_state_map_[frame_id].error_occurred = true; 150 frame_state_map_[frame_id].error_occurred = true;
116 } 151 }
117 152
118 bool FrameNavigationState::GetErrorOccurredInFrame(int64 frame_id) const { 153 bool FrameNavigationState::GetErrorOccurredInFrame(FrameID frame_id) const {
119 FrameIdToStateMap::const_iterator frame_state = 154 FrameIdToStateMap::const_iterator frame_state =
120 frame_state_map_.find(frame_id); 155 frame_state_map_.find(frame_id);
121 return (frame_state == frame_state_map_.end() || 156 return (frame_state == frame_state_map_.end() ||
122 frame_state->second.error_occurred); 157 frame_state->second.error_occurred);
123 } 158 }
124 159
125 void FrameNavigationState::SetNavigationCompleted(int64 frame_id) { 160 void FrameNavigationState::SetNavigationCompleted(FrameID frame_id) {
126 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 161 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
127 frame_state_map_[frame_id].is_navigating = false; 162 frame_state_map_[frame_id].is_navigating = false;
128 } 163 }
129 164
130 bool FrameNavigationState::GetNavigationCompleted(int64 frame_id) const { 165 bool FrameNavigationState::GetNavigationCompleted(FrameID frame_id) const {
131 FrameIdToStateMap::const_iterator frame_state = 166 FrameIdToStateMap::const_iterator frame_state =
132 frame_state_map_.find(frame_id); 167 frame_state_map_.find(frame_id);
133 return (frame_state == frame_state_map_.end() || 168 return (frame_state == frame_state_map_.end() ||
134 !frame_state->second.is_navigating); 169 !frame_state->second.is_navigating);
135 } 170 }
136 171
137 void FrameNavigationState::SetNavigationCommitted(int64 frame_id) { 172 void FrameNavigationState::SetNavigationCommitted(FrameID frame_id) {
138 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 173 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
139 frame_state_map_[frame_id].is_committed = true; 174 frame_state_map_[frame_id].is_committed = true;
140 } 175 }
141 176
142 bool FrameNavigationState::GetNavigationCommitted(int64 frame_id) const { 177 bool FrameNavigationState::GetNavigationCommitted(FrameID frame_id) const {
143 FrameIdToStateMap::const_iterator frame_state = 178 FrameIdToStateMap::const_iterator frame_state =
144 frame_state_map_.find(frame_id); 179 frame_state_map_.find(frame_id);
145 return (frame_state != frame_state_map_.end() && 180 return (frame_state != frame_state_map_.end() &&
146 frame_state->second.is_committed); 181 frame_state->second.is_committed);
147 } 182 }
148 183
149 void FrameNavigationState::SetIsServerRedirected(int64 frame_id) { 184 void FrameNavigationState::SetIsServerRedirected(FrameID frame_id) {
150 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 185 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
151 frame_state_map_[frame_id].is_server_redirected = true; 186 frame_state_map_[frame_id].is_server_redirected = true;
152 } 187 }
153 188
154 bool FrameNavigationState::GetIsServerRedirected(int64 frame_id) const { 189 bool FrameNavigationState::GetIsServerRedirected(FrameID frame_id) const {
155 FrameIdToStateMap::const_iterator frame_state = 190 FrameIdToStateMap::const_iterator frame_state =
156 frame_state_map_.find(frame_id); 191 frame_state_map_.find(frame_id);
157 return (frame_state != frame_state_map_.end() && 192 return (frame_state != frame_state_map_.end() &&
158 frame_state->second.is_server_redirected); 193 frame_state->second.is_server_redirected);
159 } 194 }
160 195
161 } // namespace extensions 196 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698