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

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

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

Powered by Google App Engine
This is Rietveld 408576698