Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: chrome/browser/extensions/extension_system_factory.h

Issue 118043003: Fix app_shell shutdown crash due to BrowserContextKeyedServices (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ScopedFactoryForTest (shutdown_crash) Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_
7 7
8 #include "base/memory/singleton.h" 8 #include "base/memory/singleton.h"
9 #include "chrome/browser/extensions/extension_system.h" 9 #include "chrome/browser/extensions/extension_system.h"
10 #include "components/browser_context_keyed_service/browser_context_keyed_service _factory.h" 10 #include "components/browser_context_keyed_service/browser_context_keyed_service _factory.h"
(...skipping 26 matching lines...) Expand all
37 }; 37 };
38 38
39 // BrowserContextKeyedServiceFactory for ExtensionSystem. 39 // BrowserContextKeyedServiceFactory for ExtensionSystem.
40 class ExtensionSystemFactory : public BrowserContextKeyedServiceFactory { 40 class ExtensionSystemFactory : public BrowserContextKeyedServiceFactory {
41 public: 41 public:
42 // BrowserContextKeyedServiceFactory implementation: 42 // BrowserContextKeyedServiceFactory implementation:
43 static ExtensionSystem* GetForProfile(Profile* profile); 43 static ExtensionSystem* GetForProfile(Profile* profile);
44 44
45 static ExtensionSystemFactory* GetInstance(); 45 static ExtensionSystemFactory* GetInstance();
46 46
47 // Provides a custom ExtensionSystem to use instead of building a new
48 // ExtensionSystemImpl. The BrowserContextKeyedService system takes ownership.
49 void SetCustomInstance(ExtensionSystem* extension_system);
50
51 private: 47 private:
52 friend struct DefaultSingletonTraits<ExtensionSystemFactory>; 48 friend struct DefaultSingletonTraits<ExtensionSystemFactory>;
53 49
54 ExtensionSystemFactory(); 50 ExtensionSystemFactory();
55 virtual ~ExtensionSystemFactory(); 51 virtual ~ExtensionSystemFactory();
56 52
57 virtual BrowserContextKeyedService* BuildServiceInstanceFor( 53 virtual BrowserContextKeyedService* BuildServiceInstanceFor(
58 content::BrowserContext* profile) const OVERRIDE; 54 content::BrowserContext* profile) const OVERRIDE;
59 virtual content::BrowserContext* GetBrowserContextToUse( 55 virtual content::BrowserContext* GetBrowserContextToUse(
60 content::BrowserContext* context) const OVERRIDE; 56 content::BrowserContext* context) const OVERRIDE;
61 virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE; 57 virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE;
62
63 ExtensionSystem* custom_instance_; // Not owned.
64 }; 58 };
65 59
66 } // namespace extensions 60 } // namespace extensions
67 61
68 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_ 62 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_
OLDNEW
« no previous file with comments | « chrome/browser/extensions/chrome_extensions_browser_client.cc ('k') | chrome/browser/extensions/extension_system_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698