| 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/extensions/api/system_indicator/system_indicator_manage
r_factory.h" | 7 #include "chrome/browser/extensions/api/system_indicator/system_indicator_manage
r_factory.h" |
| 8 #include "chrome/browser/extensions/extension_action.h" | 8 #include "chrome/browser/extensions/extension_action.h" |
| 9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
| 10 #include "components/keyed_service/content/browser_context_dependency_manager.h" | 10 #include "components/keyed_service/content/browser_context_dependency_manager.h" |
| 11 #include "extensions/browser/extension_registry.h" | 11 #include "extensions/browser/extension_registry.h" |
| 12 #include "extensions/browser/extension_system.h" | 12 #include "extensions/browser/extension_system.h" |
| 13 #include "extensions/browser/extensions_browser_client.h" | 13 #include "extensions/browser/extensions_browser_client.h" |
| 14 #include "extensions/common/constants.h" | 14 #include "extensions/common/constants.h" |
| 15 #include "extensions/common/manifest_handlers/icons_handler.h" | 15 #include "extensions/common/manifest_handlers/icons_handler.h" |
| 16 | 16 |
| 17 namespace extensions { | 17 namespace extensions { |
| 18 | 18 |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 // BrowserContextKeyedServiceFactory for ExtensionActionManager. | 21 // BrowserContextKeyedServiceFactory for ExtensionActionManager. |
| 22 class ExtensionActionManagerFactory : public BrowserContextKeyedServiceFactory { | 22 class ExtensionActionManagerFactory : public BrowserContextKeyedServiceFactory { |
| 23 public: | 23 public: |
| 24 // BrowserContextKeyedServiceFactory implementation: | 24 // BrowserContextKeyedServiceFactory implementation: |
| 25 static ExtensionActionManager* GetForProfile(Profile* profile) { | 25 static ExtensionActionManager* GetForBrowserContext( |
| 26 content::BrowserContext* context) { |
| 26 return static_cast<ExtensionActionManager*>( | 27 return static_cast<ExtensionActionManager*>( |
| 27 GetInstance()->GetServiceForBrowserContext(profile, true)); | 28 GetInstance()->GetServiceForBrowserContext(context, true)); |
| 28 } | 29 } |
| 29 | 30 |
| 30 static ExtensionActionManagerFactory* GetInstance(); | 31 static ExtensionActionManagerFactory* GetInstance(); |
| 31 | 32 |
| 32 private: | 33 private: |
| 33 friend struct DefaultSingletonTraits<ExtensionActionManagerFactory>; | 34 friend struct DefaultSingletonTraits<ExtensionActionManagerFactory>; |
| 34 | 35 |
| 35 ExtensionActionManagerFactory() | 36 ExtensionActionManagerFactory() |
| 36 : BrowserContextKeyedServiceFactory( | 37 : BrowserContextKeyedServiceFactory( |
| 37 "ExtensionActionManager", | 38 "ExtensionActionManager", |
| (...skipping 23 matching lines...) Expand all Loading... |
| 61 CHECK_EQ(profile, profile->GetOriginalProfile()) | 62 CHECK_EQ(profile, profile->GetOriginalProfile()) |
| 62 << "Don't instantiate this with an incognito profile."; | 63 << "Don't instantiate this with an incognito profile."; |
| 63 extension_registry_observer_.Add(ExtensionRegistry::Get(profile_)); | 64 extension_registry_observer_.Add(ExtensionRegistry::Get(profile_)); |
| 64 } | 65 } |
| 65 | 66 |
| 66 ExtensionActionManager::~ExtensionActionManager() { | 67 ExtensionActionManager::~ExtensionActionManager() { |
| 67 // Don't assert that the ExtensionAction maps are empty because Extensions are | 68 // Don't assert that the ExtensionAction maps are empty because Extensions are |
| 68 // sometimes (only in tests?) not unloaded before the Profile is destroyed. | 69 // sometimes (only in tests?) not unloaded before the Profile is destroyed. |
| 69 } | 70 } |
| 70 | 71 |
| 71 ExtensionActionManager* ExtensionActionManager::Get(Profile* profile) { | 72 ExtensionActionManager* ExtensionActionManager::Get( |
| 72 return ExtensionActionManagerFactory::GetForProfile(profile); | 73 content::BrowserContext* context) { |
| 74 return ExtensionActionManagerFactory::GetForBrowserContext(context); |
| 73 } | 75 } |
| 74 | 76 |
| 75 void ExtensionActionManager::OnExtensionUnloaded( | 77 void ExtensionActionManager::OnExtensionUnloaded( |
| 76 content::BrowserContext* browser_context, | 78 content::BrowserContext* browser_context, |
| 77 const Extension* extension, | 79 const Extension* extension, |
| 78 UnloadedExtensionInfo::Reason reason) { | 80 UnloadedExtensionInfo::Reason reason) { |
| 79 page_actions_.erase(extension->id()); | 81 page_actions_.erase(extension->id()); |
| 80 browser_actions_.erase(extension->id()); | 82 browser_actions_.erase(extension->id()); |
| 81 system_indicators_.erase(extension->id()); | 83 system_indicators_.erase(extension->id()); |
| 82 } | 84 } |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 if (!extensions::SystemIndicatorManagerFactory::GetForProfile(profile_)) | 198 if (!extensions::SystemIndicatorManagerFactory::GetForProfile(profile_)) |
| 197 return NULL; | 199 return NULL; |
| 198 | 200 |
| 199 return GetOrCreateOrNull(&system_indicators_, extension, | 201 return GetOrCreateOrNull(&system_indicators_, extension, |
| 200 ActionInfo::TYPE_SYSTEM_INDICATOR, | 202 ActionInfo::TYPE_SYSTEM_INDICATOR, |
| 201 ActionInfo::GetSystemIndicatorInfo(&extension), | 203 ActionInfo::GetSystemIndicatorInfo(&extension), |
| 202 profile_); | 204 profile_); |
| 203 } | 205 } |
| 204 | 206 |
| 205 } // namespace extensions | 207 } // namespace extensions |
| OLD | NEW |