| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "apps/app_window_geometry_cache.h" | 5 #include "extensions/browser/app_window/app_window_geometry_cache.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.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 "extensions/browser/extension_prefs.h" | 11 #include "extensions/browser/extension_prefs.h" |
| 12 #include "extensions/browser/extension_prefs_factory.h" | 12 #include "extensions/browser/extension_prefs_factory.h" |
| 13 #include "extensions/browser/extension_registry.h" | 13 #include "extensions/browser/extension_registry.h" |
| 14 #include "extensions/browser/extensions_browser_client.h" | 14 #include "extensions/browser/extensions_browser_client.h" |
| 15 #include "extensions/common/extension.h" | 15 #include "extensions/common/extension.h" |
| 16 | 16 |
| 17 namespace { | 17 namespace { |
| 18 | 18 |
| 19 // The timeout in milliseconds before we'll persist window geometry to the | 19 // The timeout in milliseconds before we'll persist window geometry to the |
| 20 // StateStore. | 20 // StateStore. |
| 21 const int kSyncTimeoutMilliseconds = 1000; | 21 const int kSyncTimeoutMilliseconds = 1000; |
| 22 | 22 |
| 23 } // namespace | 23 } // namespace |
| 24 | 24 |
| 25 namespace apps { | 25 namespace extensions { |
| 26 | 26 |
| 27 AppWindowGeometryCache::AppWindowGeometryCache( | 27 AppWindowGeometryCache::AppWindowGeometryCache(content::BrowserContext* context, |
| 28 content::BrowserContext* context, | 28 ExtensionPrefs* prefs) |
| 29 extensions::ExtensionPrefs* prefs) | |
| 30 : prefs_(prefs), | 29 : prefs_(prefs), |
| 31 sync_delay_(base::TimeDelta::FromMilliseconds(kSyncTimeoutMilliseconds)), | 30 sync_delay_(base::TimeDelta::FromMilliseconds(kSyncTimeoutMilliseconds)), |
| 32 extension_registry_observer_(this) { | 31 extension_registry_observer_(this) { |
| 33 extension_registry_observer_.Add(extensions::ExtensionRegistry::Get(context)); | 32 extension_registry_observer_.Add(ExtensionRegistry::Get(context)); |
| 34 } | 33 } |
| 35 | 34 |
| 36 AppWindowGeometryCache::~AppWindowGeometryCache() {} | 35 AppWindowGeometryCache::~AppWindowGeometryCache() {} |
| 37 | 36 |
| 38 // static | 37 // static |
| 39 AppWindowGeometryCache* AppWindowGeometryCache::Get( | 38 AppWindowGeometryCache* AppWindowGeometryCache::Get( |
| 40 content::BrowserContext* context) { | 39 content::BrowserContext* context) { |
| 41 return Factory::GetForContext(context, true /* create */); | 40 return Factory::GetForContext(context, true /* create */); |
| 42 } | 41 } |
| 43 | 42 |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 | 178 |
| 180 void AppWindowGeometryCache::Shutdown() { SyncToStorage(); } | 179 void AppWindowGeometryCache::Shutdown() { SyncToStorage(); } |
| 181 | 180 |
| 182 AppWindowGeometryCache::WindowData::WindowData() | 181 AppWindowGeometryCache::WindowData::WindowData() |
| 183 : window_state(ui::SHOW_STATE_DEFAULT) {} | 182 : window_state(ui::SHOW_STATE_DEFAULT) {} |
| 184 | 183 |
| 185 AppWindowGeometryCache::WindowData::~WindowData() {} | 184 AppWindowGeometryCache::WindowData::~WindowData() {} |
| 186 | 185 |
| 187 void AppWindowGeometryCache::OnExtensionLoaded( | 186 void AppWindowGeometryCache::OnExtensionLoaded( |
| 188 content::BrowserContext* browser_context, | 187 content::BrowserContext* browser_context, |
| 189 const extensions::Extension* extension) { | 188 const Extension* extension) { |
| 190 LoadGeometryFromStorage(extension->id()); | 189 LoadGeometryFromStorage(extension->id()); |
| 191 } | 190 } |
| 192 | 191 |
| 193 void AppWindowGeometryCache::OnExtensionUnloaded( | 192 void AppWindowGeometryCache::OnExtensionUnloaded( |
| 194 content::BrowserContext* browser_context, | 193 content::BrowserContext* browser_context, |
| 195 const extensions::Extension* extension, | 194 const Extension* extension, |
| 196 extensions::UnloadedExtensionInfo::Reason reason) { | 195 UnloadedExtensionInfo::Reason reason) { |
| 197 SyncToStorage(); | 196 SyncToStorage(); |
| 198 cache_.erase(extension->id()); | 197 cache_.erase(extension->id()); |
| 199 } | 198 } |
| 200 | 199 |
| 201 void AppWindowGeometryCache::SetSyncDelayForTests(int timeout_ms) { | 200 void AppWindowGeometryCache::SetSyncDelayForTests(int timeout_ms) { |
| 202 sync_delay_ = base::TimeDelta::FromMilliseconds(timeout_ms); | 201 sync_delay_ = base::TimeDelta::FromMilliseconds(timeout_ms); |
| 203 } | 202 } |
| 204 | 203 |
| 205 void AppWindowGeometryCache::LoadGeometryFromStorage( | 204 void AppWindowGeometryCache::LoadGeometryFromStorage( |
| 206 const std::string& extension_id) { | 205 const std::string& extension_id) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 | 267 |
| 269 AppWindowGeometryCache::Factory* | 268 AppWindowGeometryCache::Factory* |
| 270 AppWindowGeometryCache::Factory::GetInstance() { | 269 AppWindowGeometryCache::Factory::GetInstance() { |
| 271 return Singleton<AppWindowGeometryCache::Factory>::get(); | 270 return Singleton<AppWindowGeometryCache::Factory>::get(); |
| 272 } | 271 } |
| 273 | 272 |
| 274 AppWindowGeometryCache::Factory::Factory() | 273 AppWindowGeometryCache::Factory::Factory() |
| 275 : BrowserContextKeyedServiceFactory( | 274 : BrowserContextKeyedServiceFactory( |
| 276 "AppWindowGeometryCache", | 275 "AppWindowGeometryCache", |
| 277 BrowserContextDependencyManager::GetInstance()) { | 276 BrowserContextDependencyManager::GetInstance()) { |
| 278 DependsOn(extensions::ExtensionPrefsFactory::GetInstance()); | 277 DependsOn(ExtensionPrefsFactory::GetInstance()); |
| 279 } | 278 } |
| 280 | 279 |
| 281 AppWindowGeometryCache::Factory::~Factory() {} | 280 AppWindowGeometryCache::Factory::~Factory() {} |
| 282 | 281 |
| 283 KeyedService* AppWindowGeometryCache::Factory::BuildServiceInstanceFor( | 282 KeyedService* AppWindowGeometryCache::Factory::BuildServiceInstanceFor( |
| 284 content::BrowserContext* context) const { | 283 content::BrowserContext* context) const { |
| 285 return new AppWindowGeometryCache(context, | 284 return new AppWindowGeometryCache(context, ExtensionPrefs::Get(context)); |
| 286 extensions::ExtensionPrefs::Get(context)); | |
| 287 } | 285 } |
| 288 | 286 |
| 289 bool AppWindowGeometryCache::Factory::ServiceIsNULLWhileTesting() const { | 287 bool AppWindowGeometryCache::Factory::ServiceIsNULLWhileTesting() const { |
| 290 return false; | 288 return false; |
| 291 } | 289 } |
| 292 | 290 |
| 293 content::BrowserContext* | 291 content::BrowserContext* |
| 294 AppWindowGeometryCache::Factory::GetBrowserContextToUse( | 292 AppWindowGeometryCache::Factory::GetBrowserContextToUse( |
| 295 content::BrowserContext* context) const { | 293 content::BrowserContext* context) const { |
| 296 return extensions::ExtensionsBrowserClient::Get()->GetOriginalContext( | 294 return ExtensionsBrowserClient::Get()->GetOriginalContext(context); |
| 297 context); | |
| 298 } | 295 } |
| 299 | 296 |
| 300 void AppWindowGeometryCache::AddObserver(Observer* observer) { | 297 void AppWindowGeometryCache::AddObserver(Observer* observer) { |
| 301 observers_.AddObserver(observer); | 298 observers_.AddObserver(observer); |
| 302 } | 299 } |
| 303 | 300 |
| 304 void AppWindowGeometryCache::RemoveObserver(Observer* observer) { | 301 void AppWindowGeometryCache::RemoveObserver(Observer* observer) { |
| 305 observers_.RemoveObserver(observer); | 302 observers_.RemoveObserver(observer); |
| 306 } | 303 } |
| 307 | 304 |
| 308 } // namespace apps | 305 } // namespace extensions |
| OLD | NEW |