| Index: chrome/browser/ui/browser_finder_chromeos_unittest.cc
|
| diff --git a/chrome/browser/ui/browser_finder_chromeos_unittest.cc b/chrome/browser/ui/browser_finder_chromeos_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..73018399bb35b4b1f859560f696fde3357c1f8f6
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/browser_finder_chromeos_unittest.cc
|
| @@ -0,0 +1,136 @@
|
| +// Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/ui/browser_finder.h"
|
| +
|
| +#include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
|
| +#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
|
| +#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h"
|
| +#include "chrome/test/base/browser_with_test_window_test.h"
|
| +#include "chrome/test/base/test_browser_window_aura.h"
|
| +#include "chrome/test/base/testing_browser_process.h"
|
| +#include "chrome/test/base/testing_profile_manager.h"
|
| +
|
| +namespace test {
|
| +
|
| +namespace {
|
| +
|
| +const char kTestAccount1[] = "user1@test.com";
|
| +const char kTestAccount2[] = "user2@test.com";
|
| +
|
| +} // namespace
|
| +
|
| +class BrowserFinderChromeOSTest : public BrowserWithTestWindowTest {
|
| + protected:
|
| + BrowserFinderChromeOSTest() : multi_user_window_manager_(nullptr) {}
|
| +
|
| + TestingProfile* CreateMultiUserProfile(const std::string& user_email) {
|
| + TestingProfile* profile =
|
| + profile_manager_->CreateTestingProfile(user_email);
|
| + GetUserWindowManager()->AddUser(profile);
|
| + return profile;
|
| + }
|
| +
|
| + chrome::MultiUserWindowManagerChromeOS* GetUserWindowManager() {
|
| + if (!multi_user_window_manager_) {
|
| + multi_user_window_manager_ =
|
| + new chrome::MultiUserWindowManagerChromeOS(kTestAccount1);
|
| + multi_user_window_manager_->Init();
|
| + chrome::MultiUserWindowManager::SetInstanceForTest(
|
| + multi_user_window_manager_,
|
| + chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED);
|
| + }
|
| + return multi_user_window_manager_;
|
| + }
|
| +
|
| + private:
|
| + void SetUp() override {
|
| + profile_manager_.reset(
|
| + new TestingProfileManager(TestingBrowserProcess::GetGlobal()));
|
| + ASSERT_TRUE(profile_manager_->SetUp());
|
| + profile_manager_->SetLoggedIn(true);
|
| + chromeos::WallpaperManager::Initialize();
|
| + BrowserWithTestWindowTest::SetUp();
|
| + second_profile_ = CreateMultiUserProfile(kTestAccount2);
|
| + }
|
| +
|
| + void TearDown() override {
|
| + chrome::MultiUserWindowManager::DeleteInstance();
|
| + BrowserWithTestWindowTest::TearDown();
|
| + chromeos::WallpaperManager::Shutdown();
|
| + if (second_profile_) {
|
| + DestroyProfile(second_profile_);
|
| + second_profile_ = nullptr;
|
| + }
|
| + }
|
| +
|
| + TestingProfile* CreateProfile() override {
|
| + return CreateMultiUserProfile(kTestAccount1);
|
| + }
|
| +
|
| + void DestroyProfile(TestingProfile* test_profile) override {
|
| + profile_manager_->DeleteTestingProfile(test_profile->GetProfileUserName());
|
| + }
|
| +
|
| + TestingProfile* second_profile_;
|
| + scoped_ptr<TestingProfileManager> profile_manager_;
|
| + chrome::MultiUserWindowManagerChromeOS* multi_user_window_manager_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(BrowserFinderChromeOSTest);
|
| +};
|
| +
|
| +TEST_F(BrowserFinderChromeOSTest, IncognitoBrowserMatchTest) {
|
| + // GetBrowserCount() use kMatchAll to find all browser windows for profile().
|
| + EXPECT_EQ(1u,
|
| + chrome::GetBrowserCount(profile(), chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_TRUE(
|
| + chrome::FindAnyBrowser(profile(), true, chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_TRUE(
|
| + chrome::FindAnyBrowser(profile(), false, chrome::HOST_DESKTOP_TYPE_ASH));
|
| + set_browser(nullptr);
|
| +
|
| + // Create an incognito browser.
|
| + Browser::CreateParams params(profile()->GetOffTheRecordProfile(),
|
| + chrome::HOST_DESKTOP_TYPE_ASH);
|
| + scoped_ptr<Browser> incognito_browser(
|
| + chrome::CreateBrowserWithAuraTestWindowForParams(nullptr, ¶ms));
|
| + // Incognito windows are excluded in GetBrowserCount() because kMatchAll
|
| + // doesn't match original profile of the browser with the given profile.
|
| + EXPECT_EQ(0u,
|
| + chrome::GetBrowserCount(profile(), chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_TRUE(
|
| + chrome::FindAnyBrowser(profile(), true, chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_FALSE(
|
| + chrome::FindAnyBrowser(profile(), false, chrome::HOST_DESKTOP_TYPE_ASH));
|
| +}
|
| +
|
| +TEST_F(BrowserFinderChromeOSTest, FindBrowserOwnedByAnotherProfile) {
|
| + set_browser(nullptr);
|
| +
|
| + Browser::CreateParams params(profile()->GetOriginalProfile(),
|
| + chrome::HOST_DESKTOP_TYPE_ASH);
|
| + scoped_ptr<Browser> browser(
|
| + chrome::CreateBrowserWithAuraTestWindowForParams(nullptr, ¶ms));
|
| + GetUserWindowManager()->SetWindowOwner(browser->window()->GetNativeWindow(),
|
| + kTestAccount1);
|
| + EXPECT_EQ(1u,
|
| + chrome::GetBrowserCount(profile(), chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_TRUE(
|
| + chrome::FindAnyBrowser(profile(), true, chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_TRUE(
|
| + chrome::FindAnyBrowser(profile(), false, chrome::HOST_DESKTOP_TYPE_ASH));
|
| +
|
| + // Move the browser window to another user's desktop. Then no window should
|
| + // be available for the current profile.
|
| + GetUserWindowManager()->ShowWindowForUser(
|
| + browser->window()->GetNativeWindow(), kTestAccount2);
|
| + EXPECT_EQ(0u,
|
| + chrome::GetBrowserCount(profile(), chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_FALSE(
|
| + chrome::FindAnyBrowser(profile(), true, chrome::HOST_DESKTOP_TYPE_ASH));
|
| + EXPECT_FALSE(
|
| + chrome::FindAnyBrowser(profile(), false, chrome::HOST_DESKTOP_TYPE_ASH));
|
| +}
|
| +
|
| +} // namespace test
|
|
|