10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/ui/settings_window_manager.h"
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/command_line.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h"
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/files/scoped_temp_dir.h"
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/browser_process.h"
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/chrome_notification_types.h"
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/profiles/profile_manager.h"
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/ui/browser.h"
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/ui/browser_finder.h"
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/ui/browser_iterator.h"
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/ui/browser_window.h"
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/ui/chrome_pages.h"
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/ui/settings_window_manager_observer.h"
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/common/chrome_switches.h"
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/common/url_constants.h"
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/test/base/in_process_browser_test.h"
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/public/browser/notification_service.h"
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/public/test/test_utils.h"
24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "url/gurl.h"
250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace {
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass SettingsWindowTestObserver
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    : public chrome::SettingsWindowManagerObserver {
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public:
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  SettingsWindowTestObserver() : browser_(NULL), new_settings_count_(0) {}
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual ~SettingsWindowTestObserver() {}
330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void OnNewSettingsWindow(Browser* settings_browser) OVERRIDE {
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    browser_ = settings_browser;
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    ++new_settings_count_;
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  }
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Browser* browser() { return browser_; }
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  size_t new_settings_count() const { return new_settings_count_; }
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private:
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Browser* browser_;
440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  size_t new_settings_count_;
450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(SettingsWindowTestObserver);
470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace
500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass SettingsWindowManagerTest : public InProcessBrowserTest {
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public:
53010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  SettingsWindowManagerTest()
54010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      : settings_manager_(chrome::SettingsWindowManager::GetInstance()),
55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        test_profile_(NULL) {
56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    settings_manager_->AddObserver(&observer_);
570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  }
580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual ~SettingsWindowManagerTest() {
59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    settings_manager_->RemoveObserver(&observer_);
600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  }
610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    command_line->AppendSwitch(::switches::kEnableSettingsWindow);
640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  }
650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Profile* CreateTestProfile() {
670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    CHECK(!test_profile_);
680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    ProfileManager* profile_manager = g_browser_process->profile_manager();
700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    base::RunLoop run_loop;
710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    profile_manager->CreateProfileAsync(
720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        profile_manager->GenerateNextProfileDirectoryPath(),
730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        base::Bind(&SettingsWindowManagerTest::ProfileInitialized,
740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                   base::Unretained(this),
750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                   run_loop.QuitClosure()),
760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        base::string16(),
770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        base::string16(),
780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        std::string());
790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    run_loop.Run();
800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    return test_profile_;
820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  }
830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
840529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void ProfileInitialized(const base::Closure& closure,
850529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                          Profile* profile,
860529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                          Profile::CreateStatus status) {
870529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    if (status == Profile::CREATE_STATUS_INITIALIZED) {
880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      test_profile_ = profile;
890529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      closure.Run();
900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    }
910529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  }
920529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
93010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  void ShowSettingsForProfile(Profile* profile) {
94010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    settings_manager_->ShowChromePageForProfile(
95010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        profile, GURL(chrome::kChromeUISettingsURL));
96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  }
97010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void CloseBrowserSynchronously(Browser* browser) {
990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    content::WindowedNotificationObserver observer(
1000529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        chrome::NOTIFICATION_BROWSER_CLOSED,
1010529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        content::NotificationService::AllSources());
1020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    browser->window()->Close();
1030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    observer.Wait();
1040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  }
1050529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  void CloseNonDefaultBrowsers() {
107010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    std::list<Browser*> browsers_to_close;
108010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    for (chrome::BrowserIterator it; !it.done(); it.Next()) {
109010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      if (*it != browser())
110010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        browsers_to_close.push_back(*it);
111010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    }
112010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    for (std::list<Browser*>::iterator iter = browsers_to_close.begin();
113010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)         iter != browsers_to_close.end(); ++iter) {
114010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      CloseBrowserSynchronously(*iter);
115010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    }
116010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  }
117010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
1180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch protected:
119010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  chrome::SettingsWindowManager* settings_manager_;
1200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  SettingsWindowTestObserver observer_;
1210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  base::ScopedTempDir temp_profile_dir_;
1220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Profile* test_profile_;  // Owned by g_browser_process->profile_manager()
1230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(SettingsWindowManagerTest);
1250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
1260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1280529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochIN_PROC_BROWSER_TEST_F(SettingsWindowManagerTest, OpenSettingsWindow) {
1290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Open a settings window.
130010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ShowSettingsForProfile(browser()->profile());
1310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Browser* settings_browser =
132010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      settings_manager_->FindBrowserForProfile(browser()->profile());
1330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ASSERT_TRUE(settings_browser);
1340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Ensure the observer fired correctly.
1350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(1u, observer_.new_settings_count());
1360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(settings_browser, observer_.browser());
1370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Open the settings again: no new window.
139010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ShowSettingsForProfile(browser()->profile());
1400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(settings_browser,
141010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)            settings_manager_->FindBrowserForProfile(browser()->profile()));
1420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(1u, observer_.new_settings_count());
1430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Close the settings window.
1450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  CloseBrowserSynchronously(settings_browser);
146010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_FALSE(settings_manager_->FindBrowserForProfile(browser()->profile()));
1470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Open a new settings window.
149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ShowSettingsForProfile(browser()->profile());
1500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Browser* settings_browser2 =
151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      settings_manager_->FindBrowserForProfile(browser()->profile());
1520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ASSERT_TRUE(settings_browser2);
1530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(2u, observer_.new_settings_count());
1540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  CloseBrowserSynchronously(settings_browser2);
1560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
1570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#if !defined(OS_CHROMEOS)
1590529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochIN_PROC_BROWSER_TEST_F(SettingsWindowManagerTest, SettingsWindowMultiProfile) {
1600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Profile* test_profile = CreateTestProfile();
1610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ASSERT_TRUE(test_profile);
1620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Open a settings window.
164010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ShowSettingsForProfile(browser()->profile());
1650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Browser* settings_browser =
166010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      settings_manager_->FindBrowserForProfile(browser()->profile());
1670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ASSERT_TRUE(settings_browser);
1680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Ensure the observer fired correctly.
1690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(1u, observer_.new_settings_count());
1700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(settings_browser, observer_.browser());
1710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Open a settings window for a new profile.
173010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ShowSettingsForProfile(test_profile);
1740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  Browser* settings_browser2 =
175010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      settings_manager_->FindBrowserForProfile(test_profile);
1760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ASSERT_TRUE(settings_browser2);
1770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Ensure the observer fired correctly.
1780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(2u, observer_.new_settings_count());
1790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(settings_browser2, observer_.browser());
1800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  CloseBrowserSynchronously(settings_browser);
1820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  CloseBrowserSynchronously(settings_browser2);
1830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
1840529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif
185010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
186f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(SettingsWindowManagerTest, OpenChromePages) {
187f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
188f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
189f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // History should open in the existing browser window.
190f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  chrome::ShowHistory(browser());
191010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
192010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
193010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Settings should open a new browser window.
194010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  chrome::ShowSettings(browser());
195010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_EQ(2u, chrome::GetTotalBrowserCount());
196010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
197f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // About should reuse the existing Settings window.
198f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  chrome::ShowAboutChrome(browser());
199010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_EQ(2u, chrome::GetTotalBrowserCount());
200010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
201f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // Extensions should open in an existing browser window.
202010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  CloseNonDefaultBrowsers();
203010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
204010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  std::string extension_to_highlight;  // none
205010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  chrome::ShowExtensions(browser(), extension_to_highlight);
206010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
207f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
208f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // Downloads should open in an existing browser window.
209010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  chrome::ShowDownloads(browser());
210010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
211f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
212f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // About should open a new browser window.
213f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  chrome::ShowAboutChrome(browser());
214f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(2u, chrome::GetTotalBrowserCount());
215010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
216