1 // Copyright 2017 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 "chromeos/ui/base/window_state_type.h"
6 
7 #include "base/notreached.h"
8 
9 namespace chromeos {
10 
operator <<(std::ostream & stream,WindowStateType state)11 std::ostream& operator<<(std::ostream& stream, WindowStateType state) {
12   switch (state) {
13     case WindowStateType::kDefault:
14       return stream << "kDefault";
15     case WindowStateType::kNormal:
16       return stream << "kNormal";
17     case WindowStateType::kMinimized:
18       return stream << "kMinimized";
19     case WindowStateType::kMaximized:
20       return stream << "kMaximized";
21     case WindowStateType::kInactive:
22       return stream << "kInactive";
23     case WindowStateType::kFullscreen:
24       return stream << "kFullscreen";
25     case WindowStateType::kLeftSnapped:
26       return stream << "kLeftSnapped";
27     case WindowStateType::kRightSnapped:
28       return stream << "kRightSnapped";
29     case WindowStateType::kAutoPositioned:
30       return stream << "kAutoPositioned";
31     case WindowStateType::kPinned:
32       return stream << "kPinned";
33     case WindowStateType::kTrustedPinned:
34       return stream << "kTrustedPinned";
35     case WindowStateType::kPip:
36       return stream << "kPip";
37   }
38 
39   NOTREACHED();
40   return stream;
41 }
42 
ToWindowStateType(ui::WindowShowState state)43 WindowStateType ToWindowStateType(ui::WindowShowState state) {
44   switch (state) {
45     case ui::SHOW_STATE_DEFAULT:
46       return WindowStateType::kDefault;
47     case ui::SHOW_STATE_NORMAL:
48       return WindowStateType::kNormal;
49     case ui::SHOW_STATE_MINIMIZED:
50       return WindowStateType::kMinimized;
51     case ui::SHOW_STATE_MAXIMIZED:
52       return WindowStateType::kMaximized;
53     case ui::SHOW_STATE_INACTIVE:
54       return WindowStateType::kInactive;
55     case ui::SHOW_STATE_FULLSCREEN:
56       return WindowStateType::kFullscreen;
57     case ui::SHOW_STATE_END:
58       NOTREACHED();
59       return WindowStateType::kDefault;
60   }
61 }
62 
ToWindowShowState(WindowStateType type)63 ui::WindowShowState ToWindowShowState(WindowStateType type) {
64   switch (type) {
65     case WindowStateType::kDefault:
66       return ui::SHOW_STATE_DEFAULT;
67     case WindowStateType::kNormal:
68     case WindowStateType::kRightSnapped:
69     case WindowStateType::kLeftSnapped:
70     case WindowStateType::kAutoPositioned:
71     case WindowStateType::kPip:
72       return ui::SHOW_STATE_NORMAL;
73 
74     case WindowStateType::kMinimized:
75       return ui::SHOW_STATE_MINIMIZED;
76     case WindowStateType::kMaximized:
77       return ui::SHOW_STATE_MAXIMIZED;
78     case WindowStateType::kInactive:
79       return ui::SHOW_STATE_INACTIVE;
80     case WindowStateType::kFullscreen:
81     case WindowStateType::kPinned:
82     case WindowStateType::kTrustedPinned:
83       return ui::SHOW_STATE_FULLSCREEN;
84   }
85   NOTREACHED();
86   return ui::SHOW_STATE_DEFAULT;
87 }
88 
IsFullscreenOrPinnedWindowStateType(WindowStateType type)89 bool IsFullscreenOrPinnedWindowStateType(WindowStateType type) {
90   return type == WindowStateType::kFullscreen ||
91          type == WindowStateType::kPinned ||
92          type == WindowStateType::kTrustedPinned;
93 }
94 
IsMaximizedOrFullscreenOrPinnedWindowStateType(WindowStateType type)95 bool IsMaximizedOrFullscreenOrPinnedWindowStateType(WindowStateType type) {
96   return type == WindowStateType::kMaximized ||
97          IsFullscreenOrPinnedWindowStateType(type);
98 }
99 
IsMinimizedWindowStateType(WindowStateType type)100 bool IsMinimizedWindowStateType(WindowStateType type) {
101   return type == WindowStateType::kMinimized;
102 }
103 
IsNormalWindowStateType(WindowStateType type)104 bool IsNormalWindowStateType(WindowStateType type) {
105   return type == WindowStateType::kNormal || type == WindowStateType::kDefault;
106 }
107 
IsValidWindowStateType(int64_t value)108 bool IsValidWindowStateType(int64_t value) {
109   return value == int64_t(WindowStateType::kDefault) ||
110          value == int64_t(WindowStateType::kNormal) ||
111          value == int64_t(WindowStateType::kMinimized) ||
112          value == int64_t(WindowStateType::kMaximized) ||
113          value == int64_t(WindowStateType::kInactive) ||
114          value == int64_t(WindowStateType::kFullscreen) ||
115          value == int64_t(WindowStateType::kLeftSnapped) ||
116          value == int64_t(WindowStateType::kRightSnapped) ||
117          value == int64_t(WindowStateType::kAutoPositioned) ||
118          value == int64_t(WindowStateType::kPinned) ||
119          value == int64_t(WindowStateType::kTrustedPinned) ||
120          value == int64_t(WindowStateType::kPip);
121 }
122 
123 }  // namespace chromeos
124