Chromium Code Reviews| Index: extensions/browser/api/networking_config/networking_config_service_factory.cc |
| diff --git a/extensions/browser/api/networking_config/networking_config_service_factory.cc b/extensions/browser/api/networking_config/networking_config_service_factory.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9104d33f2f87eee5ab078249dc22d6df666ee170 |
| --- /dev/null |
| +++ b/extensions/browser/api/networking_config/networking_config_service_factory.cc |
| @@ -0,0 +1,82 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "extensions/browser/api/networking_config/networking_config_service_factory.h" |
| + |
| +#include <string> |
| + |
| +#include "components/keyed_service/content/browser_context_dependency_manager.h" |
| +#include "extensions/browser/api/networking_config/networking_config_service.h" |
| +#include "extensions/browser/extension_registry_factory.h" |
| +#include "extensions/browser/extension_system_provider.h" |
| +#include "extensions/browser/extensions_browser_client.h" |
| +#include "extensions/common/api/networking_config.h" |
| + |
| +namespace extensions { |
| + |
| +namespace { |
| + |
| +class DefaultEventDelegate : public NetworkingConfigService::EventDelegate { |
| + public: |
| + explicit DefaultEventDelegate(content::BrowserContext* context); |
| + ~DefaultEventDelegate() override; |
|
stevenjb
2015/01/29 17:51:35
WS
cschuet (SLOW)
2015/01/30 12:33:34
Done.
|
| + bool HasExtensionRegisteredForEvent( |
| + const std::string& extension_id) const override; |
| + |
| + private: |
| + content::BrowserContext* const context_; |
| +}; |
| + |
| +DefaultEventDelegate::DefaultEventDelegate(content::BrowserContext* context) |
| + : context_(context) { |
| +} |
| + |
| +DefaultEventDelegate::~DefaultEventDelegate() { |
| +} |
| + |
| +bool DefaultEventDelegate::HasExtensionRegisteredForEvent( |
| + const std::string& extension_id) const { |
| + return EventRouter::Get(context_)->ExtensionHasEventListener( |
| + extension_id, |
| + core_api::networking_config::OnCaptivePortalDetected::kEventName); |
| +} |
| + |
| +} // namespace |
| + |
| +// static |
| +NetworkingConfigService* NetworkingConfigServiceFactory::GetForBrowserContext( |
| + content::BrowserContext* context) { |
| + return static_cast<NetworkingConfigService*>( |
| + GetInstance()->GetServiceForBrowserContext(context, true)); |
| +} |
| + |
| +// static |
| +NetworkingConfigServiceFactory* NetworkingConfigServiceFactory::GetInstance() { |
| + return Singleton<NetworkingConfigServiceFactory>::get(); |
| +} |
| + |
| +NetworkingConfigServiceFactory::NetworkingConfigServiceFactory() |
| + : BrowserContextKeyedServiceFactory( |
| + "NetworkingConfigService", |
| + BrowserContextDependencyManager::GetInstance()) { |
| + DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); |
| + DependsOn(extensions::ExtensionRegistryFactory::GetInstance()); |
| +} |
| + |
| +NetworkingConfigServiceFactory::~NetworkingConfigServiceFactory() { |
| +} |
| + |
| +KeyedService* NetworkingConfigServiceFactory::BuildServiceInstanceFor( |
| + content::BrowserContext* context) const { |
| + return new NetworkingConfigService( |
| + make_scoped_ptr(new DefaultEventDelegate(context)), |
| + ExtensionRegistry::Get(context)); |
| +} |
| + |
| +content::BrowserContext* NetworkingConfigServiceFactory::GetBrowserContextToUse( |
| + content::BrowserContext* context) const { |
| + return ExtensionsBrowserClient::Get()->GetOriginalContext(context); |
| +} |
| + |
| +} // namespace extensions |