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

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

Issue 16915006: Convert most of extensions and some other random stuff to using the base namespace for Values. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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/browser_event_router.h" 5 #include "chrome/browser/extensions/browser_event_router.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "chrome/browser/extensions/api/extension_action/extension_page_actions_ api_constants.h" 9 #include "chrome/browser/extensions/api/extension_action/extension_page_actions_ api_constants.h"
10 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" 10 #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 if (tabs_window_api) { 158 if (tabs_window_api) {
159 tabs_window_api->windows_event_router()->OnActiveWindowChanged( 159 tabs_window_api->windows_event_router()->OnActiveWindowChanged(
160 browser ? browser->extension_window_controller() : NULL); 160 browser ? browser->extension_window_controller() : NULL);
161 } 161 }
162 } 162 }
163 163
164 static void WillDispatchTabCreatedEvent(WebContents* contents, 164 static void WillDispatchTabCreatedEvent(WebContents* contents,
165 bool active, 165 bool active,
166 Profile* profile, 166 Profile* profile,
167 const Extension* extension, 167 const Extension* extension,
168 ListValue* event_args) { 168 base::ListValue* event_args) {
169 DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue( 169 DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue(
170 contents, extension); 170 contents, extension);
171 event_args->Clear(); 171 event_args->Clear();
172 event_args->Append(tab_value); 172 event_args->Append(tab_value);
173 tab_value->SetBoolean(tab_keys::kSelectedKey, active); 173 tab_value->SetBoolean(tab_keys::kSelectedKey, active);
174 } 174 }
175 175
176 void BrowserEventRouter::TabCreatedAt(WebContents* contents, 176 void BrowserEventRouter::TabCreatedAt(WebContents* contents,
177 int index, 177 int index,
178 bool active) { 178 bool active) {
179 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); 179 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
180 scoped_ptr<ListValue> args(new ListValue()); 180 scoped_ptr<base::ListValue> args(new base::ListValue());
181 scoped_ptr<Event> event(new Event(events::kOnTabCreated, args.Pass())); 181 scoped_ptr<Event> event(new Event(events::kOnTabCreated, args.Pass()));
182 event->restrict_to_profile = profile; 182 event->restrict_to_profile = profile;
183 event->user_gesture = EventRouter::USER_GESTURE_NOT_ENABLED; 183 event->user_gesture = EventRouter::USER_GESTURE_NOT_ENABLED;
184 event->will_dispatch_callback = 184 event->will_dispatch_callback =
185 base::Bind(&WillDispatchTabCreatedEvent, contents, active); 185 base::Bind(&WillDispatchTabCreatedEvent, contents, active);
186 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); 186 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass());
187 187
188 RegisterForTabNotifications(contents); 188 RegisterForTabNotifications(contents);
189 } 189 }
190 190
191 void BrowserEventRouter::TabInsertedAt(WebContents* contents, 191 void BrowserEventRouter::TabInsertedAt(WebContents* contents,
192 int index, 192 int index,
193 bool active) { 193 bool active) {
194 // If tab is new, send created event. 194 // If tab is new, send created event.
195 int tab_id = ExtensionTabUtil::GetTabId(contents); 195 int tab_id = ExtensionTabUtil::GetTabId(contents);
196 if (!GetTabEntry(contents)) { 196 if (!GetTabEntry(contents)) {
197 tab_entries_[tab_id] = TabEntry(); 197 tab_entries_[tab_id] = TabEntry();
198 198
199 TabCreatedAt(contents, index, active); 199 TabCreatedAt(contents, index, active);
200 return; 200 return;
201 } 201 }
202 202
203 scoped_ptr<ListValue> args(new ListValue()); 203 scoped_ptr<base::ListValue> args(new base::ListValue());
204 args->Append(Value::CreateIntegerValue(tab_id)); 204 args->Append(Value::CreateIntegerValue(tab_id));
205 205
206 DictionaryValue* object_args = new DictionaryValue(); 206 DictionaryValue* object_args = new DictionaryValue();
207 object_args->Set(tab_keys::kNewWindowIdKey, Value::CreateIntegerValue( 207 object_args->Set(tab_keys::kNewWindowIdKey, Value::CreateIntegerValue(
208 ExtensionTabUtil::GetWindowIdOfTab(contents))); 208 ExtensionTabUtil::GetWindowIdOfTab(contents)));
209 object_args->Set(tab_keys::kNewPositionKey, Value::CreateIntegerValue( 209 object_args->Set(tab_keys::kNewPositionKey, Value::CreateIntegerValue(
210 index)); 210 index));
211 args->Append(object_args); 211 args->Append(object_args);
212 212
213 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); 213 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
214 DispatchEvent(profile, events::kOnTabAttached, args.Pass(), 214 DispatchEvent(profile, events::kOnTabAttached, args.Pass(),
215 EventRouter::USER_GESTURE_UNKNOWN); 215 EventRouter::USER_GESTURE_UNKNOWN);
216 } 216 }
217 217
218 void BrowserEventRouter::TabDetachedAt(WebContents* contents, int index) { 218 void BrowserEventRouter::TabDetachedAt(WebContents* contents, int index) {
219 if (!GetTabEntry(contents)) { 219 if (!GetTabEntry(contents)) {
220 // The tab was removed. Don't send detach event. 220 // The tab was removed. Don't send detach event.
221 return; 221 return;
222 } 222 }
223 223
224 scoped_ptr<ListValue> args(new ListValue()); 224 scoped_ptr<base::ListValue> args(new base::ListValue());
225 args->Append(Value::CreateIntegerValue(ExtensionTabUtil::GetTabId(contents))); 225 args->Append(Value::CreateIntegerValue(ExtensionTabUtil::GetTabId(contents)));
226 226
227 DictionaryValue* object_args = new DictionaryValue(); 227 DictionaryValue* object_args = new DictionaryValue();
228 object_args->Set(tab_keys::kOldWindowIdKey, Value::CreateIntegerValue( 228 object_args->Set(tab_keys::kOldWindowIdKey, Value::CreateIntegerValue(
229 ExtensionTabUtil::GetWindowIdOfTab(contents))); 229 ExtensionTabUtil::GetWindowIdOfTab(contents)));
230 object_args->Set(tab_keys::kOldPositionKey, Value::CreateIntegerValue( 230 object_args->Set(tab_keys::kOldPositionKey, Value::CreateIntegerValue(
231 index)); 231 index));
232 args->Append(object_args); 232 args->Append(object_args);
233 233
234 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); 234 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
235 DispatchEvent(profile, events::kOnTabDetached, args.Pass(), 235 DispatchEvent(profile, events::kOnTabDetached, args.Pass(),
236 EventRouter::USER_GESTURE_UNKNOWN); 236 EventRouter::USER_GESTURE_UNKNOWN);
237 } 237 }
238 238
239 void BrowserEventRouter::TabClosingAt(TabStripModel* tab_strip_model, 239 void BrowserEventRouter::TabClosingAt(TabStripModel* tab_strip_model,
240 WebContents* contents, 240 WebContents* contents,
241 int index) { 241 int index) {
242 int tab_id = ExtensionTabUtil::GetTabId(contents); 242 int tab_id = ExtensionTabUtil::GetTabId(contents);
243 243
244 scoped_ptr<ListValue> args(new ListValue()); 244 scoped_ptr<base::ListValue> args(new base::ListValue());
245 args->Append(Value::CreateIntegerValue(tab_id)); 245 args->Append(Value::CreateIntegerValue(tab_id));
246 246
247 DictionaryValue* object_args = new DictionaryValue(); 247 DictionaryValue* object_args = new DictionaryValue();
248 object_args->SetInteger(tab_keys::kWindowIdKey, 248 object_args->SetInteger(tab_keys::kWindowIdKey,
249 ExtensionTabUtil::GetWindowIdOfTab(contents)); 249 ExtensionTabUtil::GetWindowIdOfTab(contents));
250 object_args->SetBoolean(tab_keys::kWindowClosing, 250 object_args->SetBoolean(tab_keys::kWindowClosing,
251 tab_strip_model->closing_all()); 251 tab_strip_model->closing_all());
252 args->Append(object_args); 252 args->Append(object_args);
253 253
254 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); 254 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
255 DispatchEvent(profile, events::kOnTabRemoved, args.Pass(), 255 DispatchEvent(profile, events::kOnTabRemoved, args.Pass(),
256 EventRouter::USER_GESTURE_UNKNOWN); 256 EventRouter::USER_GESTURE_UNKNOWN);
257 257
258 int removed_count = tab_entries_.erase(tab_id); 258 int removed_count = tab_entries_.erase(tab_id);
259 DCHECK_GT(removed_count, 0); 259 DCHECK_GT(removed_count, 0);
260 260
261 UnregisterForTabNotifications(contents); 261 UnregisterForTabNotifications(contents);
262 } 262 }
263 263
264 void BrowserEventRouter::ActiveTabChanged(WebContents* old_contents, 264 void BrowserEventRouter::ActiveTabChanged(WebContents* old_contents,
265 WebContents* new_contents, 265 WebContents* new_contents,
266 int index, 266 int index,
267 int reason) { 267 int reason) {
268 scoped_ptr<ListValue> args(new ListValue()); 268 scoped_ptr<base::ListValue> args(new base::ListValue());
269 int tab_id = ExtensionTabUtil::GetTabId(new_contents); 269 int tab_id = ExtensionTabUtil::GetTabId(new_contents);
270 args->Append(Value::CreateIntegerValue(tab_id)); 270 args->Append(Value::CreateIntegerValue(tab_id));
271 271
272 DictionaryValue* object_args = new DictionaryValue(); 272 DictionaryValue* object_args = new DictionaryValue();
273 object_args->Set(tab_keys::kWindowIdKey, Value::CreateIntegerValue( 273 object_args->Set(tab_keys::kWindowIdKey, Value::CreateIntegerValue(
274 ExtensionTabUtil::GetWindowIdOfTab(new_contents))); 274 ExtensionTabUtil::GetWindowIdOfTab(new_contents)));
275 args->Append(object_args); 275 args->Append(object_args);
276 276
277 // The onActivated event replaced onActiveChanged and onSelectionChanged. The 277 // The onActivated event replaced onActiveChanged and onSelectionChanged. The
278 // deprecated events take two arguments: tabId, {windowId}. 278 // deprecated events take two arguments: tabId, {windowId}.
279 Profile* profile = 279 Profile* profile =
280 Profile::FromBrowserContext(new_contents->GetBrowserContext()); 280 Profile::FromBrowserContext(new_contents->GetBrowserContext());
281 EventRouter::UserGestureState gesture = 281 EventRouter::UserGestureState gesture =
282 reason & CHANGE_REASON_USER_GESTURE 282 reason & CHANGE_REASON_USER_GESTURE
283 ? EventRouter::USER_GESTURE_ENABLED 283 ? EventRouter::USER_GESTURE_ENABLED
284 : EventRouter::USER_GESTURE_NOT_ENABLED; 284 : EventRouter::USER_GESTURE_NOT_ENABLED;
285 DispatchEvent(profile, events::kOnTabSelectionChanged, 285 DispatchEvent(profile, events::kOnTabSelectionChanged,
286 scoped_ptr<ListValue>(args->DeepCopy()), gesture); 286 scoped_ptr<base::ListValue>(args->DeepCopy()), gesture);
287 DispatchEvent(profile, events::kOnTabActiveChanged, 287 DispatchEvent(profile, events::kOnTabActiveChanged,
288 scoped_ptr<ListValue>(args->DeepCopy()), gesture); 288 scoped_ptr<base::ListValue>(args->DeepCopy()), gesture);
289 289
290 // The onActivated event takes one argument: {windowId, tabId}. 290 // The onActivated event takes one argument: {windowId, tabId}.
291 args->Remove(0, NULL); 291 args->Remove(0, NULL);
292 object_args->Set(tab_keys::kTabIdKey, Value::CreateIntegerValue(tab_id)); 292 object_args->Set(tab_keys::kTabIdKey, Value::CreateIntegerValue(tab_id));
293 DispatchEvent(profile, events::kOnTabActivated, args.Pass(), gesture); 293 DispatchEvent(profile, events::kOnTabActivated, args.Pass(), gesture);
294 } 294 }
295 295
296 void BrowserEventRouter::TabSelectionChanged( 296 void BrowserEventRouter::TabSelectionChanged(
297 TabStripModel* tab_strip_model, 297 TabStripModel* tab_strip_model,
298 const ui::ListSelectionModel& old_model) { 298 const ui::ListSelectionModel& old_model) {
299 ui::ListSelectionModel::SelectedIndices new_selection = 299 ui::ListSelectionModel::SelectedIndices new_selection =
300 tab_strip_model->selection_model().selected_indices(); 300 tab_strip_model->selection_model().selected_indices();
301 ListValue* all = new ListValue(); 301 base::ListValue* all = new base::ListValue();
302 302
303 for (size_t i = 0; i < new_selection.size(); ++i) { 303 for (size_t i = 0; i < new_selection.size(); ++i) {
304 int index = new_selection[i]; 304 int index = new_selection[i];
305 WebContents* contents = tab_strip_model->GetWebContentsAt(index); 305 WebContents* contents = tab_strip_model->GetWebContentsAt(index);
306 if (!contents) 306 if (!contents)
307 break; 307 break;
308 int tab_id = ExtensionTabUtil::GetTabId(contents); 308 int tab_id = ExtensionTabUtil::GetTabId(contents);
309 all->Append(Value::CreateIntegerValue(tab_id)); 309 all->Append(Value::CreateIntegerValue(tab_id));
310 } 310 }
311 311
312 scoped_ptr<ListValue> args(new ListValue()); 312 scoped_ptr<base::ListValue> args(new base::ListValue());
313 DictionaryValue* select_info = new DictionaryValue(); 313 DictionaryValue* select_info = new DictionaryValue();
314 314
315 select_info->Set(tab_keys::kWindowIdKey, Value::CreateIntegerValue( 315 select_info->Set(tab_keys::kWindowIdKey, Value::CreateIntegerValue(
316 ExtensionTabUtil::GetWindowIdOfTabStripModel(tab_strip_model))); 316 ExtensionTabUtil::GetWindowIdOfTabStripModel(tab_strip_model)));
317 317
318 select_info->Set(tab_keys::kTabIdsKey, all); 318 select_info->Set(tab_keys::kTabIdsKey, all);
319 args->Append(select_info); 319 args->Append(select_info);
320 320
321 // The onHighlighted event replaced onHighlightChanged. 321 // The onHighlighted event replaced onHighlightChanged.
322 Profile* profile = tab_strip_model->profile(); 322 Profile* profile = tab_strip_model->profile();
323 DispatchEvent(profile, events::kOnTabHighlightChanged, 323 DispatchEvent(profile, events::kOnTabHighlightChanged,
324 scoped_ptr<ListValue>(args->DeepCopy()), 324 scoped_ptr<base::ListValue>(args->DeepCopy()),
325 EventRouter::USER_GESTURE_UNKNOWN); 325 EventRouter::USER_GESTURE_UNKNOWN);
326 DispatchEvent(profile, events::kOnTabHighlighted, args.Pass(), 326 DispatchEvent(profile, events::kOnTabHighlighted, args.Pass(),
327 EventRouter::USER_GESTURE_UNKNOWN); 327 EventRouter::USER_GESTURE_UNKNOWN);
328 } 328 }
329 329
330 void BrowserEventRouter::TabMoved(WebContents* contents, 330 void BrowserEventRouter::TabMoved(WebContents* contents,
331 int from_index, 331 int from_index,
332 int to_index) { 332 int to_index) {
333 scoped_ptr<ListValue> args(new ListValue()); 333 scoped_ptr<base::ListValue> args(new base::ListValue());
334 args->Append(Value::CreateIntegerValue(ExtensionTabUtil::GetTabId(contents))); 334 args->Append(Value::CreateIntegerValue(ExtensionTabUtil::GetTabId(contents)));
335 335
336 DictionaryValue* object_args = new DictionaryValue(); 336 DictionaryValue* object_args = new DictionaryValue();
337 object_args->Set(tab_keys::kWindowIdKey, Value::CreateIntegerValue( 337 object_args->Set(tab_keys::kWindowIdKey, Value::CreateIntegerValue(
338 ExtensionTabUtil::GetWindowIdOfTab(contents))); 338 ExtensionTabUtil::GetWindowIdOfTab(contents)));
339 object_args->Set(tab_keys::kFromIndexKey, Value::CreateIntegerValue( 339 object_args->Set(tab_keys::kFromIndexKey, Value::CreateIntegerValue(
340 from_index)); 340 from_index));
341 object_args->Set(tab_keys::kToIndexKey, Value::CreateIntegerValue( 341 object_args->Set(tab_keys::kToIndexKey, Value::CreateIntegerValue(
342 to_index)); 342 to_index));
343 args->Append(object_args); 343 args->Append(object_args);
(...skipping 29 matching lines...) Expand all
373 scoped_ptr<DictionaryValue> changed_properties(new DictionaryValue()); 373 scoped_ptr<DictionaryValue> changed_properties(new DictionaryValue());
374 changed_properties->SetString( 374 changed_properties->SetString(
375 tab_keys::kFaviconUrlKey, 375 tab_keys::kFaviconUrlKey,
376 entry->GetFavicon().url.possibly_invalid_spec()); 376 entry->GetFavicon().url.possibly_invalid_spec());
377 DispatchTabUpdatedEvent(contents, changed_properties.Pass()); 377 DispatchTabUpdatedEvent(contents, changed_properties.Pass());
378 } 378 }
379 379
380 void BrowserEventRouter::DispatchEvent( 380 void BrowserEventRouter::DispatchEvent(
381 Profile* profile, 381 Profile* profile,
382 const char* event_name, 382 const char* event_name,
383 scoped_ptr<ListValue> args, 383 scoped_ptr<base::ListValue> args,
384 EventRouter::UserGestureState user_gesture) { 384 EventRouter::UserGestureState user_gesture) {
385 if (!profile_->IsSameProfile(profile) || 385 if (!profile_->IsSameProfile(profile) ||
386 !extensions::ExtensionSystem::Get(profile)->event_router()) 386 !extensions::ExtensionSystem::Get(profile)->event_router())
387 return; 387 return;
388 388
389 scoped_ptr<Event> event(new Event(event_name, args.Pass())); 389 scoped_ptr<Event> event(new Event(event_name, args.Pass()));
390 event->restrict_to_profile = profile; 390 event->restrict_to_profile = profile;
391 event->user_gesture = user_gesture; 391 event->user_gesture = user_gesture;
392 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); 392 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass());
393 } 393 }
394 394
395 void BrowserEventRouter::DispatchEventToExtension( 395 void BrowserEventRouter::DispatchEventToExtension(
396 Profile* profile, 396 Profile* profile,
397 const std::string& extension_id, 397 const std::string& extension_id,
398 const char* event_name, 398 const char* event_name,
399 scoped_ptr<ListValue> event_args, 399 scoped_ptr<base::ListValue> event_args,
400 EventRouter::UserGestureState user_gesture) { 400 EventRouter::UserGestureState user_gesture) {
401 if (!profile_->IsSameProfile(profile) || 401 if (!profile_->IsSameProfile(profile) ||
402 !extensions::ExtensionSystem::Get(profile)->event_router()) 402 !extensions::ExtensionSystem::Get(profile)->event_router())
403 return; 403 return;
404 404
405 scoped_ptr<Event> event(new Event(event_name, event_args.Pass())); 405 scoped_ptr<Event> event(new Event(event_name, event_args.Pass()));
406 event->restrict_to_profile = profile; 406 event->restrict_to_profile = profile;
407 event->user_gesture = user_gesture; 407 event->user_gesture = user_gesture;
408 ExtensionSystem::Get(profile)->event_router()-> 408 ExtensionSystem::Get(profile)->event_router()->
409 DispatchEventToExtension(extension_id, event.Pass()); 409 DispatchEventToExtension(extension_id, event.Pass());
410 } 410 }
411 411
412 void BrowserEventRouter::DispatchSimpleBrowserEvent( 412 void BrowserEventRouter::DispatchSimpleBrowserEvent(
413 Profile* profile, const int window_id, const char* event_name) { 413 Profile* profile, const int window_id, const char* event_name) {
414 if (!profile_->IsSameProfile(profile)) 414 if (!profile_->IsSameProfile(profile))
415 return; 415 return;
416 416
417 scoped_ptr<ListValue> args(new ListValue()); 417 scoped_ptr<base::ListValue> args(new base::ListValue());
418 args->Append(Value::CreateIntegerValue(window_id)); 418 args->Append(Value::CreateIntegerValue(window_id));
419 419
420 DispatchEvent(profile, event_name, args.Pass(), 420 DispatchEvent(profile, event_name, args.Pass(),
421 EventRouter::USER_GESTURE_UNKNOWN); 421 EventRouter::USER_GESTURE_UNKNOWN);
422 } 422 }
423 423
424 static void WillDispatchTabUpdatedEvent( 424 static void WillDispatchTabUpdatedEvent(
425 WebContents* contents, 425 WebContents* contents,
426 const DictionaryValue* changed_properties, 426 const DictionaryValue* changed_properties,
427 Profile* profile, 427 Profile* profile,
428 const Extension* extension, 428 const Extension* extension,
429 ListValue* event_args) { 429 base::ListValue* event_args) {
430 // Overwrite the second argument with the appropriate properties dictionary, 430 // Overwrite the second argument with the appropriate properties dictionary,
431 // depending on extension permissions. 431 // depending on extension permissions.
432 DictionaryValue* properties_value = changed_properties->DeepCopy(); 432 DictionaryValue* properties_value = changed_properties->DeepCopy();
433 ExtensionTabUtil::ScrubTabValueForExtension(contents, extension, 433 ExtensionTabUtil::ScrubTabValueForExtension(contents, extension,
434 properties_value); 434 properties_value);
435 event_args->Set(1, properties_value); 435 event_args->Set(1, properties_value);
436 436
437 // Overwrite the third arg with our tab value as seen by this extension. 437 // Overwrite the third arg with our tab value as seen by this extension.
438 DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue( 438 DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue(
439 contents, extension); 439 contents, extension);
440 event_args->Set(2, tab_value); 440 event_args->Set(2, tab_value);
441 } 441 }
442 442
443 void BrowserEventRouter::DispatchTabUpdatedEvent( 443 void BrowserEventRouter::DispatchTabUpdatedEvent(
444 WebContents* contents, scoped_ptr<DictionaryValue> changed_properties) { 444 WebContents* contents, scoped_ptr<DictionaryValue> changed_properties) {
445 DCHECK(changed_properties); 445 DCHECK(changed_properties);
446 DCHECK(contents); 446 DCHECK(contents);
447 447
448 // The state of the tab (as seen from the extension point of view) has 448 // The state of the tab (as seen from the extension point of view) has
449 // changed. Send a notification to the extension. 449 // changed. Send a notification to the extension.
450 scoped_ptr<ListValue> args_base(new ListValue()); 450 scoped_ptr<base::ListValue> args_base(new base::ListValue());
451 451
452 // First arg: The id of the tab that changed. 452 // First arg: The id of the tab that changed.
453 args_base->AppendInteger(ExtensionTabUtil::GetTabId(contents)); 453 args_base->AppendInteger(ExtensionTabUtil::GetTabId(contents));
454 454
455 // Second arg: An object containing the changes to the tab state. Filled in 455 // Second arg: An object containing the changes to the tab state. Filled in
456 // by WillDispatchTabUpdatedEvent as a copy of changed_properties, if the 456 // by WillDispatchTabUpdatedEvent as a copy of changed_properties, if the
457 // extension has the tabs permission. 457 // extension has the tabs permission.
458 458
459 // Third arg: An object containing the state of the tab. Filled in by 459 // Third arg: An object containing the state of the tab. Filled in by
460 // WillDispatchTabUpdatedEvent. 460 // WillDispatchTabUpdatedEvent.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 } 510 }
511 511
512 void BrowserEventRouter::TabReplacedAt(TabStripModel* tab_strip_model, 512 void BrowserEventRouter::TabReplacedAt(TabStripModel* tab_strip_model,
513 WebContents* old_contents, 513 WebContents* old_contents,
514 WebContents* new_contents, 514 WebContents* new_contents,
515 int index) { 515 int index) {
516 // Notify listeners that the next tabs closing or being added are due to 516 // Notify listeners that the next tabs closing or being added are due to
517 // WebContents being swapped. 517 // WebContents being swapped.
518 const int new_tab_id = ExtensionTabUtil::GetTabId(new_contents); 518 const int new_tab_id = ExtensionTabUtil::GetTabId(new_contents);
519 const int old_tab_id = ExtensionTabUtil::GetTabId(old_contents); 519 const int old_tab_id = ExtensionTabUtil::GetTabId(old_contents);
520 scoped_ptr<ListValue> args(new ListValue()); 520 scoped_ptr<base::ListValue> args(new base::ListValue());
521 args->Append(Value::CreateIntegerValue(new_tab_id)); 521 args->Append(Value::CreateIntegerValue(new_tab_id));
522 args->Append(Value::CreateIntegerValue(old_tab_id)); 522 args->Append(Value::CreateIntegerValue(old_tab_id));
523 523
524 DispatchEvent(Profile::FromBrowserContext(new_contents->GetBrowserContext()), 524 DispatchEvent(Profile::FromBrowserContext(new_contents->GetBrowserContext()),
525 events::kOnTabReplaced, 525 events::kOnTabReplaced,
526 args.Pass(), 526 args.Pass(),
527 EventRouter::USER_GESTURE_UNKNOWN); 527 EventRouter::USER_GESTURE_UNKNOWN);
528 528
529 // Update tab_entries_. 529 // Update tab_entries_.
530 const int removed_count = tab_entries_.erase(old_tab_id); 530 const int removed_count = tab_entries_.erase(old_tab_id);
(...skipping 21 matching lines...) Expand all
552 552
553 void BrowserEventRouter::TabStripEmpty() {} 553 void BrowserEventRouter::TabStripEmpty() {}
554 554
555 void BrowserEventRouter::DispatchOldPageActionEvent( 555 void BrowserEventRouter::DispatchOldPageActionEvent(
556 Profile* profile, 556 Profile* profile,
557 const std::string& extension_id, 557 const std::string& extension_id,
558 const std::string& page_action_id, 558 const std::string& page_action_id,
559 int tab_id, 559 int tab_id,
560 const std::string& url, 560 const std::string& url,
561 int button) { 561 int button) {
562 scoped_ptr<ListValue> args(new ListValue()); 562 scoped_ptr<base::ListValue> args(new base::ListValue());
563 args->Append(Value::CreateStringValue(page_action_id)); 563 args->Append(Value::CreateStringValue(page_action_id));
564 564
565 DictionaryValue* data = new DictionaryValue(); 565 DictionaryValue* data = new DictionaryValue();
566 data->Set(tab_keys::kTabIdKey, Value::CreateIntegerValue(tab_id)); 566 data->Set(tab_keys::kTabIdKey, Value::CreateIntegerValue(tab_id));
567 data->Set(tab_keys::kTabUrlKey, Value::CreateStringValue(url)); 567 data->Set(tab_keys::kTabUrlKey, Value::CreateStringValue(url));
568 data->Set(page_actions_keys::kButtonKey, 568 data->Set(page_actions_keys::kButtonKey,
569 Value::CreateIntegerValue(button)); 569 Value::CreateIntegerValue(button));
570 args->Append(data); 570 args->Append(data);
571 571
572 DispatchEventToExtension(profile, extension_id, "pageActions", args.Pass(), 572 DispatchEventToExtension(profile, extension_id, "pageActions", args.Pass(),
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 break; 625 break;
626 case ActionInfo::TYPE_SCRIPT_BADGE: 626 case ActionInfo::TYPE_SCRIPT_BADGE:
627 event_name = "scriptBadge.onClicked"; 627 event_name = "scriptBadge.onClicked";
628 break; 628 break;
629 case ActionInfo::TYPE_SYSTEM_INDICATOR: 629 case ActionInfo::TYPE_SYSTEM_INDICATOR:
630 // The System Indicator handles its own clicks. 630 // The System Indicator handles its own clicks.
631 break; 631 break;
632 } 632 }
633 633
634 if (event_name) { 634 if (event_name) {
635 scoped_ptr<ListValue> args(new ListValue()); 635 scoped_ptr<base::ListValue> args(new base::ListValue());
636 DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue( 636 DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue(
637 web_contents); 637 web_contents);
638 args->Append(tab_value); 638 args->Append(tab_value);
639 639
640 DispatchEventToExtension(profile, 640 DispatchEventToExtension(profile,
641 extension_action.extension_id(), 641 extension_action.extension_id(),
642 event_name, 642 event_name,
643 args.Pass(), 643 args.Pass(),
644 EventRouter::USER_GESTURE_ENABLED); 644 EventRouter::USER_GESTURE_ENABLED);
645 } 645 }
646 } 646 }
647 647
648 } // namespace extensions 648 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698