OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/tabs/tabs_event_router.h" | 5 #include "chrome/browser/extensions/api/tabs/tabs_event_router.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
| 9 #include <memory> |
9 #include <utility> | 10 #include <utility> |
10 | 11 |
11 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
12 #include "base/values.h" | 13 #include "base/values.h" |
13 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" | 14 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" |
14 #include "chrome/browser/extensions/api/tabs/tabs_windows_api.h" | 15 #include "chrome/browser/extensions/api/tabs/tabs_windows_api.h" |
15 #include "chrome/browser/extensions/api/tabs/windows_event_router.h" | 16 #include "chrome/browser/extensions/api/tabs/windows_event_router.h" |
16 #include "chrome/browser/extensions/extension_tab_util.h" | 17 #include "chrome/browser/extensions/extension_tab_util.h" |
17 #include "chrome/browser/profiles/profile.h" | 18 #include "chrome/browser/profiles/profile.h" |
18 #include "chrome/browser/ui/browser.h" | 19 #include "chrome/browser/ui/browser.h" |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 RegisterForTabNotifications(contents); | 224 RegisterForTabNotifications(contents); |
224 else | 225 else |
225 TabCreatedAt(contents, index, active); | 226 TabCreatedAt(contents, index, active); |
226 return; | 227 return; |
227 } | 228 } |
228 | 229 |
229 int tab_id = ExtensionTabUtil::GetTabId(contents); | 230 int tab_id = ExtensionTabUtil::GetTabId(contents); |
230 std::unique_ptr<base::ListValue> args(new base::ListValue); | 231 std::unique_ptr<base::ListValue> args(new base::ListValue); |
231 args->AppendInteger(tab_id); | 232 args->AppendInteger(tab_id); |
232 | 233 |
233 base::DictionaryValue* object_args = new base::DictionaryValue(); | 234 std::unique_ptr<base::DictionaryValue> object_args( |
| 235 new base::DictionaryValue()); |
234 object_args->Set(tabs_constants::kNewWindowIdKey, | 236 object_args->Set(tabs_constants::kNewWindowIdKey, |
235 new FundamentalValue( | 237 new FundamentalValue( |
236 ExtensionTabUtil::GetWindowIdOfTab(contents))); | 238 ExtensionTabUtil::GetWindowIdOfTab(contents))); |
237 object_args->Set(tabs_constants::kNewPositionKey, | 239 object_args->Set(tabs_constants::kNewPositionKey, |
238 new FundamentalValue(index)); | 240 new FundamentalValue(index)); |
239 args->Append(object_args); | 241 args->Append(std::move(object_args)); |
240 | 242 |
241 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); | 243 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
242 DispatchEvent(profile, events::TABS_ON_ATTACHED, tabs::OnAttached::kEventName, | 244 DispatchEvent(profile, events::TABS_ON_ATTACHED, tabs::OnAttached::kEventName, |
243 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); | 245 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); |
244 } | 246 } |
245 | 247 |
246 void TabsEventRouter::TabDetachedAt(WebContents* contents, int index) { | 248 void TabsEventRouter::TabDetachedAt(WebContents* contents, int index) { |
247 if (!GetTabEntry(contents)) { | 249 if (!GetTabEntry(contents)) { |
248 // The tab was removed. Don't send detach event. | 250 // The tab was removed. Don't send detach event. |
249 return; | 251 return; |
250 } | 252 } |
251 | 253 |
252 std::unique_ptr<base::ListValue> args(new base::ListValue); | 254 std::unique_ptr<base::ListValue> args(new base::ListValue); |
253 args->AppendInteger(ExtensionTabUtil::GetTabId(contents)); | 255 args->AppendInteger(ExtensionTabUtil::GetTabId(contents)); |
254 | 256 |
255 base::DictionaryValue* object_args = new base::DictionaryValue(); | 257 std::unique_ptr<base::DictionaryValue> object_args( |
| 258 new base::DictionaryValue()); |
256 object_args->Set(tabs_constants::kOldWindowIdKey, | 259 object_args->Set(tabs_constants::kOldWindowIdKey, |
257 new FundamentalValue( | 260 new FundamentalValue( |
258 ExtensionTabUtil::GetWindowIdOfTab(contents))); | 261 ExtensionTabUtil::GetWindowIdOfTab(contents))); |
259 object_args->Set(tabs_constants::kOldPositionKey, | 262 object_args->Set(tabs_constants::kOldPositionKey, |
260 new FundamentalValue(index)); | 263 new FundamentalValue(index)); |
261 args->Append(object_args); | 264 args->Append(std::move(object_args)); |
262 | 265 |
263 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); | 266 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
264 DispatchEvent(profile, events::TABS_ON_DETACHED, tabs::OnDetached::kEventName, | 267 DispatchEvent(profile, events::TABS_ON_DETACHED, tabs::OnDetached::kEventName, |
265 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); | 268 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); |
266 } | 269 } |
267 | 270 |
268 void TabsEventRouter::TabClosingAt(TabStripModel* tab_strip_model, | 271 void TabsEventRouter::TabClosingAt(TabStripModel* tab_strip_model, |
269 WebContents* contents, | 272 WebContents* contents, |
270 int index) { | 273 int index) { |
271 int tab_id = ExtensionTabUtil::GetTabId(contents); | 274 int tab_id = ExtensionTabUtil::GetTabId(contents); |
272 | 275 |
273 std::unique_ptr<base::ListValue> args(new base::ListValue); | 276 std::unique_ptr<base::ListValue> args(new base::ListValue); |
274 args->AppendInteger(tab_id); | 277 args->AppendInteger(tab_id); |
275 | 278 |
276 base::DictionaryValue* object_args = new base::DictionaryValue(); | 279 std::unique_ptr<base::DictionaryValue> object_args( |
| 280 new base::DictionaryValue()); |
277 object_args->SetInteger(tabs_constants::kWindowIdKey, | 281 object_args->SetInteger(tabs_constants::kWindowIdKey, |
278 ExtensionTabUtil::GetWindowIdOfTab(contents)); | 282 ExtensionTabUtil::GetWindowIdOfTab(contents)); |
279 object_args->SetBoolean(tabs_constants::kWindowClosing, | 283 object_args->SetBoolean(tabs_constants::kWindowClosing, |
280 tab_strip_model->closing_all()); | 284 tab_strip_model->closing_all()); |
281 args->Append(object_args); | 285 args->Append(std::move(object_args)); |
282 | 286 |
283 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); | 287 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
284 DispatchEvent(profile, events::TABS_ON_REMOVED, tabs::OnRemoved::kEventName, | 288 DispatchEvent(profile, events::TABS_ON_REMOVED, tabs::OnRemoved::kEventName, |
285 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); | 289 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); |
286 | 290 |
287 UnregisterForTabNotifications(contents); | 291 UnregisterForTabNotifications(contents); |
288 } | 292 } |
289 | 293 |
290 void TabsEventRouter::ActiveTabChanged(WebContents* old_contents, | 294 void TabsEventRouter::ActiveTabChanged(WebContents* old_contents, |
291 WebContents* new_contents, | 295 WebContents* new_contents, |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 tabs::OnHighlighted::kEventName, std::move(args), | 365 tabs::OnHighlighted::kEventName, std::move(args), |
362 EventRouter::USER_GESTURE_UNKNOWN); | 366 EventRouter::USER_GESTURE_UNKNOWN); |
363 } | 367 } |
364 | 368 |
365 void TabsEventRouter::TabMoved(WebContents* contents, | 369 void TabsEventRouter::TabMoved(WebContents* contents, |
366 int from_index, | 370 int from_index, |
367 int to_index) { | 371 int to_index) { |
368 std::unique_ptr<base::ListValue> args(new base::ListValue); | 372 std::unique_ptr<base::ListValue> args(new base::ListValue); |
369 args->AppendInteger(ExtensionTabUtil::GetTabId(contents)); | 373 args->AppendInteger(ExtensionTabUtil::GetTabId(contents)); |
370 | 374 |
371 base::DictionaryValue* object_args = new base::DictionaryValue(); | 375 std::unique_ptr<base::DictionaryValue> object_args( |
| 376 new base::DictionaryValue()); |
372 object_args->Set(tabs_constants::kWindowIdKey, | 377 object_args->Set(tabs_constants::kWindowIdKey, |
373 new FundamentalValue( | 378 new FundamentalValue( |
374 ExtensionTabUtil::GetWindowIdOfTab(contents))); | 379 ExtensionTabUtil::GetWindowIdOfTab(contents))); |
375 object_args->Set(tabs_constants::kFromIndexKey, | 380 object_args->Set(tabs_constants::kFromIndexKey, |
376 new FundamentalValue(from_index)); | 381 new FundamentalValue(from_index)); |
377 object_args->Set(tabs_constants::kToIndexKey, | 382 object_args->Set(tabs_constants::kToIndexKey, |
378 new FundamentalValue(to_index)); | 383 new FundamentalValue(to_index)); |
379 args->Append(object_args); | 384 args->Append(std::move(object_args)); |
380 | 385 |
381 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); | 386 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
382 DispatchEvent(profile, events::TABS_ON_MOVED, tabs::OnMoved::kEventName, | 387 DispatchEvent(profile, events::TABS_ON_MOVED, tabs::OnMoved::kEventName, |
383 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); | 388 std::move(args), EventRouter::USER_GESTURE_UNKNOWN); |
384 } | 389 } |
385 | 390 |
386 void TabsEventRouter::TabUpdated(TabEntry* entry, | 391 void TabsEventRouter::TabUpdated(TabEntry* entry, |
387 std::set<std::string> changed_property_names) { | 392 std::set<std::string> changed_property_names) { |
388 bool audible = entry->web_contents()->WasRecentlyAudible(); | 393 bool audible = entry->web_contents()->WasRecentlyAudible(); |
389 if (entry->SetAudible(audible)) { | 394 if (entry->SetAudible(audible)) { |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 bool icon_url_changed, | 546 bool icon_url_changed, |
542 const gfx::Image& image) { | 547 const gfx::Image& image) { |
543 if (notification_icon_type == NON_TOUCH_16_DIP && icon_url_changed) { | 548 if (notification_icon_type == NON_TOUCH_16_DIP && icon_url_changed) { |
544 favicon::ContentFaviconDriver* content_favicon_driver = | 549 favicon::ContentFaviconDriver* content_favicon_driver = |
545 static_cast<favicon::ContentFaviconDriver*>(favicon_driver); | 550 static_cast<favicon::ContentFaviconDriver*>(favicon_driver); |
546 FaviconUrlUpdated(content_favicon_driver->web_contents()); | 551 FaviconUrlUpdated(content_favicon_driver->web_contents()); |
547 } | 552 } |
548 } | 553 } |
549 | 554 |
550 } // namespace extensions | 555 } // namespace extensions |
OLD | NEW |