OLD | NEW |
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/tabs/tabs_windows_api.h" | 5 #include "chrome/browser/extensions/api/tabs/tabs_windows_api.h" |
6 | 6 |
7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "chrome/browser/extensions/api/tabs/tabs_event_router.h" |
8 #include "chrome/browser/extensions/api/tabs/windows_event_router.h" | 9 #include "chrome/browser/extensions/api/tabs/windows_event_router.h" |
9 #include "chrome/browser/extensions/event_router.h" | 10 #include "chrome/browser/extensions/event_router.h" |
10 #include "chrome/browser/extensions/extension_system.h" | 11 #include "chrome/browser/extensions/extension_system.h" |
| 12 #include "chrome/common/extensions/api/tabs.h" |
11 #include "chrome/common/extensions/api/windows.h" | 13 #include "chrome/common/extensions/api/windows.h" |
12 | 14 |
13 namespace extensions { | 15 namespace extensions { |
14 | 16 |
15 namespace windows = api::windows; | 17 TabsWindowsAPI::TabsWindowsAPI(Profile* profile) : profile_(profile) { |
| 18 // Tabs API Events. |
| 19 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 20 this, api::tabs::OnCreated::kEventName); |
| 21 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 22 this, api::tabs::OnUpdated::kEventName); |
| 23 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 24 this, api::tabs::OnMoved::kEventName); |
| 25 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 26 this, api::tabs::OnSelectionChanged::kEventName); |
| 27 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 28 this, api::tabs::OnActiveChanged::kEventName); |
| 29 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 30 this, api::tabs::OnActivated::kEventName); |
| 31 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 32 this, api::tabs::OnHighlightChanged::kEventName); |
| 33 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 34 this, api::tabs::OnHighlighted::kEventName); |
| 35 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 36 this, api::tabs::OnDetached::kEventName); |
| 37 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 38 this, api::tabs::OnAttached::kEventName); |
| 39 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 40 this, api::tabs::OnRemoved::kEventName); |
| 41 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 42 this, api::tabs::OnReplaced::kEventName); |
16 | 43 |
17 TabsWindowsAPI::TabsWindowsAPI(Profile* profile) | 44 // Windows API Events. |
18 : profile_(profile) { | |
19 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( | 45 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
20 this, windows::OnCreated::kEventName); | 46 this, api::windows::OnCreated::kEventName); |
21 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( | 47 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
22 this, windows::OnRemoved::kEventName); | 48 this, api::windows::OnRemoved::kEventName); |
23 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( | 49 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
24 this, windows::OnFocusChanged::kEventName); | 50 this, api::windows::OnFocusChanged::kEventName); |
25 } | 51 } |
26 | 52 |
27 TabsWindowsAPI::~TabsWindowsAPI() { | 53 TabsWindowsAPI::~TabsWindowsAPI() { |
28 } | 54 } |
29 | 55 |
30 // static | 56 // static |
31 TabsWindowsAPI* TabsWindowsAPI::Get(Profile* profile) { | 57 TabsWindowsAPI* TabsWindowsAPI::Get(Profile* profile) { |
32 return ProfileKeyedAPIFactory<TabsWindowsAPI>::GetForProfile(profile); | 58 return ProfileKeyedAPIFactory<TabsWindowsAPI>::GetForProfile(profile); |
33 } | 59 } |
34 | 60 |
| 61 TabsEventRouter* TabsWindowsAPI::tabs_event_router() { |
| 62 if (!tabs_event_router_.get()) |
| 63 tabs_event_router_.reset(new TabsEventRouter(profile_)); |
| 64 return tabs_event_router_.get(); |
| 65 } |
| 66 |
35 WindowsEventRouter* TabsWindowsAPI::windows_event_router() { | 67 WindowsEventRouter* TabsWindowsAPI::windows_event_router() { |
36 if (!windows_event_router_) | 68 if (!windows_event_router_) |
37 windows_event_router_.reset(new WindowsEventRouter(profile_)); | 69 windows_event_router_.reset(new WindowsEventRouter(profile_)); |
38 return windows_event_router_.get(); | 70 return windows_event_router_.get(); |
39 } | 71 } |
40 | 72 |
41 void TabsWindowsAPI::Shutdown() { | 73 void TabsWindowsAPI::Shutdown() { |
42 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); | 74 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); |
43 } | 75 } |
44 | 76 |
45 static base::LazyInstance<ProfileKeyedAPIFactory<TabsWindowsAPI> > | 77 static base::LazyInstance<ProfileKeyedAPIFactory<TabsWindowsAPI> > |
46 g_factory = LAZY_INSTANCE_INITIALIZER; | 78 g_factory = LAZY_INSTANCE_INITIALIZER; |
47 | 79 |
48 ProfileKeyedAPIFactory<TabsWindowsAPI>* TabsWindowsAPI::GetFactoryInstance() { | 80 ProfileKeyedAPIFactory<TabsWindowsAPI>* TabsWindowsAPI::GetFactoryInstance() { |
49 return &g_factory.Get(); | 81 return &g_factory.Get(); |
50 } | 82 } |
51 | 83 |
52 void TabsWindowsAPI::OnListenerAdded( | 84 void TabsWindowsAPI::OnListenerAdded(const EventListenerInfo& details) { |
53 const extensions::EventListenerInfo& details) { | 85 // Initialize the event routers. |
| 86 tabs_event_router(); |
54 windows_event_router(); | 87 windows_event_router(); |
55 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); | 88 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); |
56 } | 89 } |
57 | 90 |
58 } // namespace extensions | 91 } // namespace extensions |
OLD | NEW |