| Index: chrome/browser/sessions/session_restore_browsertest_chromeos.cc
|
| diff --git a/chrome/browser/sessions/session_restore_browsertest_chromeos.cc b/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
|
| index de48f66ddc7d65b5485acada0fb9b328f5a30cc7..096dc2b68df1310b64fda058c0a05c4e8ab3cc3f 100644
|
| --- a/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
|
| +++ b/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
|
| @@ -2,6 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "chrome/browser/sessions/session_restore.h"
|
| +
|
| #include <stddef.h>
|
|
|
| #include <list>
|
| @@ -78,9 +80,16 @@ class SessionRestoreTestChromeOS : public InProcessBrowserTest {
|
| browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
|
| }
|
|
|
| - Profile* profile() { return browser()->profile(); }
|
| + Profile* profile() {
|
| + if (!profile_)
|
| + profile_ = browser()->profile();
|
| +
|
| + return profile_;
|
| + }
|
|
|
| + private:
|
| std::list<Browser*> browser_list_;
|
| + Profile* profile_ = nullptr;
|
| };
|
|
|
| // Thse tests are in pairs. The PRE_ test creates some browser windows and
|
| @@ -203,3 +212,48 @@ IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS, RestoreMinimized) {
|
| // they have a browser running instead of just showing them an empty desktop.
|
| EXPECT_EQ(1u, minimized_count);
|
| }
|
| +
|
| +// Tests that restoring minimized session windows to the existing browser should
|
| +// keep consistent minimized window counts.
|
| +IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS,
|
| + PRE_RestoreSessionWindowsToExistingBrowser) {
|
| + // One browser window is always created by default.
|
| + ASSERT_TRUE(browser());
|
| + browser()->window()->Minimize();
|
| +
|
| + Browser* browser2 =
|
| + CreateBrowserWithParams(Browser::CreateParams(profile(), true));
|
| + browser2->window()->Minimize();
|
| +
|
| + Browser* browser3 =
|
| + CreateBrowserWithParams(Browser::CreateParams(profile(), true));
|
| + browser3->window()->Minimize();
|
| +
|
| + EXPECT_TRUE(browser()->window()->IsMinimized());
|
| + EXPECT_TRUE(browser2->window()->IsMinimized());
|
| + EXPECT_TRUE(browser3->window()->IsMinimized());
|
| +
|
| + // Do not turn on startup session restore.
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS,
|
| + RestoreSessionWindowsToExistingBrowser) {
|
| + // By default, there will be one browser window opened.
|
| + ASSERT_EQ(1u, BrowserList::GetInstance()->size());
|
| + Browser* default_browser = BrowserList::GetInstance()->GetLastActive();
|
| +
|
| + SessionRestore::RestoreSession(
|
| + profile(), default_browser,
|
| + SessionRestore::CLOBBER_CURRENT_TAB | SessionRestore::SYNCHRONOUS,
|
| + std::vector<GURL>());
|
| +
|
| + size_t total_count = 0;
|
| + size_t minimized_count = 0;
|
| + for (auto* browser : *BrowserList::GetInstance()) {
|
| + ++total_count;
|
| + if (browser->window()->IsMinimized())
|
| + ++minimized_count;
|
| + }
|
| + EXPECT_EQ(3u, total_count);
|
| + EXPECT_EQ(2u, minimized_count);
|
| +}
|
|
|