| 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); | 
| +} | 
|  |