172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/command_line.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_util.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/test/test_file_util.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/values.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_temp_dir.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "build/build_config.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/chrome_constants.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/chrome_switches.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/pref_names.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/automation/browser_proxy.h"
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/automation/window_proxy.h"
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/ui/ui_test.h"
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/json_value_serializer.h"
2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/rect.h"
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PreferenceServiceTest : public UITest {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void SetUp() {
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    FilePath tmp_profile = temp_dir_.path().AppendASCII("tmp_profile");
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ASSERT_TRUE(file_util::CreateDirectory(tmp_profile));
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    FilePath reference_pref_file;
3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    if (new_profile_) {
3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      reference_pref_file = test_data_directory_
3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen          .AppendASCII("profiles")
3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen          .AppendASCII("window_placement")
3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen          .AppendASCII("Default")
3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen          .Append(chrome::kPreferencesFilename);
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      tmp_pref_file_ = tmp_profile.AppendASCII("Default");
3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      ASSERT_TRUE(file_util::CreateDirectory(tmp_pref_file_));
3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      tmp_pref_file_ = tmp_pref_file_.Append(chrome::kPreferencesFilename);
4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    } else {
4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      reference_pref_file = test_data_directory_
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            .AppendASCII("profiles")
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            .AppendASCII("window_placement")
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            .Append(chrome::kLocalStateFilename);
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      tmp_pref_file_ = tmp_profile.Append(chrome::kLocalStateFilename);
4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    }
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_TRUE(file_util::PathExists(reference_pref_file));
4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    // Copy only the Preferences file if |new_profile_|, or Local State if not,
5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    // and the rest will be automatically created.
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_TRUE(file_util::CopyFile(reference_pref_file, tmp_pref_file_));
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_WIN)
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // Make the copy writable.  On POSIX we assume the umask allows files
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // we create to be writable.
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_TRUE(::SetFileAttributesW(tmp_pref_file_.value().c_str(),
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        FILE_ATTRIBUTE_NORMAL));
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    launch_arguments_.AppendSwitchPath(switches::kUserDataDir, tmp_profile);
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool LaunchAppWithProfile() {
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (!file_util::PathExists(tmp_pref_file_))
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      return false;
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    UITest::SetUp();
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return true;
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void TearDown() {
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    UITest::TearDown();
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  bool new_profile_;
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  FilePath tmp_pref_file_;
77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private:
79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ScopedTempDir temp_dir_;
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
8272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if !defined(OS_LINUX)
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This test verifies that the window position from the prefs file is restored
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// when the app restores.  This doesn't really make sense on Linux, where
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the window manager might fight with you over positioning.  However, we
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// might be able to make this work on buildbots.
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// TODO(port): revisit this.
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(PreferenceServiceTest, PreservedWindowPlacementIsLoaded) {
8972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // The window should open with the new reference profile, with window
9072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // placement values stored in the user data directory.
9172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  new_profile_ = true;
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(LaunchAppWithProfile());
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(file_util::PathExists(tmp_pref_file_));
95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  JSONFileValueSerializer deserializer(tmp_pref_file_);
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> root(deserializer.Deserialize(NULL, NULL));
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(root.get());
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(root->IsType(Value::TYPE_DICTIONARY));
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DictionaryValue* root_dict = static_cast<DictionaryValue*>(root.get());
103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Retrieve the screen rect for the launched window
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(browser.get());
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_refptr<WindowProxy> window(browser->GetWindow());
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(window.get());
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gfx::Rect bounds;
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(window->GetBounds(&bounds));
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Retrieve the expected rect values from "Preferences"
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int bottom = 0;
1153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string kBrowserWindowPlacement(prefs::kBrowserWindowPlacement);
1163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".bottom",
117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      &bottom));
118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(bottom, bounds.y() + bounds.height());
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int top = 0;
1213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".top",
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      &top));
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(top, bounds.y());
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int left = 0;
1263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".left",
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      &left));
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(left, bounds.x());
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int right = 0;
1313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".right",
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      &right));
133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(right, bounds.x() + bounds.width());
134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Find if launched window is maximized.
136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool is_window_maximized = false;
137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(window->IsMaximized(&is_window_maximized));
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool is_maximized = false;
1393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_TRUE(root_dict->GetBoolean(kBrowserWindowPlacement + ".maximized",
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      &is_maximized));
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(is_maximized, is_window_maximized);
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
14472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
14572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if !defined(OS_LINUX)
14672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(PreferenceServiceTest, PreservedWindowPlacementIsMigrated) {
14772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // The window should open with the old reference profile, with window
14872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // placement values stored in Local State.
14972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  new_profile_ = false;
15072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(LaunchAppWithProfile());
15172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
15272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(file_util::PathExists(tmp_pref_file_));
15372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
15472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  JSONFileValueSerializer deserializer(tmp_pref_file_);
15572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_ptr<Value> root(deserializer.Deserialize(NULL, NULL));
15672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
15772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(root.get());
15872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(root->IsType(Value::TYPE_DICTIONARY));
15972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
16072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Retrieve the screen rect for the launched window
16172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
16272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(browser.get());
16372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<WindowProxy> window(browser->GetWindow());
16472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(window.get());
16572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
16672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  gfx::Rect bounds;
16772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(window->GetBounds(&bounds));
16872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
16972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Values from old reference profile in Local State should have been
17072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // correctly migrated to the user's Preferences -- if so, the window
17172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // should be set to values taken from the user's Local State.
17272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  DictionaryValue* root_dict = static_cast<DictionaryValue*>(root.get());
17372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
17472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Retrieve the expected rect values from User Preferences, where they
17572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // should have been migrated from Local State.
17672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  int bottom = 0;
17772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  std::string kBrowserWindowPlacement(prefs::kBrowserWindowPlacement);
17872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".bottom",
17972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      &bottom));
18072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_EQ(bottom, bounds.y() + bounds.height());
18172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
18272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  int top = 0;
18372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".top",
18472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      &top));
18572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_EQ(top, bounds.y());
18672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
18772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  int left = 0;
18872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".left",
18972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      &left));
19072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_EQ(left, bounds.x());
19172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
19272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  int right = 0;
19372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_TRUE(root_dict->GetInteger(kBrowserWindowPlacement + ".right",
19472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      &right));
19572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_EQ(right, bounds.x() + bounds.width());
19672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
19772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Find if launched window is maximized.
19872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  bool is_window_maximized = false;
19972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(window->IsMaximized(&is_window_maximized));
20072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  bool is_maximized = false;
20172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_TRUE(root_dict->GetBoolean(kBrowserWindowPlacement + ".maximized",
20272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      &is_maximized));
20372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_EQ(is_maximized, is_window_maximized);
20472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
20572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif
20672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
207