Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc

Issue 1865213004: Convert //chrome/browser/ui from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <stddef.h> 7 #include <stddef.h>
8
8 #include <algorithm> 9 #include <algorithm>
10 #include <memory>
9 #include <set> 11 #include <set>
10 #include <string> 12 #include <string>
11 #include <utility> 13 #include <utility>
12 #include <vector> 14 #include <vector>
13 15
14 #include "ash/ash_switches.h" 16 #include "ash/ash_switches.h"
15 #include "ash/shelf/shelf_item_delegate_manager.h" 17 #include "ash/shelf/shelf_item_delegate_manager.h"
16 #include "ash/shelf/shelf_model.h" 18 #include "ash/shelf/shelf_model.h"
17 #include "ash/shelf/shelf_model_observer.h" 19 #include "ash/shelf/shelf_model_observer.h"
18 #include "ash/shell.h" 20 #include "ash/shell.h"
19 #include "ash/test/shelf_item_delegate_manager_test_api.h" 21 #include "ash/test/shelf_item_delegate_manager_test_api.h"
20 #include "base/command_line.h" 22 #include "base/command_line.h"
21 #include "base/compiler_specific.h" 23 #include "base/compiler_specific.h"
22 #include "base/files/file_path.h" 24 #include "base/files/file_path.h"
23 #include "base/macros.h" 25 #include "base/macros.h"
24 #include "base/memory/scoped_ptr.h" 26 #include "base/memory/ptr_util.h"
25 #include "base/message_loop/message_loop.h" 27 #include "base/message_loop/message_loop.h"
26 #include "base/strings/utf_string_conversions.h" 28 #include "base/strings/utf_string_conversions.h"
27 #include "base/values.h" 29 #include "base/values.h"
28 #include "build/build_config.h" 30 #include "build/build_config.h"
29 #include "chrome/browser/extensions/extension_service.h" 31 #include "chrome/browser/extensions/extension_service.h"
30 #include "chrome/browser/extensions/test_extension_system.h" 32 #include "chrome/browser/extensions/test_extension_system.h"
31 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" 33 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
32 #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_item_cont roller.h" 34 #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_item_cont roller.h"
33 #include "chrome/browser/ui/ash/launcher/launcher_application_menu_item_model.h" 35 #include "chrome/browser/ui/ash/launcher/launcher_application_menu_item_model.h"
34 #include "chrome/browser/ui/ash/launcher/launcher_item_controller.h" 36 #include "chrome/browser/ui/ash/launcher/launcher_item_controller.h"
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 450
449 model_.reset(); 451 model_.reset();
450 452
451 BrowserWithTestWindowTest::TearDown(); 453 BrowserWithTestWindowTest::TearDown();
452 } 454 }
453 455
454 BrowserWindow* CreateBrowserWindow() override { 456 BrowserWindow* CreateBrowserWindow() override {
455 return CreateTestBrowserWindowAura(); 457 return CreateTestBrowserWindowAura();
456 } 458 }
457 459
458 scoped_ptr<Browser> CreateBrowserWithTestWindowForProfile(Profile* profile) { 460 std::unique_ptr<Browser> CreateBrowserWithTestWindowForProfile(
461 Profile* profile) {
459 TestBrowserWindow* browser_window = CreateTestBrowserWindowAura(); 462 TestBrowserWindow* browser_window = CreateTestBrowserWindowAura();
460 new TestBrowserWindowOwner(browser_window); 463 new TestBrowserWindowOwner(browser_window);
461 return make_scoped_ptr( 464 return base::WrapUnique(
462 CreateBrowser(profile, Browser::TYPE_TABBED, false, browser_window)); 465 CreateBrowser(profile, Browser::TYPE_TABBED, false, browser_window));
463 } 466 }
464 467
465 void AddAppListLauncherItem() { 468 void AddAppListLauncherItem() {
466 ash::ShelfItem app_list; 469 ash::ShelfItem app_list;
467 app_list.type = ash::TYPE_APP_LIST; 470 app_list.type = ash::TYPE_APP_LIST;
468 model_->Add(app_list); 471 model_->Add(app_list);
469 } 472 }
470 473
471 void InitLauncherController() { 474 void InitLauncherController() {
472 AddAppListLauncherItem(); 475 AddAppListLauncherItem();
473 launcher_controller_.reset( 476 launcher_controller_.reset(
474 new ChromeLauncherController(profile(), model_.get())); 477 new ChromeLauncherController(profile(), model_.get()));
475 if (!ash::Shell::HasInstance()) 478 if (!ash::Shell::HasInstance())
476 SetShelfItemDelegateManager(item_delegate_manager_); 479 SetShelfItemDelegateManager(item_delegate_manager_);
477 launcher_controller_->Init(); 480 launcher_controller_->Init();
478 } 481 }
479 482
480 void InitLauncherControllerWithBrowser() { 483 void InitLauncherControllerWithBrowser() {
481 InitLauncherController(); 484 InitLauncherController();
482 chrome::NewTab(browser()); 485 chrome::NewTab(browser());
483 browser()->window()->Show(); 486 browser()->window()->Show();
484 } 487 }
485 488
486 void SetAppIconLoader(scoped_ptr<AppIconLoader> loader) { 489 void SetAppIconLoader(std::unique_ptr<AppIconLoader> loader) {
487 std::vector<scoped_ptr<AppIconLoader>> loaders; 490 std::vector<std::unique_ptr<AppIconLoader>> loaders;
488 loaders.push_back(std::move(loader)); 491 loaders.push_back(std::move(loader));
489 launcher_controller_->SetAppIconLoadersForTest(loaders); 492 launcher_controller_->SetAppIconLoadersForTest(loaders);
490 } 493 }
491 494
492 void SetAppIconLoaders(scoped_ptr<AppIconLoader> loader1, 495 void SetAppIconLoaders(std::unique_ptr<AppIconLoader> loader1,
493 scoped_ptr<AppIconLoader> loader2) { 496 std::unique_ptr<AppIconLoader> loader2) {
494 std::vector<scoped_ptr<AppIconLoader>> loaders; 497 std::vector<std::unique_ptr<AppIconLoader>> loaders;
495 loaders.push_back(std::move(loader1)); 498 loaders.push_back(std::move(loader1));
496 loaders.push_back(std::move(loader2)); 499 loaders.push_back(std::move(loader2));
497 launcher_controller_->SetAppIconLoadersForTest(loaders); 500 launcher_controller_->SetAppIconLoadersForTest(loaders);
498 } 501 }
499 502
500 void SetAppTabHelper(ChromeLauncherController::AppTabHelper* helper) { 503 void SetAppTabHelper(ChromeLauncherController::AppTabHelper* helper) {
501 launcher_controller_->SetAppTabHelperForTest(helper); 504 launcher_controller_->SetAppTabHelperForTest(helper);
502 } 505 }
503 506
504 void SetShelfItemDelegateManager(ash::ShelfItemDelegateManager* manager) { 507 void SetShelfItemDelegateManager(ash::ShelfItemDelegateManager* manager) {
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 scoped_refptr<Extension> extension2_; 685 scoped_refptr<Extension> extension2_;
683 scoped_refptr<Extension> extension3_; 686 scoped_refptr<Extension> extension3_;
684 scoped_refptr<Extension> extension4_; 687 scoped_refptr<Extension> extension4_;
685 scoped_refptr<Extension> extension5_; 688 scoped_refptr<Extension> extension5_;
686 scoped_refptr<Extension> extension6_; 689 scoped_refptr<Extension> extension6_;
687 scoped_refptr<Extension> extension7_; 690 scoped_refptr<Extension> extension7_;
688 scoped_refptr<Extension> extension8_; 691 scoped_refptr<Extension> extension8_;
689 #if defined(OS_CHROMEOS) 692 #if defined(OS_CHROMEOS)
690 ArcAppTest arc_test_; 693 ArcAppTest arc_test_;
691 #endif // defined(OS_CHROMEOS) 694 #endif // defined(OS_CHROMEOS)
692 scoped_ptr<ChromeLauncherController> launcher_controller_; 695 std::unique_ptr<ChromeLauncherController> launcher_controller_;
693 scoped_ptr<TestShelfModelObserver> model_observer_; 696 std::unique_ptr<TestShelfModelObserver> model_observer_;
694 scoped_ptr<ash::ShelfModel> model_; 697 std::unique_ptr<ash::ShelfModel> model_;
695 698
696 // |item_delegate_manager_| owns |test_controller_|. 699 // |item_delegate_manager_| owns |test_controller_|.
697 LauncherItemController* test_controller_; 700 LauncherItemController* test_controller_;
698 701
699 ExtensionService* extension_service_; 702 ExtensionService* extension_service_;
700 703
701 ash::ShelfItemDelegateManager* item_delegate_manager_; 704 ash::ShelfItemDelegateManager* item_delegate_manager_;
702 705
703 private: 706 private:
704 TestBrowserWindow* CreateTestBrowserWindowAura() { 707 TestBrowserWindow* CreateTestBrowserWindowAura() {
705 scoped_ptr<aura::Window> window(new aura::Window(nullptr)); 708 std::unique_ptr<aura::Window> window(new aura::Window(nullptr));
706 window->set_id(0); 709 window->set_id(0);
707 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); 710 window->SetType(ui::wm::WINDOW_TYPE_NORMAL);
708 window->Init(ui::LAYER_TEXTURED); 711 window->Init(ui::LAYER_TEXTURED);
709 aura::client::ParentWindowWithContext(window.get(), GetContext(), 712 aura::client::ParentWindowWithContext(window.get(), GetContext(),
710 gfx::Rect(200, 200)); 713 gfx::Rect(200, 200));
711 714
712 return new TestBrowserWindowAura(std::move(window)); 715 return new TestBrowserWindowAura(std::move(window));
713 } 716 }
714 717
715 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerTest); 718 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerTest);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 773
771 Browser* browser() { return browser_.get(); } 774 Browser* browser() { return browser_.get(); }
772 775
773 // TestBrowserWindow override: 776 // TestBrowserWindow override:
774 gfx::NativeWindow GetNativeWindow() const override { 777 gfx::NativeWindow GetNativeWindow() const override {
775 return native_window_.get(); 778 return native_window_.get();
776 } 779 }
777 780
778 private: 781 private:
779 // The associated browser with this app. 782 // The associated browser with this app.
780 scoped_ptr<Browser> browser_; 783 std::unique_ptr<Browser> browser_;
781 784
782 // The native window we use. 785 // The native window we use.
783 scoped_ptr<aura::Window> native_window_; 786 std::unique_ptr<aura::Window> native_window_;
784 787
785 DISALLOW_COPY_AND_ASSIGN(V1App); 788 DISALLOW_COPY_AND_ASSIGN(V1App);
786 }; 789 };
787 790
788 // A V2 application which gets created with an |extension| and for a |profile|. 791 // A V2 application which gets created with an |extension| and for a |profile|.
789 // Upon destruction it will properly close the application. 792 // Upon destruction it will properly close the application.
790 class V2App { 793 class V2App {
791 public: 794 public:
792 V2App(Profile* profile, const extensions::Extension* extension) 795 V2App(Profile* profile, const extensions::Extension* extension)
793 : creator_web_contents_( 796 : creator_web_contents_(
(...skipping 14 matching lines...) Expand all
808 811
809 virtual ~V2App() { 812 virtual ~V2App() {
810 WebContentsDestroyedWatcher destroyed_watcher(window_->web_contents()); 813 WebContentsDestroyedWatcher destroyed_watcher(window_->web_contents());
811 window_->GetBaseWindow()->Close(); 814 window_->GetBaseWindow()->Close();
812 destroyed_watcher.Wait(); 815 destroyed_watcher.Wait();
813 } 816 }
814 817
815 extensions::AppWindow* window() { return window_; } 818 extensions::AppWindow* window() { return window_; }
816 819
817 private: 820 private:
818 scoped_ptr<content::WebContents> creator_web_contents_; 821 std::unique_ptr<content::WebContents> creator_web_contents_;
819 822
820 // The app window which represents the application. Note that the window 823 // The app window which represents the application. Note that the window
821 // deletes itself asynchronously after window_->GetBaseWindow()->Close() gets 824 // deletes itself asynchronously after window_->GetBaseWindow()->Close() gets
822 // called. 825 // called.
823 extensions::AppWindow* window_; 826 extensions::AppWindow* window_;
824 827
825 DISALLOW_COPY_AND_ASSIGN(V2App); 828 DISALLOW_COPY_AND_ASSIGN(V2App);
826 }; 829 };
827 830
828 // The testing framework to test multi profile scenarios. 831 // The testing framework to test multi profile scenarios.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 manager->SetAnimationSpeedForTest( 916 manager->SetAnimationSpeedForTest(
914 chrome::MultiUserWindowManagerChromeOS::ANIMATION_SPEED_DISABLED); 917 chrome::MultiUserWindowManagerChromeOS::ANIMATION_SPEED_DISABLED);
915 manager->ActiveUserChanged(account_id); 918 manager->ActiveUserChanged(account_id);
916 launcher_controller_->browser_status_monitor_for_test()->ActiveUserChanged( 919 launcher_controller_->browser_status_monitor_for_test()->ActiveUserChanged(
917 account_id.GetUserEmail()); 920 account_id.GetUserEmail());
918 launcher_controller_->app_window_controller_for_test()->ActiveUserChanged( 921 launcher_controller_->app_window_controller_for_test()->ActiveUserChanged(
919 account_id.GetUserEmail()); 922 account_id.GetUserEmail());
920 } 923 }
921 924
922 // Creates a browser with a |profile| and load a tab with a |title| and |url|. 925 // Creates a browser with a |profile| and load a tab with a |title| and |url|.
923 scoped_ptr<Browser> CreateBrowserAndTabWithProfile(Profile* profile, 926 std::unique_ptr<Browser> CreateBrowserAndTabWithProfile(
924 const std::string& title, 927 Profile* profile,
925 const std::string& url) { 928 const std::string& title,
926 scoped_ptr<Browser> browser(CreateBrowserWithTestWindowForProfile(profile)); 929 const std::string& url) {
930 std::unique_ptr<Browser> browser(
931 CreateBrowserWithTestWindowForProfile(profile));
927 chrome::NewTab(browser.get()); 932 chrome::NewTab(browser.get());
928 933
929 browser->window()->Show(); 934 browser->window()->Show();
930 NavigateAndCommitActiveTabWithTitle(browser.get(), GURL(url), 935 NavigateAndCommitActiveTabWithTitle(browser.get(), GURL(url),
931 ASCIIToUTF16(title)); 936 ASCIIToUTF16(title));
932 return browser; 937 return browser;
933 } 938 }
934 939
935 // Creates a running V1 application. 940 // Creates a running V1 application.
936 // Note that with the use of the app_tab_helper as done below, this is only 941 // Note that with the use of the app_tab_helper as done below, this is only
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 979
975 private: 980 private:
976 typedef std::map<Profile*, std::string> ProfileToNameMap; 981 typedef std::map<Profile*, std::string> ProfileToNameMap;
977 TestingProfileManager* profile_manager() { return profile_manager_.get(); } 982 TestingProfileManager* profile_manager() { return profile_manager_.get(); }
978 983
979 chromeos::FakeChromeUserManager* GetFakeUserManager() { 984 chromeos::FakeChromeUserManager* GetFakeUserManager() {
980 return static_cast<chromeos::FakeChromeUserManager*>( 985 return static_cast<chromeos::FakeChromeUserManager*>(
981 user_manager::UserManager::Get()); 986 user_manager::UserManager::Get());
982 } 987 }
983 988
984 scoped_ptr<TestingProfileManager> profile_manager_; 989 std::unique_ptr<TestingProfileManager> profile_manager_;
985 scoped_ptr<chromeos::ScopedUserManagerEnabler> user_manager_enabler_; 990 std::unique_ptr<chromeos::ScopedUserManagerEnabler> user_manager_enabler_;
986 991
987 ash::test::TestShellDelegate* shell_delegate_; 992 ash::test::TestShellDelegate* shell_delegate_;
988 993
989 ProfileToNameMap created_profiles_; 994 ProfileToNameMap created_profiles_;
990 995
991 DISALLOW_COPY_AND_ASSIGN( 996 DISALLOW_COPY_AND_ASSIGN(
992 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest); 997 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest);
993 }; 998 };
994 #endif // defined(OS_CHROMEOS) 999 #endif // defined(OS_CHROMEOS)
995 1000
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
1525 1530
1526 // Check that with multi profile V1 apps are properly added / removed from the 1531 // Check that with multi profile V1 apps are properly added / removed from the
1527 // shelf. 1532 // shelf.
1528 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, 1533 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest,
1529 V1AppUpdateOnUserSwitch) { 1534 V1AppUpdateOnUserSwitch) {
1530 // Create a browser item in the LauncherController. 1535 // Create a browser item in the LauncherController.
1531 InitLauncherController(); 1536 InitLauncherController();
1532 EXPECT_EQ(2, model_->item_count()); 1537 EXPECT_EQ(2, model_->item_count());
1533 { 1538 {
1534 // Create a "windowed gmail app". 1539 // Create a "windowed gmail app".
1535 scoped_ptr<V1App> v1_app(CreateRunningV1App( 1540 std::unique_ptr<V1App> v1_app(
1536 profile(), extension_misc::kGmailAppId, gmail_url)); 1541 CreateRunningV1App(profile(), extension_misc::kGmailAppId, gmail_url));
1537 EXPECT_EQ(3, model_->item_count()); 1542 EXPECT_EQ(3, model_->item_count());
1538 1543
1539 // After switching to a second user the item should be gone. 1544 // After switching to a second user the item should be gone.
1540 std::string user2 = "user2"; 1545 std::string user2 = "user2";
1541 TestingProfile* profile2 = CreateMultiUserProfile(user2); 1546 TestingProfile* profile2 = CreateMultiUserProfile(user2);
1542 const AccountId account_id2( 1547 const AccountId account_id2(
1543 multi_user_util::GetAccountIdFromProfile(profile2)); 1548 multi_user_util::GetAccountIdFromProfile(profile2));
1544 const AccountId account_id( 1549 const AccountId account_id(
1545 multi_user_util::GetAccountIdFromProfile(profile())); 1550 multi_user_util::GetAccountIdFromProfile(profile()));
1546 SwitchActiveUser(account_id2); 1551 SwitchActiveUser(account_id2);
(...skipping 15 matching lines...) Expand all
1562 1567
1563 // First test: Create an app when the user is not active. 1568 // First test: Create an app when the user is not active.
1564 std::string user2 = "user2"; 1569 std::string user2 = "user2";
1565 TestingProfile* profile2 = CreateMultiUserProfile(user2); 1570 TestingProfile* profile2 = CreateMultiUserProfile(user2);
1566 const AccountId account_id2( 1571 const AccountId account_id2(
1567 multi_user_util::GetAccountIdFromProfile(profile2)); 1572 multi_user_util::GetAccountIdFromProfile(profile2));
1568 const AccountId account_id( 1573 const AccountId account_id(
1569 multi_user_util::GetAccountIdFromProfile(profile())); 1574 multi_user_util::GetAccountIdFromProfile(profile()));
1570 { 1575 {
1571 // Create a "windowed gmail app". 1576 // Create a "windowed gmail app".
1572 scoped_ptr<V1App> v1_app(CreateRunningV1App( 1577 std::unique_ptr<V1App> v1_app(
1573 profile2, extension_misc::kGmailAppId, gmail_url)); 1578 CreateRunningV1App(profile2, extension_misc::kGmailAppId, gmail_url));
1574 EXPECT_EQ(2, model_->item_count()); 1579 EXPECT_EQ(2, model_->item_count());
1575 1580
1576 // However - switching to the user should show it. 1581 // However - switching to the user should show it.
1577 SwitchActiveUser(account_id2); 1582 SwitchActiveUser(account_id2);
1578 EXPECT_EQ(3, model_->item_count()); 1583 EXPECT_EQ(3, model_->item_count());
1579 1584
1580 // Second test: Remove the app when the user is not active and see that it 1585 // Second test: Remove the app when the user is not active and see that it
1581 // works. 1586 // works.
1582 SwitchActiveUser(account_id); 1587 SwitchActiveUser(account_id);
1583 EXPECT_EQ(2, model_->item_count()); 1588 EXPECT_EQ(2, model_->item_count());
(...skipping 17 matching lines...) Expand all
1601 1606
1602 // First create an app when the user is active. 1607 // First create an app when the user is active.
1603 std::string user2 = "user2"; 1608 std::string user2 = "user2";
1604 TestingProfile* profile2 = CreateMultiUserProfile(user2); 1609 TestingProfile* profile2 = CreateMultiUserProfile(user2);
1605 const AccountId account_id( 1610 const AccountId account_id(
1606 multi_user_util::GetAccountIdFromProfile(profile())); 1611 multi_user_util::GetAccountIdFromProfile(profile()));
1607 const AccountId account_id2( 1612 const AccountId account_id2(
1608 multi_user_util::GetAccountIdFromProfile(profile2)); 1613 multi_user_util::GetAccountIdFromProfile(profile2));
1609 { 1614 {
1610 // Create a "windowed gmail app". 1615 // Create a "windowed gmail app".
1611 scoped_ptr<V1App> v1_app(CreateRunningV1App( 1616 std::unique_ptr<V1App> v1_app(CreateRunningV1App(
1612 profile(), 1617 profile(), extension_misc::kGmailAppId, kGmailLaunchURL));
1613 extension_misc::kGmailAppId,
1614 kGmailLaunchURL));
1615 EXPECT_EQ(3, model_->item_count()); 1618 EXPECT_EQ(3, model_->item_count());
1616 1619
1617 // Transfer the app to the other screen and switch users. 1620 // Transfer the app to the other screen and switch users.
1618 manager->ShowWindowForUser(v1_app->browser()->window()->GetNativeWindow(), 1621 manager->ShowWindowForUser(v1_app->browser()->window()->GetNativeWindow(),
1619 account_id2); 1622 account_id2);
1620 EXPECT_EQ(3, model_->item_count()); 1623 EXPECT_EQ(3, model_->item_count());
1621 SwitchActiveUser(account_id2); 1624 SwitchActiveUser(account_id2);
1622 EXPECT_EQ(2, model_->item_count()); 1625 EXPECT_EQ(2, model_->item_count());
1623 } 1626 }
1624 // After the app was destroyed, switch back. (which caused already a crash). 1627 // After the app was destroyed, switch back. (which caused already a crash).
1625 SwitchActiveUser(account_id); 1628 SwitchActiveUser(account_id);
1626 1629
1627 // Create the same app again - which was also causing the crash. 1630 // Create the same app again - which was also causing the crash.
1628 EXPECT_EQ(2, model_->item_count()); 1631 EXPECT_EQ(2, model_->item_count());
1629 { 1632 {
1630 // Create a "windowed gmail app". 1633 // Create a "windowed gmail app".
1631 scoped_ptr<V1App> v1_app(CreateRunningV1App( 1634 std::unique_ptr<V1App> v1_app(CreateRunningV1App(
1632 profile(), 1635 profile(), extension_misc::kGmailAppId, kGmailLaunchURL));
1633 extension_misc::kGmailAppId,
1634 kGmailLaunchURL));
1635 EXPECT_EQ(3, model_->item_count()); 1636 EXPECT_EQ(3, model_->item_count());
1636 } 1637 }
1637 SwitchActiveUser(account_id2); 1638 SwitchActiveUser(account_id2);
1638 EXPECT_EQ(2, model_->item_count()); 1639 EXPECT_EQ(2, model_->item_count());
1639 } 1640 }
1640 1641
1641 // Check edge cases with multi profile V1 apps in the shelf. 1642 // Check edge cases with multi profile V1 apps in the shelf.
1642 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, 1643 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest,
1643 V1AppUpdateOnUserSwitchEdgecases2) { 1644 V1AppUpdateOnUserSwitchEdgecases2) {
1644 // Create a browser item in the LauncherController. 1645 // Create a browser item in the LauncherController.
1645 InitLauncherController(); 1646 InitLauncherController();
1646 TestAppTabHelperImpl* app_tab_helper = new TestAppTabHelperImpl; 1647 TestAppTabHelperImpl* app_tab_helper = new TestAppTabHelperImpl;
1647 SetAppTabHelper(app_tab_helper); 1648 SetAppTabHelper(app_tab_helper);
1648 1649
1649 // First test: Create an app when the user is not active. 1650 // First test: Create an app when the user is not active.
1650 std::string user2 = "user2"; 1651 std::string user2 = "user2";
1651 TestingProfile* profile2 = CreateMultiUserProfile(user2); 1652 TestingProfile* profile2 = CreateMultiUserProfile(user2);
1652 const AccountId account_id( 1653 const AccountId account_id(
1653 multi_user_util::GetAccountIdFromProfile(profile())); 1654 multi_user_util::GetAccountIdFromProfile(profile()));
1654 const AccountId account_id2( 1655 const AccountId account_id2(
1655 multi_user_util::GetAccountIdFromProfile(profile2)); 1656 multi_user_util::GetAccountIdFromProfile(profile2));
1656 SwitchActiveUser(account_id2); 1657 SwitchActiveUser(account_id2);
1657 { 1658 {
1658 // Create a "windowed gmail app". 1659 // Create a "windowed gmail app".
1659 scoped_ptr<V1App> v1_app(CreateRunningV1App( 1660 std::unique_ptr<V1App> v1_app(
1660 profile(), extension_misc::kGmailAppId, gmail_url)); 1661 CreateRunningV1App(profile(), extension_misc::kGmailAppId, gmail_url));
1661 EXPECT_EQ(2, model_->item_count()); 1662 EXPECT_EQ(2, model_->item_count());
1662 1663
1663 // However - switching to the user should show it. 1664 // However - switching to the user should show it.
1664 SwitchActiveUser(account_id); 1665 SwitchActiveUser(account_id);
1665 EXPECT_EQ(3, model_->item_count()); 1666 EXPECT_EQ(3, model_->item_count());
1666 1667
1667 // Second test: Remove the app when the user is not active and see that it 1668 // Second test: Remove the app when the user is not active and see that it
1668 // works. 1669 // works.
1669 SwitchActiveUser(account_id2); 1670 SwitchActiveUser(account_id2);
1670 EXPECT_EQ(2, model_->item_count()); 1671 EXPECT_EQ(2, model_->item_count());
(...skipping 18 matching lines...) Expand all
1689 // Create a second test profile. The first is the one in profile() created in 1690 // Create a second test profile. The first is the one in profile() created in
1690 // BrowserWithTestWindowTest::SetUp(). 1691 // BrowserWithTestWindowTest::SetUp().
1691 // No need to add the profiles to the MultiUserWindowManager here. 1692 // No need to add the profiles to the MultiUserWindowManager here.
1692 // CreateMultiUserProfile() already does that. 1693 // CreateMultiUserProfile() already does that.
1693 TestingProfile* profile2 = CreateMultiUserProfile("user2"); 1694 TestingProfile* profile2 = CreateMultiUserProfile("user2");
1694 const AccountId current_user = 1695 const AccountId current_user =
1695 multi_user_util::GetAccountIdFromProfile(profile()); 1696 multi_user_util::GetAccountIdFromProfile(profile());
1696 1697
1697 // Create a browser window with a native window for the current user. 1698 // Create a browser window with a native window for the current user.
1698 Browser::CreateParams params(profile()); 1699 Browser::CreateParams params(profile());
1699 scoped_ptr<Browser> browser( 1700 std::unique_ptr<Browser> browser(
1700 chrome::CreateBrowserWithAuraTestWindowForParams(nullptr, &params)); 1701 chrome::CreateBrowserWithAuraTestWindowForParams(nullptr, &params));
1701 BrowserWindow* browser_window = browser->window(); 1702 BrowserWindow* browser_window = browser->window();
1702 aura::Window* window = browser_window->GetNativeWindow(); 1703 aura::Window* window = browser_window->GetNativeWindow();
1703 manager->SetWindowOwner(window, current_user); 1704 manager->SetWindowOwner(window, current_user);
1704 1705
1705 // Check that an activation of the window on its owner's desktop does not 1706 // Check that an activation of the window on its owner's desktop does not
1706 // change the visibility to another user. 1707 // change the visibility to another user.
1707 launcher_controller_->ActivateWindowOrMinimizeIfActive(browser_window, false); 1708 launcher_controller_->ActivateWindowOrMinimizeIfActive(browser_window, false);
1708 EXPECT_TRUE(manager->IsWindowOnDesktopOfUser(window, current_user)); 1709 EXPECT_TRUE(manager->IsWindowOnDesktopOfUser(window, current_user));
1709 1710
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
2129 EXPECT_FALSE(items[0]->IsEnabled()); 2130 EXPECT_FALSE(items[0]->IsEnabled());
2130 for (size_t i = 0; i < expected_items; i++) { 2131 for (size_t i = 0; i < expected_items; i++) {
2131 EXPECT_EQ(title[i], items[1 + i]->title()); 2132 EXPECT_EQ(title[i], items[1 + i]->title());
2132 // Check that the first real item has a leading separator. 2133 // Check that the first real item has a leading separator.
2133 if (i == 1) 2134 if (i == 1)
2134 EXPECT_TRUE(items[i]->HasLeadingSeparator()); 2135 EXPECT_TRUE(items[i]->HasLeadingSeparator());
2135 else 2136 else
2136 EXPECT_FALSE(items[i]->HasLeadingSeparator()); 2137 EXPECT_FALSE(items[i]->HasLeadingSeparator());
2137 } 2138 }
2138 2139
2139 scoped_ptr<ash::ShelfMenuModel> menu(new LauncherApplicationMenuItemModel( 2140 std::unique_ptr<ash::ShelfMenuModel> menu(
2140 controller->GetApplicationList(item, 0))); 2141 new LauncherApplicationMenuItemModel(
2142 controller->GetApplicationList(item, 0)));
2141 // The first element in the menu is a spacing separator. On some systems 2143 // The first element in the menu is a spacing separator. On some systems
2142 // (e.g. Windows) such things do not exist. As such we check the existence 2144 // (e.g. Windows) such things do not exist. As such we check the existence
2143 // and adjust dynamically. 2145 // and adjust dynamically.
2144 int first_item = menu->GetTypeAt(0) == ui::MenuModel::TYPE_SEPARATOR ? 1 : 0; 2146 int first_item = menu->GetTypeAt(0) == ui::MenuModel::TYPE_SEPARATOR ? 1 : 0;
2145 int expected_menu_items = first_item + 2147 int expected_menu_items = first_item +
2146 (expected_items ? (expected_items + 3) : 2); 2148 (expected_items ? (expected_items + 3) : 2);
2147 EXPECT_EQ(expected_menu_items, menu->GetItemCount()); 2149 EXPECT_EQ(expected_menu_items, menu->GetItemCount());
2148 EXPECT_FALSE(menu->IsEnabledAt(first_item)); 2150 EXPECT_FALSE(menu->IsEnabledAt(first_item));
2149 if (expected_items) { 2151 if (expected_items) {
2150 EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, 2152 EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR,
(...skipping 20 matching lines...) Expand all
2171 // Now make the created browser() visible by showing its browser window. 2173 // Now make the created browser() visible by showing its browser window.
2172 browser()->window()->Show(); 2174 browser()->window()->Show();
2173 base::string16 title1 = ASCIIToUTF16("Test1"); 2175 base::string16 title1 = ASCIIToUTF16("Test1");
2174 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1); 2176 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1);
2175 base::string16 one_menu_item[] = { title1 }; 2177 base::string16 one_menu_item[] = { title1 };
2176 2178
2177 EXPECT_TRUE(CheckMenuCreation( 2179 EXPECT_TRUE(CheckMenuCreation(
2178 launcher_controller_.get(), item_browser, 1, one_menu_item, true)); 2180 launcher_controller_.get(), item_browser, 1, one_menu_item, true));
2179 2181
2180 // Create one more browser/window and check that one more was added. 2182 // Create one more browser/window and check that one more was added.
2181 scoped_ptr<Browser> browser2( 2183 std::unique_ptr<Browser> browser2(
2182 CreateBrowserWithTestWindowForProfile(profile())); 2184 CreateBrowserWithTestWindowForProfile(profile()));
2183 chrome::NewTab(browser2.get()); 2185 chrome::NewTab(browser2.get());
2184 browser2->window()->Show(); 2186 browser2->window()->Show();
2185 base::string16 title2 = ASCIIToUTF16("Test2"); 2187 base::string16 title2 = ASCIIToUTF16("Test2");
2186 NavigateAndCommitActiveTabWithTitle(browser2.get(), GURL("http://test2"), 2188 NavigateAndCommitActiveTabWithTitle(browser2.get(), GURL("http://test2"),
2187 title2); 2189 title2);
2188 2190
2189 // Check that the list contains now two entries - make furthermore sure that 2191 // Check that the list contains now two entries - make furthermore sure that
2190 // the active item is the first entry. 2192 // the active item is the first entry.
2191 base::string16 two_menu_items[] = {title1, title2}; 2193 base::string16 two_menu_items[] = {title1, title2};
(...skipping 29 matching lines...) Expand all
2221 base::string16 one_menu_item1[] = { title1 }; 2223 base::string16 one_menu_item1[] = { title1 };
2222 EXPECT_TRUE(CheckMenuCreation( 2224 EXPECT_TRUE(CheckMenuCreation(
2223 launcher_controller_.get(), item_browser, 1, one_menu_item1, true)); 2225 launcher_controller_.get(), item_browser, 1, one_menu_item1, true));
2224 2226
2225 // Create a browser for another user and check that it is not included in the 2227 // Create a browser for another user and check that it is not included in the
2226 // users running browser list. 2228 // users running browser list.
2227 std::string user2 = "user2"; 2229 std::string user2 = "user2";
2228 TestingProfile* profile2 = CreateMultiUserProfile(user2); 2230 TestingProfile* profile2 = CreateMultiUserProfile(user2);
2229 const AccountId account_id2( 2231 const AccountId account_id2(
2230 multi_user_util::GetAccountIdFromProfile(profile2)); 2232 multi_user_util::GetAccountIdFromProfile(profile2));
2231 scoped_ptr<Browser> browser2( 2233 std::unique_ptr<Browser> browser2(
2232 CreateBrowserAndTabWithProfile(profile2, user2, "http://test2")); 2234 CreateBrowserAndTabWithProfile(profile2, user2, "http://test2"));
2233 base::string16 one_menu_item2[] = { ASCIIToUTF16(user2) }; 2235 base::string16 one_menu_item2[] = { ASCIIToUTF16(user2) };
2234 EXPECT_TRUE(CheckMenuCreation( 2236 EXPECT_TRUE(CheckMenuCreation(
2235 launcher_controller_.get(), item_browser, 1, one_menu_item1, true)); 2237 launcher_controller_.get(), item_browser, 1, one_menu_item1, true));
2236 2238
2237 // Switch to the other user and make sure that only that browser window gets 2239 // Switch to the other user and make sure that only that browser window gets
2238 // shown. 2240 // shown.
2239 SwitchActiveUser(account_id2); 2241 SwitchActiveUser(account_id2);
2240 EXPECT_TRUE(CheckMenuCreation( 2242 EXPECT_TRUE(CheckMenuCreation(
2241 launcher_controller_.get(), item_browser, 1, one_menu_item2, true)); 2243 launcher_controller_.get(), item_browser, 1, one_menu_item2, true));
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
2617 ash::ShelfItem item_gmail; 2619 ash::ShelfItem item_gmail;
2618 item_gmail.type = ash::TYPE_APP_SHORTCUT; 2620 item_gmail.type = ash::TYPE_APP_SHORTCUT;
2619 item_gmail.id = gmail_id; 2621 item_gmail.id = gmail_id;
2620 base::string16 two_menu_items[] = {title1, title2}; 2622 base::string16 two_menu_items[] = {title1, title2};
2621 EXPECT_TRUE(CheckMenuCreation( 2623 EXPECT_TRUE(CheckMenuCreation(
2622 launcher_controller_.get(), item_gmail, 2, two_menu_items, false)); 2624 launcher_controller_.get(), item_gmail, 2, two_menu_items, false));
2623 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); 2625 EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
2624 // Execute the second item in the list (which shouldn't do anything since that 2626 // Execute the second item in the list (which shouldn't do anything since that
2625 // item is per definition already the active tab). 2627 // item is per definition already the active tab).
2626 { 2628 {
2627 scoped_ptr<ash::ShelfMenuModel> menu(new LauncherApplicationMenuItemModel( 2629 std::unique_ptr<ash::ShelfMenuModel> menu(
2628 launcher_controller_->GetApplicationList(item_gmail, 0))); 2630 new LauncherApplicationMenuItemModel(
2631 launcher_controller_->GetApplicationList(item_gmail, 0)));
2629 // The first element in the menu is a spacing separator. On some systems 2632 // The first element in the menu is a spacing separator. On some systems
2630 // (e.g. Windows) such things do not exist. As such we check the existence 2633 // (e.g. Windows) such things do not exist. As such we check the existence
2631 // and adjust dynamically. 2634 // and adjust dynamically.
2632 int first_item = 2635 int first_item =
2633 (menu->GetTypeAt(0) == ui::MenuModel::TYPE_SEPARATOR) ? 1 : 0; 2636 (menu->GetTypeAt(0) == ui::MenuModel::TYPE_SEPARATOR) ? 1 : 0;
2634 menu->ActivatedAt(first_item + 3); 2637 menu->ActivatedAt(first_item + 3);
2635 } 2638 }
2636 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); 2639 EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
2637 2640
2638 // Execute the first item. 2641 // Execute the first item.
2639 { 2642 {
2640 scoped_ptr<ash::ShelfMenuModel> menu(new LauncherApplicationMenuItemModel( 2643 std::unique_ptr<ash::ShelfMenuModel> menu(
2641 launcher_controller_->GetApplicationList(item_gmail, 0))); 2644 new LauncherApplicationMenuItemModel(
2645 launcher_controller_->GetApplicationList(item_gmail, 0)));
2642 int first_item = 2646 int first_item =
2643 (menu->GetTypeAt(0) == ui::MenuModel::TYPE_SEPARATOR) ? 1 : 0; 2647 (menu->GetTypeAt(0) == ui::MenuModel::TYPE_SEPARATOR) ? 1 : 0;
2644 menu->ActivatedAt(first_item + 2); 2648 menu->ActivatedAt(first_item + 2);
2645 } 2649 }
2646 // Now the active tab should be the second item. 2650 // Now the active tab should be the second item.
2647 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); 2651 EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
2648 } 2652 }
2649 2653
2650 // Checks that the generated menu list properly deletes items. 2654 // Checks that the generated menu list properly deletes items.
2651 TEST_F(ChromeLauncherControllerTest, V1AppMenuDeletionExecution) { 2655 TEST_F(ChromeLauncherControllerTest, V1AppMenuDeletionExecution) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2691 // Tests that panels create launcher items correctly 2695 // Tests that panels create launcher items correctly
2692 TEST_F(ChromeLauncherControllerTest, AppPanels) { 2696 TEST_F(ChromeLauncherControllerTest, AppPanels) {
2693 InitLauncherControllerWithBrowser(); 2697 InitLauncherControllerWithBrowser();
2694 // App list and Browser shortcut ShelfItems are added. 2698 // App list and Browser shortcut ShelfItems are added.
2695 EXPECT_EQ(2, model_observer_->added()); 2699 EXPECT_EQ(2, model_observer_->added());
2696 2700
2697 const std::string app_id = extension1_->id(); 2701 const std::string app_id = extension1_->id();
2698 // app_icon_loader is owned by ChromeLauncherController. 2702 // app_icon_loader is owned by ChromeLauncherController.
2699 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl(); 2703 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl();
2700 app_icon_loader->AddSupportedApp(app_id); 2704 app_icon_loader->AddSupportedApp(app_id);
2701 SetAppIconLoader(scoped_ptr<AppIconLoader>(app_icon_loader)); 2705 SetAppIconLoader(std::unique_ptr<AppIconLoader>(app_icon_loader));
2702 2706
2703 // Test adding an app panel 2707 // Test adding an app panel
2704 AppWindowLauncherItemController* app_panel_controller = 2708 AppWindowLauncherItemController* app_panel_controller =
2705 new ExtensionAppWindowLauncherItemController( 2709 new ExtensionAppWindowLauncherItemController(
2706 LauncherItemController::TYPE_APP_PANEL, "id", app_id, 2710 LauncherItemController::TYPE_APP_PANEL, "id", app_id,
2707 launcher_controller_.get()); 2711 launcher_controller_.get());
2708 ash::ShelfID shelf_id1 = launcher_controller_->CreateAppLauncherItem( 2712 ash::ShelfID shelf_id1 = launcher_controller_->CreateAppLauncherItem(
2709 app_panel_controller, app_id, ash::STATUS_RUNNING); 2713 app_panel_controller, app_id, ash::STATUS_RUNNING);
2710 int panel_index = model_observer_->last_index(); 2714 int panel_index = model_observer_->last_index();
2711 EXPECT_EQ(3, model_observer_->added()); 2715 EXPECT_EQ(3, model_observer_->added());
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
2873 TabStripModel* tab_strip_model = browser()->tab_strip_model(); 2877 TabStripModel* tab_strip_model = browser()->tab_strip_model();
2874 EXPECT_EQ(1, tab_strip_model->count()); 2878 EXPECT_EQ(1, tab_strip_model->count());
2875 2879
2876 TestAppTabHelperImpl* app_tab_helper = new TestAppTabHelperImpl; 2880 TestAppTabHelperImpl* app_tab_helper = new TestAppTabHelperImpl;
2877 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); 2881 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1");
2878 SetAppTabHelper(app_tab_helper); 2882 SetAppTabHelper(app_tab_helper);
2879 2883
2880 // app_icon_loader is owned by ChromeLauncherController. 2884 // app_icon_loader is owned by ChromeLauncherController.
2881 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl; 2885 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl;
2882 app_icon_loader->AddSupportedApp("1"); 2886 app_icon_loader->AddSupportedApp("1");
2883 SetAppIconLoader(scoped_ptr<AppIconLoader>(app_icon_loader)); 2887 SetAppIconLoader(std::unique_ptr<AppIconLoader>(app_icon_loader));
2884 EXPECT_EQ(0, app_icon_loader->fetch_count()); 2888 EXPECT_EQ(0, app_icon_loader->fetch_count());
2885 2889
2886 launcher_controller_->PinAppWithID("1"); 2890 launcher_controller_->PinAppWithID("1");
2887 ash::ShelfID id = launcher_controller_->GetShelfIDForAppID("1"); 2891 ash::ShelfID id = launcher_controller_->GetShelfIDForAppID("1");
2888 int app_index = model_->ItemIndexByID(id); 2892 int app_index = model_->ItemIndexByID(id);
2889 EXPECT_EQ(1, app_icon_loader->fetch_count()); 2893 EXPECT_EQ(1, app_icon_loader->fetch_count());
2890 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); 2894 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type);
2891 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); 2895 EXPECT_TRUE(launcher_controller_->IsAppPinned("1"));
2892 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); 2896 EXPECT_FALSE(launcher_controller_->IsAppPinned("0"));
2893 EXPECT_EQ(initial_size + 1, model_->items().size()); 2897 EXPECT_EQ(initial_size + 1, model_->items().size());
(...skipping 11 matching lines...) Expand all
2905 2909
2906 AddAppListLauncherItem(); 2910 AddAppListLauncherItem();
2907 launcher_controller_.reset( 2911 launcher_controller_.reset(
2908 ChromeLauncherController::CreateInstance(profile(), model_.get())); 2912 ChromeLauncherController::CreateInstance(profile(), model_.get()));
2909 app_tab_helper = new TestAppTabHelperImpl; 2913 app_tab_helper = new TestAppTabHelperImpl;
2910 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); 2914 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1");
2911 SetAppTabHelper(app_tab_helper); 2915 SetAppTabHelper(app_tab_helper);
2912 // app_icon_loader is owned by ChromeLauncherController. 2916 // app_icon_loader is owned by ChromeLauncherController.
2913 app_icon_loader = new TestAppIconLoaderImpl; 2917 app_icon_loader = new TestAppIconLoaderImpl;
2914 app_icon_loader->AddSupportedApp("1"); 2918 app_icon_loader->AddSupportedApp("1");
2915 SetAppIconLoader(scoped_ptr<AppIconLoader>(app_icon_loader)); 2919 SetAppIconLoader(std::unique_ptr<AppIconLoader>(app_icon_loader));
2916 if (!ash::Shell::HasInstance()) { 2920 if (!ash::Shell::HasInstance()) {
2917 item_delegate_manager_ = new ash::ShelfItemDelegateManager(model_.get()); 2921 item_delegate_manager_ = new ash::ShelfItemDelegateManager(model_.get());
2918 SetShelfItemDelegateManager(item_delegate_manager_); 2922 SetShelfItemDelegateManager(item_delegate_manager_);
2919 } 2923 }
2920 launcher_controller_->Init(); 2924 launcher_controller_->Init();
2921 2925
2922 EXPECT_EQ(1, app_icon_loader->fetch_count()); 2926 EXPECT_EQ(1, app_icon_loader->fetch_count());
2923 ASSERT_EQ(initial_size + 1, model_->items().size()); 2927 ASSERT_EQ(initial_size + 1, model_->items().size());
2924 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); 2928 EXPECT_TRUE(launcher_controller_->IsAppPinned("1"));
2925 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); 2929 EXPECT_FALSE(launcher_controller_->IsAppPinned("0"));
2926 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); 2930 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type);
2927 2931
2928 launcher_controller_->UnpinAppWithID("1"); 2932 launcher_controller_->UnpinAppWithID("1");
2929 ASSERT_EQ(initial_size, model_->items().size()); 2933 ASSERT_EQ(initial_size, model_->items().size());
2930 } 2934 }
2931 2935
2932 TEST_F(ChromeLauncherControllerTest, MultipleAppIconLoaders) { 2936 TEST_F(ChromeLauncherControllerTest, MultipleAppIconLoaders) {
2933 InitLauncherControllerWithBrowser(); 2937 InitLauncherControllerWithBrowser();
2934 2938
2935 const std::string app_id1 = extension1_->id(); 2939 const std::string app_id1 = extension1_->id();
2936 const std::string app_id2 = extension2_->id(); 2940 const std::string app_id2 = extension2_->id();
2937 const std::string app_id3 = extension3_->id(); 2941 const std::string app_id3 = extension3_->id();
2938 // app_icon_loader1 and app_icon_loader2 are owned by 2942 // app_icon_loader1 and app_icon_loader2 are owned by
2939 // ChromeLauncherController. 2943 // ChromeLauncherController.
2940 TestAppIconLoaderImpl* app_icon_loader1 = new TestAppIconLoaderImpl(); 2944 TestAppIconLoaderImpl* app_icon_loader1 = new TestAppIconLoaderImpl();
2941 TestAppIconLoaderImpl* app_icon_loader2 = new TestAppIconLoaderImpl(); 2945 TestAppIconLoaderImpl* app_icon_loader2 = new TestAppIconLoaderImpl();
2942 app_icon_loader1->AddSupportedApp(app_id1); 2946 app_icon_loader1->AddSupportedApp(app_id1);
2943 app_icon_loader2->AddSupportedApp(app_id2); 2947 app_icon_loader2->AddSupportedApp(app_id2);
2944 SetAppIconLoaders(scoped_ptr<AppIconLoader>(app_icon_loader1), 2948 SetAppIconLoaders(std::unique_ptr<AppIconLoader>(app_icon_loader1),
2945 scoped_ptr<AppIconLoader>(app_icon_loader2)); 2949 std::unique_ptr<AppIconLoader>(app_icon_loader2));
2946 2950
2947 AppWindowLauncherItemController* app_panel_controller3 = 2951 AppWindowLauncherItemController* app_panel_controller3 =
2948 new ExtensionAppWindowLauncherItemController( 2952 new ExtensionAppWindowLauncherItemController(
2949 LauncherItemController::TYPE_APP_PANEL, "id", app_id3, 2953 LauncherItemController::TYPE_APP_PANEL, "id", app_id3,
2950 launcher_controller_.get()); 2954 launcher_controller_.get());
2951 const ash::ShelfID shelfId3 = launcher_controller_->CreateAppLauncherItem( 2955 const ash::ShelfID shelfId3 = launcher_controller_->CreateAppLauncherItem(
2952 app_panel_controller3, app_id3, ash::STATUS_RUNNING); 2956 app_panel_controller3, app_id3, ash::STATUS_RUNNING);
2953 EXPECT_EQ(0, app_icon_loader1->fetch_count()); 2957 EXPECT_EQ(0, app_icon_loader1->fetch_count());
2954 EXPECT_EQ(0, app_icon_loader1->clear_count()); 2958 EXPECT_EQ(0, app_icon_loader1->clear_count());
2955 EXPECT_EQ(0, app_icon_loader2->fetch_count()); 2959 EXPECT_EQ(0, app_icon_loader2->fetch_count());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2990 EXPECT_EQ(1, app_icon_loader1->clear_count()); 2994 EXPECT_EQ(1, app_icon_loader1->clear_count());
2991 EXPECT_EQ(1, app_icon_loader2->fetch_count()); 2995 EXPECT_EQ(1, app_icon_loader2->fetch_count());
2992 EXPECT_EQ(1, app_icon_loader2->clear_count()); 2996 EXPECT_EQ(1, app_icon_loader2->clear_count());
2993 2997
2994 launcher_controller_->CloseLauncherItem(shelfId3); 2998 launcher_controller_->CloseLauncherItem(shelfId3);
2995 EXPECT_EQ(1, app_icon_loader1->fetch_count()); 2999 EXPECT_EQ(1, app_icon_loader1->fetch_count());
2996 EXPECT_EQ(1, app_icon_loader1->clear_count()); 3000 EXPECT_EQ(1, app_icon_loader1->clear_count());
2997 EXPECT_EQ(1, app_icon_loader2->fetch_count()); 3001 EXPECT_EQ(1, app_icon_loader2->fetch_count());
2998 EXPECT_EQ(1, app_icon_loader2->clear_count()); 3002 EXPECT_EQ(1, app_icon_loader2->clear_count());
2999 } 3003 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698