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

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

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

Powered by Google App Engine
This is Rietveld 408576698