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 "chrome/browser/ui/browser_window_state.h"
6
7 #include "base/command_line.h"
8 #include "chrome/common/chrome_switches.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/base/ui_base_types.h"
11 #include "ui/gfx/geometry/rect.h"
12
13 namespace chrome {
14
15 namespace internal {
16
17 namespace {
18
19 constexpr int kDefaultWidth = 1920;
20 constexpr int kDefaultHeight = 1200;
21 constexpr int kDefaultOffsetX = 0;
22 constexpr int kDefaultOffsetY = 0;
23 constexpr ui::WindowShowState kDefaultShowState = ui::SHOW_STATE_MAXIMIZED;
24
25 class BrowserWindowStateTest : public testing::Test {
26 public:
BrowserWindowStateTest()27 BrowserWindowStateTest()
28 : bounds_(gfx::Point(kDefaultOffsetX, kDefaultOffsetY),
29 gfx::Size(kDefaultWidth, kDefaultHeight)),
30 show_state_(kDefaultShowState),
31 command_line_(base::CommandLine::NO_PROGRAM) {}
32
33 gfx::Rect bounds_;
34 ui::WindowShowState show_state_;
35 base::CommandLine command_line_;
36 };
37
38 } // namespace
39
TEST_F(BrowserWindowStateTest,NoCommandLineLeavesParamsIntact)40 TEST_F(BrowserWindowStateTest, NoCommandLineLeavesParamsIntact) {
41 UpdateWindowBoundsAndShowStateFromCommandLine(command_line_, &bounds_,
42 &show_state_);
43 EXPECT_EQ(bounds_.x(), kDefaultOffsetX);
44 EXPECT_EQ(bounds_.y(), kDefaultOffsetY);
45 EXPECT_EQ(bounds_.width(), kDefaultWidth);
46 EXPECT_EQ(bounds_.height(), kDefaultHeight);
47 EXPECT_EQ(show_state_, kDefaultShowState);
48 }
49
TEST_F(BrowserWindowStateTest,InvalidCommandLineLeavesParamsIntact)50 TEST_F(BrowserWindowStateTest, InvalidCommandLineLeavesParamsIntact) {
51 command_line_.AppendSwitchASCII(switches::kWindowSize, "0,abc");
52 command_line_.AppendSwitchASCII(switches::kWindowPosition, "invalid");
53
54 UpdateWindowBoundsAndShowStateFromCommandLine(command_line_, &bounds_,
55 &show_state_);
56 EXPECT_EQ(bounds_.x(), kDefaultOffsetX);
57 EXPECT_EQ(bounds_.y(), kDefaultOffsetY);
58 EXPECT_EQ(bounds_.width(), kDefaultWidth);
59 EXPECT_EQ(bounds_.height(), kDefaultHeight);
60 EXPECT_EQ(show_state_, kDefaultShowState);
61 }
62
TEST_F(BrowserWindowStateTest,WindowSizeOverridesShowState)63 TEST_F(BrowserWindowStateTest, WindowSizeOverridesShowState) {
64 command_line_.AppendSwitchASCII(switches::kWindowSize, "100,200");
65
66 UpdateWindowBoundsAndShowStateFromCommandLine(command_line_, &bounds_,
67 &show_state_);
68 EXPECT_EQ(bounds_.x(), kDefaultOffsetX);
69 EXPECT_EQ(bounds_.y(), kDefaultOffsetY);
70 EXPECT_EQ(bounds_.width(), 100);
71 EXPECT_EQ(bounds_.height(), 200);
72 EXPECT_EQ(show_state_, ui::SHOW_STATE_NORMAL);
73 }
74
TEST_F(BrowserWindowStateTest,WindowPositionOverridesShowState)75 TEST_F(BrowserWindowStateTest, WindowPositionOverridesShowState) {
76 command_line_.AppendSwitchASCII(switches::kWindowPosition, "100,200");
77
78 UpdateWindowBoundsAndShowStateFromCommandLine(command_line_, &bounds_,
79 &show_state_);
80 EXPECT_EQ(bounds_.x(), 100);
81 EXPECT_EQ(bounds_.y(), 200);
82 EXPECT_EQ(bounds_.width(), kDefaultWidth);
83 EXPECT_EQ(bounds_.height(), kDefaultHeight);
84 EXPECT_EQ(show_state_, ui::SHOW_STATE_NORMAL);
85 }
86
87 } // namespace internal
88
89 } // namespace chrome
90