Index: ash/wm/window_state_util.cc |
diff --git a/ash/wm/window_state_util.cc b/ash/wm/window_state_util.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e5d6f8e1cdd9cf4c3207e3cb1c805c9232712e53 |
--- /dev/null |
+++ b/ash/wm/window_state_util.cc |
@@ -0,0 +1,35 @@ |
+// Copyright 2014 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. |
+ |
+#include "ash/wm/window_state_util.h" |
+ |
+#include "ash/wm/window_state.h" |
+#include "ash/wm/window_state_delegate.h" |
+#include "ui/aura/client/aura_constants.h" |
+ |
+namespace ash { |
+namespace wm { |
+ |
+void ToggleFullScreen(wm::WindowState* window_state, |
+ WindowStateDelegate* delegate) { |
+ // Window which cannot be maximized should not be full screen'ed. |
+ // It can, however, be restored if it was full screen'ed. |
+ bool is_fullscreen = window_state->IsFullscreen(); |
+ if (!is_fullscreen && !window_state->CanMaximize()) |
+ return; |
+ |
+ if (delegate && delegate->ToggleFullscreen(window_state)) |
+ return; |
+ |
+ if (is_fullscreen) { |
+ window_state->Restore(); |
+ } else { |
+ // Set the property to activate full screen. |
+ window_state->window()->SetProperty(aura::client::kShowStateKey, |
+ ui::SHOW_STATE_FULLSCREEN); |
+ } |
+} |
+ |
+} // namespace wm |
+} // namespace ash |