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

Side by Side Diff: chrome/browser/extensions/extension_webnavigation_api.cc

Issue 4997001: C++ readability change for jochen (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome/browser/extensions
Patch Set: more long long to int64 Created 10 years, 1 month 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // Implements the Chrome Extensions WebNavigation API. 5 // Implements the Chrome Extensions WebNavigation API.
6 6
7 #include "chrome/browser/extensions/extension_webnavigation_api.h" 7 #include "chrome/browser/extensions/extension_webnavigation_api.h"
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 19 matching lines...) Expand all
30 return details->main_frame() ? 0 : static_cast<int>(details->frame_id()); 30 return details->main_frame() ? 0 : static_cast<int>(details->frame_id());
31 } 31 }
32 32
33 // Returns |time| as milliseconds since the epoch. 33 // Returns |time| as milliseconds since the epoch.
34 double MilliSecondsFromTime(const base::Time& time) { 34 double MilliSecondsFromTime(const base::Time& time) {
35 return 1000 * time.ToDoubleT(); 35 return 1000 * time.ToDoubleT();
36 } 36 }
37 37
38 } // namespace 38 } // namespace
39 39
40
40 FrameNavigationState::FrameNavigationState() { 41 FrameNavigationState::FrameNavigationState() {
41 } 42 }
42 43
43 FrameNavigationState::~FrameNavigationState() { 44 FrameNavigationState::~FrameNavigationState() {
44 } 45 }
45 46
46 bool FrameNavigationState::CanSendEvents(long long frame_id) const { 47 bool FrameNavigationState::CanSendEvents(int64 frame_id) const {
47 FrameIdToStateMap::const_iterator frame_state = 48 FrameIdToStateMap::const_iterator frame_state =
48 frame_state_map_.find(frame_id); 49 frame_state_map_.find(frame_id);
49 return frame_state != frame_state_map_.end() && 50 return frame_state != frame_state_map_.end() &&
50 !frame_state->second.error_occurred; 51 !frame_state->second.error_occurred;
51 } 52 }
52 53
53 void FrameNavigationState::TrackFrame(long long frame_id, 54 void FrameNavigationState::TrackFrame(int64 frame_id,
54 const GURL& url, 55 const GURL& url,
55 bool is_main_frame, 56 bool is_main_frame,
56 const TabContents* tab_contents) { 57 const TabContents* tab_contents) {
57 if (is_main_frame) 58 if (is_main_frame)
58 RemoveTabContentsState(tab_contents); 59 RemoveTabContentsState(tab_contents);
59 tab_contents_map_.insert( 60 tab_contents_map_.insert(std::make_pair(tab_contents, frame_id));
60 TabContentsToFrameIdMap::value_type(tab_contents, frame_id));
61 FrameState& frame_state = frame_state_map_[frame_id]; 61 FrameState& frame_state = frame_state_map_[frame_id];
62 frame_state.error_occurred = (url.spec() == chrome::kUnreachableWebDataURL); 62 frame_state.error_occurred = (url.spec() == chrome::kUnreachableWebDataURL);
63 frame_state.url = url; 63 frame_state.url = url;
64 frame_state.is_main_frame = is_main_frame; 64 frame_state.is_main_frame = is_main_frame;
65 } 65 }
66 66
67 GURL FrameNavigationState::GetUrl(long long frame_id) const { 67 GURL FrameNavigationState::GetUrl(int64 frame_id) const {
68 FrameIdToStateMap::const_iterator frame_state = 68 FrameIdToStateMap::const_iterator frame_state =
69 frame_state_map_.find(frame_id); 69 frame_state_map_.find(frame_id);
70 if (frame_state == frame_state_map_.end()) { 70 if (frame_state == frame_state_map_.end()) {
71 NOTREACHED(); 71 NOTREACHED();
72 return GURL(); 72 return GURL();
73 } 73 }
74 return frame_state->second.url; 74 return frame_state->second.url;
75 } 75 }
76 76
77 bool FrameNavigationState::IsMainFrame(long long frame_id) const { 77 bool FrameNavigationState::IsMainFrame(int64 frame_id) const {
78 FrameIdToStateMap::const_iterator frame_state = 78 FrameIdToStateMap::const_iterator frame_state =
79 frame_state_map_.find(frame_id); 79 frame_state_map_.find(frame_id);
80 if (frame_state == frame_state_map_.end()) { 80 if (frame_state == frame_state_map_.end()) {
81 NOTREACHED(); 81 NOTREACHED();
82 return false; 82 return false;
83 } 83 }
84 return frame_state->second.is_main_frame; 84 return frame_state->second.is_main_frame;
85 } 85 }
86 86
87 void FrameNavigationState::ErrorOccurredInFrame(long long frame_id) { 87 void FrameNavigationState::ErrorOccurredInFrame(int64 frame_id) {
88 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 88 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
89 frame_state_map_[frame_id].error_occurred = true; 89 frame_state_map_[frame_id].error_occurred = true;
90 } 90 }
91 91
92 void FrameNavigationState::RemoveTabContentsState( 92 void FrameNavigationState::RemoveTabContentsState(
93 const TabContents* tab_contents) { 93 const TabContents* tab_contents) {
94 typedef TabContentsToFrameIdMap::iterator FrameIdIterator; 94 typedef TabContentsToFrameIdMap::iterator FrameIdIterator;
95 std::pair<FrameIdIterator, FrameIdIterator> frame_ids = 95 std::pair<FrameIdIterator, FrameIdIterator> frame_ids =
96 tab_contents_map_.equal_range(tab_contents); 96 tab_contents_map_.equal_range(tab_contents);
97 for (FrameIdIterator frame_id = frame_ids.first; frame_id != frame_ids.second; 97 for (FrameIdIterator frame_id = frame_ids.first; frame_id != frame_ids.second;
98 ++frame_id) { 98 ++frame_id) {
99 frame_state_map_.erase(frame_id->second); 99 frame_state_map_.erase(frame_id->second);
100 } 100 }
101 tab_contents_map_.erase(tab_contents); 101 tab_contents_map_.erase(tab_contents);
102 } 102 }
103 103
104 104
105 // static 105 // static
106 ExtensionWebNavigationEventRouter* 106 ExtensionWebNavigationEventRouter*
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 Details<ProvisionalLoadDetails>(details).ptr()); 142 Details<ProvisionalLoadDetails>(details).ptr());
143 break; 143 break;
144 case NotificationType::FRAME_PROVISIONAL_LOAD_COMMITTED: 144 case NotificationType::FRAME_PROVISIONAL_LOAD_COMMITTED:
145 FrameProvisionalLoadCommitted( 145 FrameProvisionalLoadCommitted(
146 Source<NavigationController>(source).ptr(), 146 Source<NavigationController>(source).ptr(),
147 Details<ProvisionalLoadDetails>(details).ptr()); 147 Details<ProvisionalLoadDetails>(details).ptr());
148 break; 148 break;
149 case NotificationType::FRAME_DOM_CONTENT_LOADED: 149 case NotificationType::FRAME_DOM_CONTENT_LOADED:
150 FrameDomContentLoaded( 150 FrameDomContentLoaded(
151 Source<NavigationController>(source).ptr(), 151 Source<NavigationController>(source).ptr(),
152 *Details<long long>(details).ptr()); 152 *Details<int64>(details).ptr());
153 break; 153 break;
154 case NotificationType::FRAME_DID_FINISH_LOAD: 154 case NotificationType::FRAME_DID_FINISH_LOAD:
155 FrameDidFinishLoad( 155 FrameDidFinishLoad(
156 Source<NavigationController>(source).ptr(), 156 Source<NavigationController>(source).ptr(),
157 *Details<long long>(details).ptr()); 157 *Details<int64>(details).ptr());
158 break; 158 break;
159 case NotificationType::FAIL_PROVISIONAL_LOAD_WITH_ERROR: 159 case NotificationType::FAIL_PROVISIONAL_LOAD_WITH_ERROR:
160 FailProvisionalLoadWithError( 160 FailProvisionalLoadWithError(
161 Source<NavigationController>(source).ptr(), 161 Source<NavigationController>(source).ptr(),
162 Details<ProvisionalLoadDetails>(details).ptr()); 162 Details<ProvisionalLoadDetails>(details).ptr());
163 break; 163 break;
164
165 case NotificationType::TAB_CONTENTS_DESTROYED: 164 case NotificationType::TAB_CONTENTS_DESTROYED:
166 navigation_state_.RemoveTabContentsState( 165 navigation_state_.RemoveTabContentsState(
167 Source<TabContents>(source).ptr()); 166 Source<TabContents>(source).ptr());
168 break; 167 break;
169 168
170 default: 169 default:
171 NOTREACHED(); 170 NOTREACHED();
172 } 171 }
173 } 172 }
174 void ExtensionWebNavigationEventRouter::FrameProvisionalLoadStart( 173 void ExtensionWebNavigationEventRouter::FrameProvisionalLoadStart(
175 NavigationController* controller, 174 NavigationController* controller,
176 ProvisionalLoadDetails* details) { 175 ProvisionalLoadDetails* details) {
177 navigation_state_.TrackFrame(details->frame_id(), 176 navigation_state_.TrackFrame(details->frame_id(),
178 details->url(), 177 details->url(),
179 details->main_frame(), 178 details->main_frame(),
180 controller->tab_contents()); 179 controller->tab_contents());
181 if (!navigation_state_.CanSendEvents(details->frame_id())) 180 if (!navigation_state_.CanSendEvents(details->frame_id()))
182 return; 181 return;
183 ListValue args; 182 ListValue args;
184 DictionaryValue* dict = new DictionaryValue(); 183 DictionaryValue* dict = new DictionaryValue();
185 dict->SetInteger(keys::kTabIdKey, 184 dict->SetInteger(keys::kTabIdKey,
186 ExtensionTabUtil::GetTabId(controller->tab_contents())); 185 ExtensionTabUtil::GetTabId(controller->tab_contents()));
187 dict->SetString(keys::kUrlKey, 186 dict->SetString(keys::kUrlKey, details->url().spec());
188 details->url().spec());
189 dict->SetInteger(keys::kFrameIdKey, GetFrameId(details)); 187 dict->SetInteger(keys::kFrameIdKey, GetFrameId(details));
190 dict->SetInteger(keys::kRequestIdKey, 0); 188 dict->SetInteger(keys::kRequestIdKey, 0);
191 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); 189 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now()));
192 args.Append(dict); 190 args.Append(dict);
193 191
194 std::string json_args; 192 std::string json_args;
195 base::JSONWriter::Write(&args, false, &json_args); 193 base::JSONWriter::Write(&args, false, &json_args);
196 DispatchEvent(controller->profile(), keys::kOnBeforeNavigate, json_args); 194 DispatchEvent(controller->profile(), keys::kOnBeforeNavigate, json_args);
197 } 195 }
198 196
199 void ExtensionWebNavigationEventRouter::FrameProvisionalLoadCommitted( 197 void ExtensionWebNavigationEventRouter::FrameProvisionalLoadCommitted(
200 NavigationController* controller, 198 NavigationController* controller,
201 ProvisionalLoadDetails* details) { 199 ProvisionalLoadDetails* details) {
202 if (!navigation_state_.CanSendEvents(details->frame_id())) 200 if (!navigation_state_.CanSendEvents(details->frame_id()))
203 return; 201 return;
204 ListValue args; 202 ListValue args;
205 DictionaryValue* dict = new DictionaryValue(); 203 DictionaryValue* dict = new DictionaryValue();
206 dict->SetInteger(keys::kTabIdKey, 204 dict->SetInteger(keys::kTabIdKey,
207 ExtensionTabUtil::GetTabId(controller->tab_contents())); 205 ExtensionTabUtil::GetTabId(controller->tab_contents()));
208 dict->SetString(keys::kUrlKey, 206 dict->SetString(keys::kUrlKey, details->url().spec());
209 details->url().spec());
210 dict->SetInteger(keys::kFrameIdKey, GetFrameId(details)); 207 dict->SetInteger(keys::kFrameIdKey, GetFrameId(details));
211 dict->SetString(keys::kTransitionTypeKey, 208 dict->SetString(keys::kTransitionTypeKey,
212 PageTransition::CoreTransitionString( 209 PageTransition::CoreTransitionString(
213 details->transition_type())); 210 details->transition_type()));
214 dict->SetString(keys::kTransitionQualifiersKey, 211 dict->SetString(keys::kTransitionQualifiersKey,
215 PageTransition::QualifierString( 212 PageTransition::QualifierString(
216 details->transition_type())); 213 details->transition_type()));
217 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); 214 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now()));
218 args.Append(dict); 215 args.Append(dict);
219 216
220 std::string json_args; 217 std::string json_args;
221 base::JSONWriter::Write(&args, false, &json_args); 218 base::JSONWriter::Write(&args, false, &json_args);
222 DispatchEvent(controller->profile(), keys::kOnCommitted, json_args); 219 DispatchEvent(controller->profile(), keys::kOnCommitted, json_args);
223 } 220 }
224 221
225 void ExtensionWebNavigationEventRouter::FrameDomContentLoaded( 222 void ExtensionWebNavigationEventRouter::FrameDomContentLoaded(
226 NavigationController* controller, long long frame_id) { 223 NavigationController* controller,
224 int64 frame_id) {
227 if (!navigation_state_.CanSendEvents(frame_id)) 225 if (!navigation_state_.CanSendEvents(frame_id))
228 return; 226 return;
229 ListValue args; 227 ListValue args;
230 DictionaryValue* dict = new DictionaryValue(); 228 DictionaryValue* dict = new DictionaryValue();
231 dict->SetInteger(keys::kTabIdKey, 229 dict->SetInteger(keys::kTabIdKey,
232 ExtensionTabUtil::GetTabId(controller->tab_contents())); 230 ExtensionTabUtil::GetTabId(controller->tab_contents()));
233 dict->SetString(keys::kUrlKey, navigation_state_.GetUrl(frame_id).spec()); 231 dict->SetString(keys::kUrlKey, navigation_state_.GetUrl(frame_id).spec());
234 dict->SetInteger(keys::kFrameIdKey, navigation_state_.IsMainFrame(frame_id) ? 232 dict->SetInteger(keys::kFrameIdKey,
235 0 : static_cast<int>(frame_id)); 233 navigation_state_.IsMainFrame(frame_id) ? 0 : static_cast<int>(frame_id));
236 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); 234 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now()));
237 args.Append(dict); 235 args.Append(dict);
238 236
239 std::string json_args; 237 std::string json_args;
240 base::JSONWriter::Write(&args, false, &json_args); 238 base::JSONWriter::Write(&args, false, &json_args);
241 DispatchEvent(controller->profile(), keys::kOnDOMContentLoaded, json_args); 239 DispatchEvent(controller->profile(), keys::kOnDOMContentLoaded, json_args);
242 } 240 }
243 241
244 void ExtensionWebNavigationEventRouter::FrameDidFinishLoad( 242 void ExtensionWebNavigationEventRouter::FrameDidFinishLoad(
245 NavigationController* controller, long long frame_id) { 243 NavigationController* controller,
244 int64 frame_id) {
246 if (!navigation_state_.CanSendEvents(frame_id)) 245 if (!navigation_state_.CanSendEvents(frame_id))
247 return; 246 return;
248 ListValue args; 247 ListValue args;
249 DictionaryValue* dict = new DictionaryValue(); 248 DictionaryValue* dict = new DictionaryValue();
250 dict->SetInteger(keys::kTabIdKey, 249 dict->SetInteger(keys::kTabIdKey,
251 ExtensionTabUtil::GetTabId(controller->tab_contents())); 250 ExtensionTabUtil::GetTabId(controller->tab_contents()));
252 dict->SetString(keys::kUrlKey, navigation_state_.GetUrl(frame_id).spec()); 251 dict->SetString(keys::kUrlKey, navigation_state_.GetUrl(frame_id).spec());
253 dict->SetInteger(keys::kFrameIdKey, navigation_state_.IsMainFrame(frame_id) ? 252 dict->SetInteger(keys::kFrameIdKey,
254 0 : static_cast<int>(frame_id)); 253 navigation_state_.IsMainFrame(frame_id) ? 0 : static_cast<int>(frame_id));
255 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); 254 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now()));
256 args.Append(dict); 255 args.Append(dict);
257 256
258 std::string json_args; 257 std::string json_args;
259 base::JSONWriter::Write(&args, false, &json_args); 258 base::JSONWriter::Write(&args, false, &json_args);
260 DispatchEvent(controller->profile(), keys::kOnCompleted, json_args); 259 DispatchEvent(controller->profile(), keys::kOnCompleted, json_args);
261 } 260 }
262 261
263 void ExtensionWebNavigationEventRouter::FailProvisionalLoadWithError( 262 void ExtensionWebNavigationEventRouter::FailProvisionalLoadWithError(
264 NavigationController* controller, 263 NavigationController* controller,
265 ProvisionalLoadDetails* details) { 264 ProvisionalLoadDetails* details) {
266 if (!navigation_state_.CanSendEvents(details->frame_id())) 265 if (!navigation_state_.CanSendEvents(details->frame_id()))
267 return; 266 return;
268 ListValue args; 267 ListValue args;
269 DictionaryValue* dict = new DictionaryValue(); 268 DictionaryValue* dict = new DictionaryValue();
270 dict->SetInteger(keys::kTabIdKey, 269 dict->SetInteger(keys::kTabIdKey,
271 ExtensionTabUtil::GetTabId(controller->tab_contents())); 270 ExtensionTabUtil::GetTabId(controller->tab_contents()));
272 dict->SetString(keys::kUrlKey, 271 dict->SetString(keys::kUrlKey, details->url().spec());
273 details->url().spec());
274 dict->SetInteger(keys::kFrameIdKey, GetFrameId(details)); 272 dict->SetInteger(keys::kFrameIdKey, GetFrameId(details));
275 dict->SetString(keys::kErrorKey, 273 dict->SetString(keys::kErrorKey,
276 std::string(net::ErrorToString(details->error_code()))); 274 std::string(net::ErrorToString(details->error_code())));
277 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); 275 dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now()));
278 args.Append(dict); 276 args.Append(dict);
279 277
280 std::string json_args; 278 std::string json_args;
281 base::JSONWriter::Write(&args, false, &json_args); 279 base::JSONWriter::Write(&args, false, &json_args);
282 navigation_state_.ErrorOccurredInFrame(details->frame_id()); 280 navigation_state_.ErrorOccurredInFrame(details->frame_id());
283 DispatchEvent(controller->profile(), keys::kOnErrorOccurred, json_args); 281 DispatchEvent(controller->profile(), keys::kOnErrorOccurred, json_args);
284 } 282 }
285 283
286 void ExtensionWebNavigationEventRouter::DispatchEvent( 284 void ExtensionWebNavigationEventRouter::DispatchEvent(
287 Profile* profile, 285 Profile* profile,
288 const char* event_name, 286 const char* event_name,
289 const std::string& json_args) { 287 const std::string& json_args) {
290 if (profile && profile->GetExtensionEventRouter()) { 288 if (profile && profile->GetExtensionEventRouter()) {
291 profile->GetExtensionEventRouter()->DispatchEventToRenderers( 289 profile->GetExtensionEventRouter()->DispatchEventToRenderers(
292 event_name, json_args, profile, GURL()); 290 event_name, json_args, profile, GURL());
293 } 291 }
294 } 292 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_webnavigation_api.h ('k') | chrome/browser/extensions/extension_webnavigation_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698