Index: chrome/browser/media/chrome_midi_permission_context_factory.cc |
diff --git a/chrome/browser/media/chrome_midi_permission_context_factory.cc b/chrome/browser/media/chrome_midi_permission_context_factory.cc |
index 85b0c79392bd89b3a332c4cb8bdd3bb269e05f7b..d124abd7d65ce2aba05afac8700dd686d48c2891 100644 |
--- a/chrome/browser/media/chrome_midi_permission_context_factory.cc |
+++ b/chrome/browser/media/chrome_midi_permission_context_factory.cc |
@@ -9,11 +9,35 @@ |
#include "chrome/browser/profiles/profile.h" |
#include "components/browser_context_keyed_service/browser_context_dependency_manager.h" |
+namespace { |
+ |
+class Service : public BrowserContextKeyedService { |
+ public: |
+ explicit Service(Profile* profile) { |
+ context_ = new ChromeMIDIPermissionContext(profile); |
+ } |
+ |
+ ChromeMIDIPermissionContext* context() { |
+ return context_.get(); |
+ } |
+ |
+ virtual void Shutdown() OVERRIDE { |
+ context()->ShutdownOnUIThread(); |
+ } |
+ |
+ private: |
+ scoped_refptr<ChromeMIDIPermissionContext> context_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Service); |
+}; |
+ |
+} // namespace |
+ |
// static |
ChromeMIDIPermissionContext* |
ChromeMIDIPermissionContextFactory::GetForProfile(Profile* profile) { |
- return static_cast<ChromeMIDIPermissionContext*>( |
- GetInstance()->GetServiceForBrowserContext(profile, true)); |
+ return static_cast<Service*>( |
+ GetInstance()->GetServiceForBrowserContext(profile, true))->context(); |
} |
// static |
@@ -36,7 +60,7 @@ ChromeMIDIPermissionContextFactory:: |
BrowserContextKeyedService* |
ChromeMIDIPermissionContextFactory::BuildServiceInstanceFor( |
content::BrowserContext* profile) const { |
- return new ChromeMIDIPermissionContext(static_cast<Profile*>(profile)); |
+ return new Service(static_cast<Profile*>(profile)); |
} |
content::BrowserContext* |