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/extension_action_manager.h" | 5 #include "chrome/browser/extensions/extension_action_manager.h" |
6 | 6 |
7 #include "chrome/browser/chrome_notification_types.h" | 7 #include "chrome/browser/chrome_notification_types.h" |
8 #include "chrome/browser/extensions/api/system_indicator/system_indicator_manage
r.h" | 8 #include "chrome/browser/extensions/api/system_indicator/system_indicator_manage
r.h" |
9 #include "chrome/browser/extensions/api/system_indicator/system_indicator_manage
r_factory.h" | 9 #include "chrome/browser/extensions/api/system_indicator/system_indicator_manage
r_factory.h" |
10 #include "chrome/browser/extensions/extension_action.h" | 10 #include "chrome/browser/extensions/extension_action.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 ExtensionActionManagerFactory::GetInstance() { | 60 ExtensionActionManagerFactory::GetInstance() { |
61 return Singleton<ExtensionActionManagerFactory>::get(); | 61 return Singleton<ExtensionActionManagerFactory>::get(); |
62 } | 62 } |
63 | 63 |
64 } // namespace | 64 } // namespace |
65 | 65 |
66 ExtensionActionManager::ExtensionActionManager(Profile* profile) | 66 ExtensionActionManager::ExtensionActionManager(Profile* profile) |
67 : profile_(profile) { | 67 : profile_(profile) { |
68 CHECK_EQ(profile, profile->GetOriginalProfile()) | 68 CHECK_EQ(profile, profile->GetOriginalProfile()) |
69 << "Don't instantiate this with an incognito profile."; | 69 << "Don't instantiate this with an incognito profile."; |
70 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 70 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, |
71 content::Source<Profile>(profile)); | 71 content::Source<Profile>(profile)); |
72 } | 72 } |
73 | 73 |
74 ExtensionActionManager::~ExtensionActionManager() { | 74 ExtensionActionManager::~ExtensionActionManager() { |
75 // Don't assert that the ExtensionAction maps are empty because Extensions are | 75 // Don't assert that the ExtensionAction maps are empty because Extensions are |
76 // sometimes (only in tests?) not unloaded before the Profile is destroyed. | 76 // sometimes (only in tests?) not unloaded before the Profile is destroyed. |
77 } | 77 } |
78 | 78 |
79 ExtensionActionManager* ExtensionActionManager::Get(Profile* profile) { | 79 ExtensionActionManager* ExtensionActionManager::Get(Profile* profile) { |
80 return ExtensionActionManagerFactory::GetForProfile(profile); | 80 return ExtensionActionManagerFactory::GetForProfile(profile); |
81 } | 81 } |
82 | 82 |
83 void ExtensionActionManager::Observe( | 83 void ExtensionActionManager::Observe( |
84 int type, | 84 int type, |
85 const content::NotificationSource& source, | 85 const content::NotificationSource& source, |
86 const content::NotificationDetails& details) { | 86 const content::NotificationDetails& details) { |
87 switch (type) { | 87 switch (type) { |
88 case chrome::NOTIFICATION_EXTENSION_UNLOADED: { | 88 case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { |
89 const Extension* extension = | 89 const Extension* extension = |
90 content::Details<UnloadedExtensionInfo>(details)->extension; | 90 content::Details<UnloadedExtensionInfo>(details)->extension; |
91 page_actions_.erase(extension->id()); | 91 page_actions_.erase(extension->id()); |
92 browser_actions_.erase(extension->id()); | 92 browser_actions_.erase(extension->id()); |
93 system_indicators_.erase(extension->id()); | 93 system_indicators_.erase(extension->id()); |
94 break; | 94 break; |
95 } | 95 } |
96 } | 96 } |
97 } | 97 } |
98 | 98 |
(...skipping 10 matching lines...) Expand all Loading... |
109 Profile* profile) { | 109 Profile* profile) { |
110 std::map<std::string, linked_ptr<ExtensionAction> >::const_iterator it = | 110 std::map<std::string, linked_ptr<ExtensionAction> >::const_iterator it = |
111 map->find(extension_id); | 111 map->find(extension_id); |
112 if (it != map->end()) | 112 if (it != map->end()) |
113 return it->second.get(); | 113 return it->second.get(); |
114 if (!action_info) | 114 if (!action_info) |
115 return NULL; | 115 return NULL; |
116 | 116 |
117 // Only create action info for enabled extensions. | 117 // Only create action info for enabled extensions. |
118 // This avoids bugs where actions are recreated just after being removed | 118 // This avoids bugs where actions are recreated just after being removed |
119 // in response to NOTIFICATION_EXTENSION_UNLOADED in | 119 // in response to NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED in |
120 // ExtensionActionManager::Observe() | 120 // ExtensionActionManager::Observe() |
121 ExtensionService* service = | 121 ExtensionService* service = |
122 ExtensionSystem::Get(profile)->extension_service(); | 122 ExtensionSystem::Get(profile)->extension_service(); |
123 if (!service->GetExtensionById(extension_id, false)) | 123 if (!service->GetExtensionById(extension_id, false)) |
124 return NULL; | 124 return NULL; |
125 | 125 |
126 linked_ptr<ExtensionAction> action(new ExtensionAction( | 126 linked_ptr<ExtensionAction> action(new ExtensionAction( |
127 extension_id, action_type, *action_info)); | 127 extension_id, action_type, *action_info)); |
128 (*map)[extension_id] = action; | 128 (*map)[extension_id] = action; |
129 return action.get(); | 129 return action.get(); |
(...skipping 26 matching lines...) Expand all Loading... |
156 if (!extensions::SystemIndicatorManagerFactory::GetForProfile(profile_)) | 156 if (!extensions::SystemIndicatorManagerFactory::GetForProfile(profile_)) |
157 return NULL; | 157 return NULL; |
158 | 158 |
159 return GetOrCreateOrNull(&system_indicators_, extension.id(), | 159 return GetOrCreateOrNull(&system_indicators_, extension.id(), |
160 ActionInfo::TYPE_SYSTEM_INDICATOR, | 160 ActionInfo::TYPE_SYSTEM_INDICATOR, |
161 ActionInfo::GetSystemIndicatorInfo(&extension), | 161 ActionInfo::GetSystemIndicatorInfo(&extension), |
162 profile_); | 162 profile_); |
163 } | 163 } |
164 | 164 |
165 } // namespace extensions | 165 } // namespace extensions |
OLD | NEW |