diff options
author | smckay@chromium.org <smckay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-21 00:26:32 +0000 |
---|---|---|
committer | smckay@chromium.org <smckay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-21 00:26:32 +0000 |
commit | ab563ff06585024ba472e35a2944ed787202101c (patch) | |
tree | c2699a2f1a6224d93f14e19283db7a958d2d4ed9 /chrome/browser/custom_handlers/protocol_handler_registry_factory.cc | |
parent | 1f4bb9e8d93accfc080f62b419ca312d1f48f11e (diff) | |
download | chromium_src-ab563ff06585024ba472e35a2944ed787202101c.zip chromium_src-ab563ff06585024ba472e35a2944ed787202101c.tar.gz chromium_src-ab563ff06585024ba472e35a2944ed787202101c.tar.bz2 |
Convert ProtocolHandlerRegistry to be a ProfileKeyedService.
BUG=129200
TEST=protocol_handler_registry_browsertest.cc,protocol_handler_registry_unittest.cc
willchan@ -> profile_io changes
+bauerb -> content_settings changes
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=147597
Review URL: https://chromiumcodereview.appspot.com/10546083
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147745 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/custom_handlers/protocol_handler_registry_factory.cc')
-rw-r--r-- | chrome/browser/custom_handlers/protocol_handler_registry_factory.cc | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/chrome/browser/custom_handlers/protocol_handler_registry_factory.cc b/chrome/browser/custom_handlers/protocol_handler_registry_factory.cc new file mode 100644 index 0000000..8da041b --- /dev/null +++ b/chrome/browser/custom_handlers/protocol_handler_registry_factory.cc @@ -0,0 +1,67 @@ +// Copyright (c) 2012 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 "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" + +#include "base/memory/singleton.h" +#include "chrome/browser/custom_handlers/protocol_handler_registry.h" +#include "chrome/browser/extensions/extension_system_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_dependency_manager.h" + +// static +ProtocolHandlerRegistryFactory* ProtocolHandlerRegistryFactory::GetInstance() { + return Singleton<ProtocolHandlerRegistryFactory>::get(); +} + +// static +ProtocolHandlerRegistry* ProtocolHandlerRegistryFactory::GetForProfile( + Profile* profile) { + return static_cast<ProtocolHandlerRegistry*>( + GetInstance()->GetServiceForProfile(profile, true)); +} + +ProtocolHandlerRegistryFactory::ProtocolHandlerRegistryFactory() + : ProfileKeyedServiceFactory("ProtocolHandlerRegistry", + ProfileDependencyManager::GetInstance()) { +} + +ProtocolHandlerRegistryFactory::~ProtocolHandlerRegistryFactory() { +} + +// Will be created when initializing profile_io_data, so we might +// as well have the framework create this along with other +// PKSs to preserve orderly civic conduct :) +bool ProtocolHandlerRegistryFactory::ServiceIsCreatedWithProfile() { + return true; +} + +// Allows the produced registry to be used in incognito mode. +bool ProtocolHandlerRegistryFactory::ServiceRedirectedInIncognito() { + return true; +} + +// Do not create this service for tests. MANY tests will fail +// due to the threading requirements of this service. ALSO, +// not creating this increases test isolation (which is GOOD!) +bool ProtocolHandlerRegistryFactory::ServiceIsNULLWhileTesting() { + return true; +} + +ProfileKeyedService* ProtocolHandlerRegistryFactory::BuildServiceInstanceFor( + Profile* profile) const { + ProtocolHandlerRegistry* registry = new ProtocolHandlerRegistry( + profile, new ProtocolHandlerRegistry::Delegate()); + +#if defined(OS_CHROMEOS) + // If installing defaults, they must be installed prior calling + // InitProtocolSettings + registry->InstallDefaultsForChromeOS(); +#endif + + // Must be called as a part of the creation process. + registry->InitProtocolSettings(); + + return registry; +} |