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 |