| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" | 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 612 #if defined(OS_CHROMEOS) | 612 #if defined(OS_CHROMEOS) |
| 613 // A browser window proxy which is able to associate an aura native window with | 613 // A browser window proxy which is able to associate an aura native window with |
| 614 // it. | 614 // it. |
| 615 class TestBrowserWindowAura : public TestBrowserWindow { | 615 class TestBrowserWindowAura : public TestBrowserWindow { |
| 616 public: | 616 public: |
| 617 // |native_window| will still be owned by the caller after the constructor | 617 // |native_window| will still be owned by the caller after the constructor |
| 618 // was called. | 618 // was called. |
| 619 explicit TestBrowserWindowAura(aura::Window* native_window) | 619 explicit TestBrowserWindowAura(aura::Window* native_window) |
| 620 : native_window_(native_window) { | 620 : native_window_(native_window) { |
| 621 } | 621 } |
| 622 virtual ~TestBrowserWindowAura() {} | 622 ~TestBrowserWindowAura() override {} |
| 623 | 623 |
| 624 virtual gfx::NativeWindow GetNativeWindow() const override { | 624 gfx::NativeWindow GetNativeWindow() const override { |
| 625 return native_window_.get(); | 625 return native_window_.get(); |
| 626 } | 626 } |
| 627 | 627 |
| 628 Browser* browser() { return browser_.get(); } | 628 Browser* browser() { return browser_.get(); } |
| 629 | 629 |
| 630 void CreateBrowser(const Browser::CreateParams& params) { | 630 void CreateBrowser(const Browser::CreateParams& params) { |
| 631 Browser::CreateParams create_params = params; | 631 Browser::CreateParams create_params = params; |
| 632 create_params.window = this; | 632 create_params.window = this; |
| 633 browser_.reset(new Browser(create_params)); | 633 browser_.reset(new Browser(create_params)); |
| 634 } | 634 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 658 | 658 |
| 659 // Watches WebContents and blocks until it is destroyed. This is needed for | 659 // Watches WebContents and blocks until it is destroyed. This is needed for |
| 660 // the destruction of a V2 application. | 660 // the destruction of a V2 application. |
| 661 class WebContentsDestroyedWatcher : public content::WebContentsObserver { | 661 class WebContentsDestroyedWatcher : public content::WebContentsObserver { |
| 662 public: | 662 public: |
| 663 explicit WebContentsDestroyedWatcher(content::WebContents* web_contents) | 663 explicit WebContentsDestroyedWatcher(content::WebContents* web_contents) |
| 664 : content::WebContentsObserver(web_contents), | 664 : content::WebContentsObserver(web_contents), |
| 665 message_loop_runner_(new content::MessageLoopRunner) { | 665 message_loop_runner_(new content::MessageLoopRunner) { |
| 666 EXPECT_TRUE(web_contents != NULL); | 666 EXPECT_TRUE(web_contents != NULL); |
| 667 } | 667 } |
| 668 virtual ~WebContentsDestroyedWatcher() {} | 668 ~WebContentsDestroyedWatcher() override {} |
| 669 | 669 |
| 670 // Waits until the WebContents is destroyed. | 670 // Waits until the WebContents is destroyed. |
| 671 void Wait() { | 671 void Wait() { |
| 672 message_loop_runner_->Run(); | 672 message_loop_runner_->Run(); |
| 673 } | 673 } |
| 674 | 674 |
| 675 private: | 675 private: |
| 676 // Overridden WebContentsObserver methods. | 676 // Overridden WebContentsObserver methods. |
| 677 virtual void WebContentsDestroyed() override { | 677 void WebContentsDestroyed() override { message_loop_runner_->Quit(); } |
| 678 message_loop_runner_->Quit(); | |
| 679 } | |
| 680 | 678 |
| 681 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; | 679 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| 682 | 680 |
| 683 DISALLOW_COPY_AND_ASSIGN(WebContentsDestroyedWatcher); | 681 DISALLOW_COPY_AND_ASSIGN(WebContentsDestroyedWatcher); |
| 684 }; | 682 }; |
| 685 | 683 |
| 686 // A V1 windowed application. | 684 // A V1 windowed application. |
| 687 class V1App : public TestBrowserWindow { | 685 class V1App : public TestBrowserWindow { |
| 688 public: | 686 public: |
| 689 V1App(Profile* profile, const std::string& app_name) { | 687 V1App(Profile* profile, const std::string& app_name) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 700 Browser::CreateParams::CreateForApp(kCrxAppPrefix + app_name, | 698 Browser::CreateParams::CreateForApp(kCrxAppPrefix + app_name, |
| 701 true /* trusted_source */, | 699 true /* trusted_source */, |
| 702 gfx::Rect(), | 700 gfx::Rect(), |
| 703 profile, | 701 profile, |
| 704 chrome::HOST_DESKTOP_TYPE_ASH); | 702 chrome::HOST_DESKTOP_TYPE_ASH); |
| 705 params.window = this; | 703 params.window = this; |
| 706 browser_.reset(new Browser(params)); | 704 browser_.reset(new Browser(params)); |
| 707 chrome::AddTabAt(browser_.get(), GURL(), 0, true); | 705 chrome::AddTabAt(browser_.get(), GURL(), 0, true); |
| 708 } | 706 } |
| 709 | 707 |
| 710 virtual ~V1App() { | 708 ~V1App() override { |
| 711 // close all tabs. Note that we do not need to destroy the browser itself. | 709 // close all tabs. Note that we do not need to destroy the browser itself. |
| 712 browser_->tab_strip_model()->CloseAllTabs(); | 710 browser_->tab_strip_model()->CloseAllTabs(); |
| 713 } | 711 } |
| 714 | 712 |
| 715 Browser* browser() { return browser_.get(); } | 713 Browser* browser() { return browser_.get(); } |
| 716 | 714 |
| 717 // TestBrowserWindow override: | 715 // TestBrowserWindow override: |
| 718 virtual gfx::NativeWindow GetNativeWindow() const override { | 716 gfx::NativeWindow GetNativeWindow() const override { |
| 719 return native_window_.get(); | 717 return native_window_.get(); |
| 720 } | 718 } |
| 721 | 719 |
| 722 private: | 720 private: |
| 723 // The associated browser with this app. | 721 // The associated browser with this app. |
| 724 scoped_ptr<Browser> browser_; | 722 scoped_ptr<Browser> browser_; |
| 725 | 723 |
| 726 // The native window we use. | 724 // The native window we use. |
| 727 scoped_ptr<aura::Window> native_window_; | 725 scoped_ptr<aura::Window> native_window_; |
| 728 | 726 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 DISALLOW_COPY_AND_ASSIGN(V2App); | 759 DISALLOW_COPY_AND_ASSIGN(V2App); |
| 762 }; | 760 }; |
| 763 | 761 |
| 764 // The testing framework to test multi profile scenarios. | 762 // The testing framework to test multi profile scenarios. |
| 765 class MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest | 763 class MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest |
| 766 : public ChromeLauncherControllerTest { | 764 : public ChromeLauncherControllerTest { |
| 767 protected: | 765 protected: |
| 768 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest() { | 766 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest() { |
| 769 } | 767 } |
| 770 | 768 |
| 771 virtual ~MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest() { | 769 ~MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest() override {} |
| 772 } | |
| 773 | 770 |
| 774 // Overwrite the Setup function to enable multi profile and needed objects. | 771 // Overwrite the Setup function to enable multi profile and needed objects. |
| 775 virtual void SetUp() override { | 772 void SetUp() override { |
| 776 profile_manager_.reset( | 773 profile_manager_.reset( |
| 777 new TestingProfileManager(TestingBrowserProcess::GetGlobal())); | 774 new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
| 778 | 775 |
| 779 ASSERT_TRUE(profile_manager_->SetUp()); | 776 ASSERT_TRUE(profile_manager_->SetUp()); |
| 780 | 777 |
| 781 // AvatarMenu and multiple profiles works after user logged in. | 778 // AvatarMenu and multiple profiles works after user logged in. |
| 782 profile_manager_->SetLoggedIn(true); | 779 profile_manager_->SetLoggedIn(true); |
| 783 | 780 |
| 784 // Initialize the UserManager singleton to a fresh FakeUserManager instance. | 781 // Initialize the UserManager singleton to a fresh FakeUserManager instance. |
| 785 user_manager_enabler_.reset( | 782 user_manager_enabler_.reset( |
| 786 new chromeos::ScopedUserManagerEnabler(new chromeos::FakeUserManager)); | 783 new chromeos::ScopedUserManagerEnabler(new chromeos::FakeUserManager)); |
| 787 | 784 |
| 788 // Initialize the rest. | 785 // Initialize the rest. |
| 789 ChromeLauncherControllerTest::SetUp(); | 786 ChromeLauncherControllerTest::SetUp(); |
| 790 | 787 |
| 791 // Get some base objects. | 788 // Get some base objects. |
| 792 session_delegate()->set_logged_in_users(2); | 789 session_delegate()->set_logged_in_users(2); |
| 793 shell_delegate_ = static_cast<ash::test::TestShellDelegate*>( | 790 shell_delegate_ = static_cast<ash::test::TestShellDelegate*>( |
| 794 ash::Shell::GetInstance()->delegate()); | 791 ash::Shell::GetInstance()->delegate()); |
| 795 shell_delegate_->set_multi_profiles_enabled(true); | 792 shell_delegate_->set_multi_profiles_enabled(true); |
| 796 } | 793 } |
| 797 | 794 |
| 798 virtual void TearDown() { | 795 void TearDown() override { |
| 799 ChromeLauncherControllerTest::TearDown(); | 796 ChromeLauncherControllerTest::TearDown(); |
| 800 user_manager_enabler_.reset(); | 797 user_manager_enabler_.reset(); |
| 801 for (ProfileToNameMap::iterator it = created_profiles_.begin(); | 798 for (ProfileToNameMap::iterator it = created_profiles_.begin(); |
| 802 it != created_profiles_.end(); ++it) | 799 it != created_profiles_.end(); ++it) |
| 803 profile_manager_->DeleteTestingProfile(it->second); | 800 profile_manager_->DeleteTestingProfile(it->second); |
| 804 | 801 |
| 805 // A Task is leaked if we don't destroy everything, then run the message | 802 // A Task is leaked if we don't destroy everything, then run the message |
| 806 // loop. | 803 // loop. |
| 807 base::MessageLoop::current()->PostTask(FROM_HERE, | 804 base::MessageLoop::current()->PostTask(FROM_HERE, |
| 808 base::MessageLoop::QuitClosure()); | 805 base::MessageLoop::QuitClosure()); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 887 return v1_app; | 884 return v1_app; |
| 888 } | 885 } |
| 889 | 886 |
| 890 ash::test::TestSessionStateDelegate* session_delegate() { | 887 ash::test::TestSessionStateDelegate* session_delegate() { |
| 891 return static_cast<ash::test::TestSessionStateDelegate*>( | 888 return static_cast<ash::test::TestSessionStateDelegate*>( |
| 892 ash::Shell::GetInstance()->session_state_delegate()); | 889 ash::Shell::GetInstance()->session_state_delegate()); |
| 893 } | 890 } |
| 894 ash::test::TestShellDelegate* shell_delegate() { return shell_delegate_; } | 891 ash::test::TestShellDelegate* shell_delegate() { return shell_delegate_; } |
| 895 | 892 |
| 896 // Override BrowserWithTestWindowTest: | 893 // Override BrowserWithTestWindowTest: |
| 897 virtual TestingProfile* CreateProfile() override { | 894 TestingProfile* CreateProfile() override { |
| 898 return CreateMultiUserProfile("user1"); | 895 return CreateMultiUserProfile("user1"); |
| 899 } | 896 } |
| 900 virtual void DestroyProfile(TestingProfile* profile) override { | 897 void DestroyProfile(TestingProfile* profile) override { |
| 901 // Delete the profile through our profile manager. | 898 // Delete the profile through our profile manager. |
| 902 ProfileToNameMap::iterator it = created_profiles_.find(profile); | 899 ProfileToNameMap::iterator it = created_profiles_.find(profile); |
| 903 DCHECK(it != created_profiles_.end()); | 900 DCHECK(it != created_profiles_.end()); |
| 904 profile_manager_->DeleteTestingProfile(it->second); | 901 profile_manager_->DeleteTestingProfile(it->second); |
| 905 created_profiles_.erase(it); | 902 created_profiles_.erase(it); |
| 906 } | 903 } |
| 907 | 904 |
| 908 private: | 905 private: |
| 909 typedef std::map<Profile*, std::string> ProfileToNameMap; | 906 typedef std::map<Profile*, std::string> ProfileToNameMap; |
| 910 TestingProfileManager* profile_manager() { return profile_manager_.get(); } | 907 TestingProfileManager* profile_manager() { return profile_manager_.get(); } |
| (...skipping 1769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2680 | 2677 |
| 2681 EXPECT_EQ(1, app_icon_loader->fetch_count()); | 2678 EXPECT_EQ(1, app_icon_loader->fetch_count()); |
| 2682 ASSERT_EQ(initial_size + 1, model_->items().size()); | 2679 ASSERT_EQ(initial_size + 1, model_->items().size()); |
| 2683 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); | 2680 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); |
| 2684 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); | 2681 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); |
| 2685 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); | 2682 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); |
| 2686 | 2683 |
| 2687 launcher_controller_->UnpinAppWithID("1"); | 2684 launcher_controller_->UnpinAppWithID("1"); |
| 2688 ASSERT_EQ(initial_size, model_->items().size()); | 2685 ASSERT_EQ(initial_size, model_->items().size()); |
| 2689 } | 2686 } |
| OLD | NEW |