| 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/geolocation/geolocation_permission_context_factory.h" | 5 #include "chrome/browser/geolocation/geolocation_permission_context_factory.h" |
| 6 | 6 |
| 7 #include "chrome/browser/profiles/incognito_helpers.h" | 7 #include "chrome/browser/profiles/incognito_helpers.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/common/pref_names.h" | 9 #include "chrome/common/pref_names.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 "components/pref_registry/pref_registry_syncable.h" | 11 #include "components/pref_registry/pref_registry_syncable.h" |
| 12 #if defined(OS_ANDROID) | 12 #if defined(OS_ANDROID) |
| 13 #include "chrome/browser/geolocation/geolocation_permission_context_android.h" | 13 #include "chrome/browser/geolocation/geolocation_permission_context_android.h" |
| 14 #else | 14 #else |
| 15 #include "chrome/browser/geolocation/geolocation_permission_context.h" | 15 #include "chrome/browser/geolocation/geolocation_permission_context.h" |
| 16 #endif | 16 #endif |
| 17 | 17 |
| 18 namespace { | |
| 19 | |
| 20 class Service : public KeyedService { | |
| 21 public: | |
| 22 explicit Service(Profile* profile) { | |
| 23 #if defined(OS_ANDROID) | |
| 24 context_ = new GeolocationPermissionContextAndroid(profile); | |
| 25 #else | |
| 26 context_ = new GeolocationPermissionContext(profile); | |
| 27 #endif | |
| 28 } | |
| 29 | |
| 30 GeolocationPermissionContext* context() { | |
| 31 return context_.get(); | |
| 32 } | |
| 33 | |
| 34 virtual void Shutdown() OVERRIDE { | |
| 35 context()->ShutdownOnUIThread(); | |
| 36 } | |
| 37 | |
| 38 private: | |
| 39 scoped_refptr<GeolocationPermissionContext> context_; | |
| 40 | |
| 41 DISALLOW_COPY_AND_ASSIGN(Service); | |
| 42 }; | |
| 43 | |
| 44 } // namespace | |
| 45 | 18 |
| 46 // static | 19 // static |
| 47 GeolocationPermissionContext* | 20 GeolocationPermissionContext* |
| 48 GeolocationPermissionContextFactory::GetForProfile(Profile* profile) { | 21 GeolocationPermissionContextFactory::GetForProfile(Profile* profile) { |
| 49 return static_cast<Service*>( | 22 return static_cast<GeolocationPermissionContext*>( |
| 50 GetInstance()->GetServiceForBrowserContext(profile, true))->context(); | 23 GetInstance()->GetServiceForBrowserContext(profile, true)); |
| 51 } | 24 } |
| 52 | 25 |
| 53 // static | 26 // static |
| 54 GeolocationPermissionContextFactory* | 27 GeolocationPermissionContextFactory* |
| 55 GeolocationPermissionContextFactory::GetInstance() { | 28 GeolocationPermissionContextFactory::GetInstance() { |
| 56 return Singleton<GeolocationPermissionContextFactory>::get(); | 29 return Singleton<GeolocationPermissionContextFactory>::get(); |
| 57 } | 30 } |
| 58 | 31 |
| 32 #if !defined(OS_ANDROID) |
| 59 GeolocationPermissionContextFactory::GeolocationPermissionContextFactory() | 33 GeolocationPermissionContextFactory::GeolocationPermissionContextFactory() |
| 60 : BrowserContextKeyedServiceFactory( | 34 : BrowserContextKeyedServiceFactory( |
| 61 "GeolocationPermissionContext", | 35 "GeolocationPermissionContext", |
| 62 BrowserContextDependencyManager::GetInstance()) { | 36 BrowserContextDependencyManager::GetInstance()) { |
| 63 } | 37 } |
| 38 #else |
| 39 GeolocationPermissionContextFactory::GeolocationPermissionContextFactory() |
| 40 : BrowserContextKeyedServiceFactory( |
| 41 "GeolocationPermissionContextAndroid", |
| 42 BrowserContextDependencyManager::GetInstance()) { |
| 43 } |
| 44 #endif |
| 45 |
| 64 | 46 |
| 65 GeolocationPermissionContextFactory::~GeolocationPermissionContextFactory() { | 47 GeolocationPermissionContextFactory::~GeolocationPermissionContextFactory() { |
| 66 } | 48 } |
| 67 | 49 |
| 68 KeyedService* | 50 KeyedService* |
| 69 GeolocationPermissionContextFactory::BuildServiceInstanceFor( | 51 GeolocationPermissionContextFactory::BuildServiceInstanceFor( |
| 70 content::BrowserContext* profile) const { | 52 content::BrowserContext* profile) const { |
| 71 return new Service(static_cast<Profile*>(profile)); | 53 #if !defined(OS_ANDROID) |
| 54 return new GeolocationPermissionContext(static_cast<Profile*>(profile)); |
| 55 #else |
| 56 return new GeolocationPermissionContextAndroid( |
| 57 static_cast<Profile*>(profile)); |
| 58 #endif |
| 72 } | 59 } |
| 73 | 60 |
| 74 void GeolocationPermissionContextFactory::RegisterProfilePrefs( | 61 void GeolocationPermissionContextFactory::RegisterProfilePrefs( |
| 75 user_prefs::PrefRegistrySyncable* registry) { | 62 user_prefs::PrefRegistrySyncable* registry) { |
| 76 #if defined(OS_ANDROID) | 63 #if defined(OS_ANDROID) |
| 77 registry->RegisterBooleanPref( | 64 registry->RegisterBooleanPref( |
| 78 prefs::kGeolocationEnabled, | 65 prefs::kGeolocationEnabled, |
| 79 true, | 66 true, |
| 80 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 67 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 81 #endif | 68 #endif |
| 82 } | 69 } |
| 83 | 70 |
| 84 content::BrowserContext* | 71 content::BrowserContext* |
| 85 GeolocationPermissionContextFactory::GetBrowserContextToUse( | 72 GeolocationPermissionContextFactory::GetBrowserContextToUse( |
| 86 content::BrowserContext* context) const { | 73 content::BrowserContext* context) const { |
| 87 return chrome::GetBrowserContextOwnInstanceInIncognito(context); | 74 return chrome::GetBrowserContextOwnInstanceInIncognito(context); |
| 88 } | 75 } |
| OLD | NEW |