Index: chrome/browser/resources/chromeos/wallpaper_manager/js/window_state_manager.js |
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/window_state_manager.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/window_state_manager.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9c5836872828534c70ecc7c1449d0dcbd6affc61 |
--- /dev/null |
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/window_state_manager.js |
@@ -0,0 +1,57 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+function WindowStateManager() { |
+ this.savedWindow = []; |
+} |
+ |
+/** |
+ * Minimize all opening windows and save their states. |
+ */ |
+WindowStateManager.prototype.saveStates = function() { |
+ var focusedWindowId; |
+ chrome.windows.getLastFocused(function(focusedWindow) { |
+ focusedWindowId = focusedWindow.id; |
+ }); |
+ var self = this; |
+ chrome.windows.getAll(null, function(windows) { |
+ for (var i in windows) { |
+ if (windows[i].state != 'minimized' && |
+ windows[i].id != focusedWindowId) { |
+ self.savedWindow.push(windows[i]); |
+ chrome.windows.update(windows[i].id, {'state': 'minimized'}, |
+ function() {}); |
+ } |
+ } |
+ }); |
+}; |
+ |
+/** |
+ * Restore the states of all windows. |
+ */ |
+WindowStateManager.prototype.restoreStates = function() { |
+ for (var i in this.savedWindow) { |
+ var state = this.savedWindow[i].state; |
+ chrome.windows.update(this.savedWindow[i].id, {'state': state}, |
+ function() {}); |
+ } |
+}; |
+ |
+/** |
+ * Remove the saved state of the current focused window. |
+ * @param {integer} windowId The ID of the window. |
+ */ |
+WindowStateManager.prototype.removeSavedState = function(windowId) { |
+ for (var i in this.savedWindow) { |
+ if (windowId == this.savedWindow[i].id) |
+ this.savedWindow.splice(i, 1); |
+ } |
+}; |
+ |
+var windowStateManager = new WindowStateManager(); |
+ |
+// If a window gets focused before wallpaper manager close. The saved state |
+// is no longer correct. |
+chrome.windows.onFocusChanged.addListener( |
+ windowStateManager.removeSavedState.bind(windowStateManager)); |