window_state_util.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
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
3// found in the LICENSE file.
4
5#include "ash/wm/window_state_util.h"
6
7#include "ash/wm/window_state.h"
8#include "ash/wm/window_state_delegate.h"
9#include "ui/aura/client/aura_constants.h"
10
11namespace ash {
12namespace wm {
13
14void ToggleFullScreen(wm::WindowState* window_state,
15                      WindowStateDelegate* delegate) {
16  // Window which cannot be maximized should not be full screen'ed.
17  // It can, however, be restored if it was full screen'ed.
18  bool is_fullscreen = window_state->IsFullscreen();
19  if (!is_fullscreen && !window_state->CanMaximize())
20    return;
21
22  if (delegate && delegate->ToggleFullscreen(window_state))
23    return;
24
25  if (is_fullscreen) {
26    window_state->Restore();
27  } else {
28    // Set the property to activate full screen.
29    window_state->window()->SetProperty(aura::client::kShowStateKey,
30                                        ui::SHOW_STATE_FULLSCREEN);
31  }
32}
33
34}  // namespace wm
35}  // namespace ash
36