| Index: apps/shell_window_geometry_cache.h
|
| diff --git a/chrome/browser/extensions/shell_window_geometry_cache.h b/apps/shell_window_geometry_cache.h
|
| similarity index 73%
|
| rename from chrome/browser/extensions/shell_window_geometry_cache.h
|
| rename to apps/shell_window_geometry_cache.h
|
| index 5648b0d4b7b802a8346d7e67330b700bc6856a07..5b5bb1d1270fd0ff78a771634e98eb9016e0b0b3 100644
|
| --- a/chrome/browser/extensions/shell_window_geometry_cache.h
|
| +++ b/apps/shell_window_geometry_cache.h
|
| @@ -10,10 +10,12 @@
|
| #include <string>
|
|
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| +#include "base/memory/singleton.h"
|
| #include "base/time.h"
|
| #include "base/timer.h"
|
| #include "base/values.h"
|
| +#include "chrome/browser/profiles/profile_keyed_service.h"
|
| +#include "chrome/browser/profiles/profile_keyed_service_factory.h"
|
| #include "content/public/browser/notification_observer.h"
|
| #include "content/public/browser/notification_registrar.h"
|
| #include "ui/base/ui_base_types.h"
|
| @@ -22,21 +24,47 @@
|
| class Profile;
|
|
|
| namespace extensions {
|
| -
|
| class ExtensionPrefs;
|
| +}
|
| +
|
| +namespace apps {
|
|
|
| // A cache for persisted geometry of shell windows, both to not have to wait
|
| // for IO when creating a new window, and to not cause IO on every window
|
| // geometry change.
|
| class ShellWindowGeometryCache
|
| - : public base::SupportsWeakPtr<ShellWindowGeometryCache>,
|
| + : public ProfileKeyedService,
|
| public content::NotificationObserver {
|
| public:
|
| + class Factory : public ProfileKeyedServiceFactory {
|
| + public:
|
| + static ShellWindowGeometryCache* GetForContext(
|
| + content::BrowserContext* context,
|
| + bool create);
|
| +
|
| + static Factory* GetInstance();
|
| + private:
|
| + friend struct DefaultSingletonTraits<Factory>;
|
| +
|
| + Factory();
|
| + virtual ~Factory();
|
| +
|
| + // ProfileKeyedServiceFactory
|
| + virtual ProfileKeyedService* BuildServiceInstanceFor(
|
| + content::BrowserContext* context) const OVERRIDE;
|
| + virtual bool ServiceIsNULLWhileTesting() const OVERRIDE;
|
| + virtual content::BrowserContext* GetBrowserContextToUse(
|
| + content::BrowserContext* context) const OVERRIDE;
|
| + };
|
| +
|
| ShellWindowGeometryCache(Profile* profile,
|
| - ExtensionPrefs* prefs);
|
| + extensions::ExtensionPrefs* prefs);
|
|
|
| virtual ~ShellWindowGeometryCache();
|
|
|
| + // Returns the instance for the given browsing context.
|
| + static ShellWindowGeometryCache* Get(content::BrowserContext* context);
|
| +
|
| // Save the geometry and state associated with |extension_id| and |window_id|.
|
| void SaveGeometry(const std::string& extension_id,
|
| const std::string& window_id,
|
| @@ -51,6 +79,9 @@ class ShellWindowGeometryCache
|
| gfx::Rect* bounds,
|
| ui::WindowShowState* state) const;
|
|
|
| + // ProfileKeyedService
|
| + virtual void Shutdown() OVERRIDE;
|
| +
|
| // Maximum number of windows we'll cache the geometry for per app.
|
| static const size_t kMaxCachedWindows = 100;
|
|
|
| @@ -84,7 +115,7 @@ class ShellWindowGeometryCache
|
| void SyncToStorage();
|
|
|
| // Preferences storage.
|
| - ExtensionPrefs* prefs_;
|
| + extensions::ExtensionPrefs* prefs_;
|
|
|
| // Cached data
|
| std::map<std::string, ExtensionData> cache_;
|
| @@ -101,6 +132,6 @@ class ShellWindowGeometryCache
|
| content::NotificationRegistrar registrar_;
|
| };
|
|
|
| -} // namespace extensions
|
| +} // namespace apps
|
|
|
| #endif // CHROME_BROWSER_EXTENSIONS_SHELL_WINDOW_GEOMETRY_CACHE_H_
|
|
|