| 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 #ifndef CHROME_BROWSER_EXTENSIONS_SHELL_WINDOW_GEOMETRY_CACHE_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_SHELL_WINDOW_GEOMETRY_CACHE_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_SHELL_WINDOW_GEOMETRY_CACHE_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_SHELL_WINDOW_GEOMETRY_CACHE_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 | 62 |
| 63 virtual ~ShellWindowGeometryCache(); | 63 virtual ~ShellWindowGeometryCache(); |
| 64 | 64 |
| 65 // Returns the instance for the given browsing context. | 65 // Returns the instance for the given browsing context. |
| 66 static ShellWindowGeometryCache* Get(content::BrowserContext* context); | 66 static ShellWindowGeometryCache* Get(content::BrowserContext* context); |
| 67 | 67 |
| 68 // Save the geometry and state associated with |extension_id| and |window_id|. | 68 // Save the geometry and state associated with |extension_id| and |window_id|. |
| 69 void SaveGeometry(const std::string& extension_id, | 69 void SaveGeometry(const std::string& extension_id, |
| 70 const std::string& window_id, | 70 const std::string& window_id, |
| 71 const gfx::Rect& bounds, | 71 const gfx::Rect& bounds, |
| 72 const gfx::Rect& screen_bounds, |
| 72 ui::WindowShowState state); | 73 ui::WindowShowState state); |
| 73 | 74 |
| 74 // Get any saved geometry and state associated with |extension_id| and | 75 // Get any saved geometry and state associated with |extension_id| and |
| 75 // |window_id|. If saved data exists, sets |bounds| and |state| if not NULL | 76 // |window_id|. If saved data exists, sets |bounds| and |state| if not NULL |
| 76 // and returns true. | 77 // and returns true. |
| 77 bool GetGeometry(const std::string& extension_id, | 78 bool GetGeometry(const std::string& extension_id, |
| 78 const std::string& window_id, | 79 const std::string& window_id, |
| 79 gfx::Rect* bounds, | 80 gfx::Rect* bounds, |
| 81 gfx::Rect* screen_bounds, |
| 80 ui::WindowShowState* state); | 82 ui::WindowShowState* state); |
| 81 | 83 |
| 82 // BrowserContextKeyedService | 84 // BrowserContextKeyedService |
| 83 virtual void Shutdown() OVERRIDE; | 85 virtual void Shutdown() OVERRIDE; |
| 84 | 86 |
| 85 // Maximum number of windows we'll cache the geometry for per app. | 87 // Maximum number of windows we'll cache the geometry for per app. |
| 86 static const size_t kMaxCachedWindows = 100; | 88 static const size_t kMaxCachedWindows = 100; |
| 87 | 89 |
| 88 protected: | 90 protected: |
| 89 friend class ShellWindowGeometryCacheTest; | 91 friend class ShellWindowGeometryCacheTest; |
| 90 | 92 |
| 91 // For tests, this modifies the timeout delay for saving changes from calls | 93 // For tests, this modifies the timeout delay for saving changes from calls |
| 92 // to SaveGeometry. (Note that even if this is set to 0, you still need to | 94 // to SaveGeometry. (Note that even if this is set to 0, you still need to |
| 93 // run the message loop to see the results of any SyncToStorage call). | 95 // run the message loop to see the results of any SyncToStorage call). |
| 94 void SetSyncDelayForTests(int timeout_ms); | 96 void SetSyncDelayForTests(int timeout_ms); |
| 95 | 97 |
| 96 private: | 98 private: |
| 97 // Data stored for each window. | 99 // Data stored for each window. |
| 98 struct WindowData { | 100 struct WindowData { |
| 99 WindowData() : window_state(ui::SHOW_STATE_DEFAULT) {} | 101 WindowData(); |
| 102 ~WindowData(); |
| 100 gfx::Rect bounds; | 103 gfx::Rect bounds; |
| 104 gfx::Rect screen_bounds; |
| 101 ui::WindowShowState window_state; | 105 ui::WindowShowState window_state; |
| 102 base::Time last_change; | 106 base::Time last_change; |
| 103 }; | 107 }; |
| 104 | 108 |
| 105 // Data stored for each extension. | 109 // Data stored for each extension. |
| 106 typedef std::map<std::string, WindowData> ExtensionData; | 110 typedef std::map<std::string, WindowData> ExtensionData; |
| 107 | 111 |
| 108 // content::NotificationObserver | 112 // content::NotificationObserver |
| 109 virtual void Observe(int type, | 113 virtual void Observe(int type, |
| 110 const content::NotificationSource& source, | 114 const content::NotificationSource& source, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 128 | 132 |
| 129 // The timeout value we'll use for |sync_timer_|. | 133 // The timeout value we'll use for |sync_timer_|. |
| 130 base::TimeDelta sync_delay_; | 134 base::TimeDelta sync_delay_; |
| 131 | 135 |
| 132 content::NotificationRegistrar registrar_; | 136 content::NotificationRegistrar registrar_; |
| 133 }; | 137 }; |
| 134 | 138 |
| 135 } // namespace apps | 139 } // namespace apps |
| 136 | 140 |
| 137 #endif // CHROME_BROWSER_EXTENSIONS_SHELL_WINDOW_GEOMETRY_CACHE_H_ | 141 #endif // CHROME_BROWSER_EXTENSIONS_SHELL_WINDOW_GEOMETRY_CACHE_H_ |
| OLD | NEW |