| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <map> | 10 #include <map> |
| 11 #include <memory> | 11 #include <memory> |
| 12 #include <set> | 12 #include <set> |
| 13 #include <string> | 13 #include <string> |
| 14 #include <utility> | 14 #include <utility> |
| 15 #include <vector> | 15 #include <vector> |
| 16 | 16 |
| 17 #include "ash/display/display_configuration_controller.h" | 17 #include "ash/display/display_configuration_controller.h" |
| 18 #include "ash/display/screen_orientation_controller_chromeos.h" | 18 #include "ash/display/screen_orientation_controller_chromeos.h" |
| 19 #include "ash/public/cpp/app_launch_id.h" | |
| 20 #include "ash/public/cpp/shelf_item.h" | 19 #include "ash/public/cpp/shelf_item.h" |
| 21 #include "ash/public/cpp/shelf_item_delegate.h" | 20 #include "ash/public/cpp/shelf_item_delegate.h" |
| 22 #include "ash/shelf/shelf_application_menu_model.h" | 21 #include "ash/shelf/shelf_application_menu_model.h" |
| 23 #include "ash/shelf/shelf_constants.h" | 22 #include "ash/shelf/shelf_constants.h" |
| 24 #include "ash/shelf/shelf_controller.h" | 23 #include "ash/shelf/shelf_controller.h" |
| 25 #include "ash/shelf/shelf_model.h" | 24 #include "ash/shelf/shelf_model.h" |
| 26 #include "ash/shelf/shelf_model_observer.h" | 25 #include "ash/shelf/shelf_model_observer.h" |
| 27 #include "ash/shell.h" | 26 #include "ash/shell.h" |
| 28 #include "ash/test/ash_test_helper.h" | 27 #include "ash/test/ash_test_helper.h" |
| 29 #include "ash/test/shell_test_api.h" | 28 #include "ash/test/shell_test_api.h" |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 | 247 |
| 249 TabToStringMap tab_id_map_; | 248 TabToStringMap tab_id_map_; |
| 250 | 249 |
| 251 DISALLOW_COPY_AND_ASSIGN(TestLauncherControllerHelper); | 250 DISALLOW_COPY_AND_ASSIGN(TestLauncherControllerHelper); |
| 252 }; | 251 }; |
| 253 | 252 |
| 254 // Test implementation of a V2 app launcher item controller. | 253 // Test implementation of a V2 app launcher item controller. |
| 255 class TestV2AppLauncherItemController : public ash::ShelfItemDelegate { | 254 class TestV2AppLauncherItemController : public ash::ShelfItemDelegate { |
| 256 public: | 255 public: |
| 257 explicit TestV2AppLauncherItemController(const std::string& app_id) | 256 explicit TestV2AppLauncherItemController(const std::string& app_id) |
| 258 : ash::ShelfItemDelegate(ash::AppLaunchId(app_id)) {} | 257 : ash::ShelfItemDelegate(ash::ShelfID(app_id)) {} |
| 259 | 258 |
| 260 ~TestV2AppLauncherItemController() override {} | 259 ~TestV2AppLauncherItemController() override {} |
| 261 | 260 |
| 262 // Override for ash::ShelfItemDelegate: | 261 // Override for ash::ShelfItemDelegate: |
| 263 void ItemSelected(std::unique_ptr<ui::Event> event, | 262 void ItemSelected(std::unique_ptr<ui::Event> event, |
| 264 int64_t display_id, | 263 int64_t display_id, |
| 265 ash::ShelfLaunchSource source, | 264 ash::ShelfLaunchSource source, |
| 266 const ItemSelectedCallback& callback) override { | 265 const ItemSelectedCallback& callback) override { |
| 267 callback.Run(ash::SHELF_ACTION_WINDOW_ACTIVATED, base::nullopt); | 266 callback.Run(ash::SHELF_ACTION_WINDOW_ACTIVATED, base::nullopt); |
| 268 } | 267 } |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 std::unique_ptr<Browser> CreateBrowserWithTestWindowForProfile( | 588 std::unique_ptr<Browser> CreateBrowserWithTestWindowForProfile( |
| 590 Profile* profile) { | 589 Profile* profile) { |
| 591 TestBrowserWindow* browser_window = CreateTestBrowserWindowAura(); | 590 TestBrowserWindow* browser_window = CreateTestBrowserWindowAura(); |
| 592 new TestBrowserWindowOwner(browser_window); | 591 new TestBrowserWindowOwner(browser_window); |
| 593 return base::WrapUnique( | 592 return base::WrapUnique( |
| 594 CreateBrowser(profile, Browser::TYPE_TABBED, false, browser_window)); | 593 CreateBrowser(profile, Browser::TYPE_TABBED, false, browser_window)); |
| 595 } | 594 } |
| 596 | 595 |
| 597 void AddAppListLauncherItem() { | 596 void AddAppListLauncherItem() { |
| 598 ash::ShelfItem app_list; | 597 ash::ShelfItem app_list; |
| 598 app_list.id = ash::ShelfID("AppListId"); |
| 599 app_list.type = ash::TYPE_APP_LIST; | 599 app_list.type = ash::TYPE_APP_LIST; |
| 600 model_->Add(app_list); | 600 model_->Add(app_list); |
| 601 } | 601 } |
| 602 | 602 |
| 603 // Create a launcher controller instance, owned by the test shell delegate. | 603 // Create a launcher controller instance, owned by the test shell delegate. |
| 604 // Returns a pointer to the uninitialized controller. | 604 // Returns a pointer to the uninitialized controller. |
| 605 ChromeLauncherController* CreateLauncherController() { | 605 ChromeLauncherController* CreateLauncherController() { |
| 606 launcher_controller_ = shell_delegate_->CreateLauncherController(profile()); | 606 launcher_controller_ = shell_delegate_->CreateLauncherController(profile()); |
| 607 return launcher_controller_; | 607 return launcher_controller_; |
| 608 } | 608 } |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 FROM_HERE, syncer::SyncChange::ACTION_UPDATE, sync_data)); | 820 FROM_HERE, syncer::SyncChange::ACTION_UPDATE, sync_data)); |
| 821 app_service_->ProcessSyncChanges(FROM_HERE, sync_list); | 821 app_service_->ProcessSyncChanges(FROM_HERE, sync_list); |
| 822 } | 822 } |
| 823 | 823 |
| 824 // Gets the IDs of the currently pinned app items. | 824 // Gets the IDs of the currently pinned app items. |
| 825 void GetPinnedAppIds(ChromeLauncherController* controller, | 825 void GetPinnedAppIds(ChromeLauncherController* controller, |
| 826 std::vector<std::string>* app_ids) { | 826 std::vector<std::string>* app_ids) { |
| 827 app_ids->clear(); | 827 app_ids->clear(); |
| 828 for (const auto& item : model_->items()) { | 828 for (const auto& item : model_->items()) { |
| 829 if (item.type == ash::TYPE_PINNED_APP) | 829 if (item.type == ash::TYPE_PINNED_APP) |
| 830 app_ids->push_back(item.app_launch_id.app_id()); | 830 app_ids->push_back(item.id.app_id); |
| 831 } | 831 } |
| 832 } | 832 } |
| 833 | 833 |
| 834 // Get the setup of the currently shown launcher items in one string. | 834 // Get the setup of the currently shown launcher items in one string. |
| 835 // Each pinned element will start with a big letter, each running but not | 835 // Each pinned element will start with a big letter, each running but not |
| 836 // pinned V1 app will start with a small letter and each running but not | 836 // pinned V1 app will start with a small letter and each running but not |
| 837 // pinned V2 app will start with a '*' + small letter. | 837 // pinned V2 app will start with a '*' + small letter. |
| 838 std::string GetPinnedAppStatus() { | 838 std::string GetPinnedAppStatus() { |
| 839 std::string result; | 839 std::string result; |
| 840 for (int i = 0; i < model_->item_count(); i++) { | 840 for (int i = 0; i < model_->item_count(); i++) { |
| (...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1692 UnloadedExtensionReason::UPDATE); | 1692 UnloadedExtensionReason::UPDATE); |
| 1693 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); | 1693 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); |
| 1694 } | 1694 } |
| 1695 | 1695 |
| 1696 // Test the V1 app interaction flow: run it, activate it, close it. | 1696 // Test the V1 app interaction flow: run it, activate it, close it. |
| 1697 TEST_F(ChromeLauncherControllerTest, V1AppRunActivateClose) { | 1697 TEST_F(ChromeLauncherControllerTest, V1AppRunActivateClose) { |
| 1698 InitLauncherController(); | 1698 InitLauncherController(); |
| 1699 // The model should only contain the browser shortcut and app list items. | 1699 // The model should only contain the browser shortcut and app list items. |
| 1700 EXPECT_EQ(2, model_->item_count()); | 1700 EXPECT_EQ(2, model_->item_count()); |
| 1701 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1701 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1702 EXPECT_EQ(ash::kInvalidShelfID, | 1702 EXPECT_TRUE( |
| 1703 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1703 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1704 | 1704 |
| 1705 // Reporting that the app is running should create a new shelf item. | 1705 // Reporting that the app is running should create a new shelf item. |
| 1706 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); | 1706 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); |
| 1707 EXPECT_EQ(3, model_->item_count()); | 1707 EXPECT_EQ(3, model_->item_count()); |
| 1708 EXPECT_EQ(ash::TYPE_APP, model_->items()[2].type); | 1708 EXPECT_EQ(ash::TYPE_APP, model_->items()[2].type); |
| 1709 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); | 1709 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); |
| 1710 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1710 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1711 EXPECT_NE(ash::kInvalidShelfID, | 1711 EXPECT_FALSE( |
| 1712 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1712 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1713 | 1713 |
| 1714 // Reporting an active status should just update the existing item. | 1714 // Reporting an active status should just update the existing item. |
| 1715 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_ACTIVE); | 1715 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_ACTIVE); |
| 1716 EXPECT_EQ(3, model_->item_count()); | 1716 EXPECT_EQ(3, model_->item_count()); |
| 1717 EXPECT_EQ(ash::STATUS_ACTIVE, model_->items()[2].status); | 1717 EXPECT_EQ(ash::STATUS_ACTIVE, model_->items()[2].status); |
| 1718 | 1718 |
| 1719 // Reporting that the app is closed should remove its shelf item. | 1719 // Reporting that the app is closed should remove its shelf item. |
| 1720 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); | 1720 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); |
| 1721 EXPECT_EQ(2, model_->item_count()); | 1721 EXPECT_EQ(2, model_->item_count()); |
| 1722 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1722 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1723 EXPECT_EQ(ash::kInvalidShelfID, | 1723 EXPECT_TRUE( |
| 1724 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1724 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1725 | 1725 |
| 1726 // Reporting that the app is closed again should have no effect. | 1726 // Reporting that the app is closed again should have no effect. |
| 1727 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); | 1727 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); |
| 1728 EXPECT_EQ(2, model_->item_count()); | 1728 EXPECT_EQ(2, model_->item_count()); |
| 1729 } | 1729 } |
| 1730 | 1730 |
| 1731 // Test the V1 app interaction flow: pin it, run it, close it, unpin it. | 1731 // Test the V1 app interaction flow: pin it, run it, close it, unpin it. |
| 1732 TEST_F(ChromeLauncherControllerTest, V1AppPinRunCloseUnpin) { | 1732 TEST_F(ChromeLauncherControllerTest, V1AppPinRunCloseUnpin) { |
| 1733 InitLauncherController(); | 1733 InitLauncherController(); |
| 1734 // The model should only contain the browser shortcut and app list items. | 1734 // The model should only contain the browser shortcut and app list items. |
| 1735 EXPECT_EQ(2, model_->item_count()); | 1735 EXPECT_EQ(2, model_->item_count()); |
| 1736 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1736 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1737 EXPECT_EQ(ash::kInvalidShelfID, | 1737 EXPECT_TRUE( |
| 1738 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1738 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1739 | 1739 |
| 1740 // Pinning the app should create a new shelf item. | 1740 // Pinning the app should create a new shelf item. |
| 1741 launcher_controller_->PinAppWithID(extension1_->id()); | 1741 launcher_controller_->PinAppWithID(extension1_->id()); |
| 1742 EXPECT_EQ(3, model_->item_count()); | 1742 EXPECT_EQ(3, model_->item_count()); |
| 1743 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 1743 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
| 1744 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); | 1744 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); |
| 1745 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1745 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1746 EXPECT_NE(ash::kInvalidShelfID, | 1746 EXPECT_FALSE( |
| 1747 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1747 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1748 | 1748 |
| 1749 // Reporting that the app is running should just update the existing item. | 1749 // Reporting that the app is running should just update the existing item. |
| 1750 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); | 1750 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); |
| 1751 EXPECT_EQ(3, model_->item_count()); | 1751 EXPECT_EQ(3, model_->item_count()); |
| 1752 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 1752 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
| 1753 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); | 1753 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); |
| 1754 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1754 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1755 EXPECT_NE(ash::kInvalidShelfID, | 1755 EXPECT_FALSE( |
| 1756 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1756 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1757 | 1757 |
| 1758 // Reporting that the app is closed should just update the existing item. | 1758 // Reporting that the app is closed should just update the existing item. |
| 1759 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); | 1759 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); |
| 1760 EXPECT_EQ(3, model_->item_count()); | 1760 EXPECT_EQ(3, model_->item_count()); |
| 1761 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 1761 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
| 1762 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); | 1762 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); |
| 1763 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1763 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1764 EXPECT_NE(ash::kInvalidShelfID, | 1764 EXPECT_FALSE( |
| 1765 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1765 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1766 | 1766 |
| 1767 // Unpinning the app should remove its shelf item. | 1767 // Unpinning the app should remove its shelf item. |
| 1768 launcher_controller_->UnpinAppWithID(extension1_->id()); | 1768 launcher_controller_->UnpinAppWithID(extension1_->id()); |
| 1769 EXPECT_EQ(2, model_->item_count()); | 1769 EXPECT_EQ(2, model_->item_count()); |
| 1770 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1770 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1771 EXPECT_EQ(ash::kInvalidShelfID, | 1771 EXPECT_TRUE( |
| 1772 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1772 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1773 } | 1773 } |
| 1774 | 1774 |
| 1775 // Test the V1 app interaction flow: run it, pin it, close it, unpin it. | 1775 // Test the V1 app interaction flow: run it, pin it, close it, unpin it. |
| 1776 TEST_F(ChromeLauncherControllerTest, V1AppRunPinCloseUnpin) { | 1776 TEST_F(ChromeLauncherControllerTest, V1AppRunPinCloseUnpin) { |
| 1777 InitLauncherController(); | 1777 InitLauncherController(); |
| 1778 // The model should only contain the browser shortcut and app list items. | 1778 // The model should only contain the browser shortcut and app list items. |
| 1779 EXPECT_EQ(2, model_->item_count()); | 1779 EXPECT_EQ(2, model_->item_count()); |
| 1780 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1780 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1781 EXPECT_EQ(ash::kInvalidShelfID, | 1781 EXPECT_TRUE( |
| 1782 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1782 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1783 | 1783 |
| 1784 // Reporting that the app is running should create a new shelf item. | 1784 // Reporting that the app is running should create a new shelf item. |
| 1785 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); | 1785 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); |
| 1786 EXPECT_EQ(3, model_->item_count()); | 1786 EXPECT_EQ(3, model_->item_count()); |
| 1787 EXPECT_EQ(ash::TYPE_APP, model_->items()[2].type); | 1787 EXPECT_EQ(ash::TYPE_APP, model_->items()[2].type); |
| 1788 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); | 1788 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); |
| 1789 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1789 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1790 EXPECT_NE(ash::kInvalidShelfID, | 1790 EXPECT_FALSE( |
| 1791 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1791 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1792 | 1792 |
| 1793 // Pinning the app should just update the existing item. | 1793 // Pinning the app should just update the existing item. |
| 1794 launcher_controller_->PinAppWithID(extension1_->id()); | 1794 launcher_controller_->PinAppWithID(extension1_->id()); |
| 1795 EXPECT_EQ(3, model_->item_count()); | 1795 EXPECT_EQ(3, model_->item_count()); |
| 1796 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 1796 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
| 1797 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); | 1797 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); |
| 1798 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1798 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1799 EXPECT_NE(ash::kInvalidShelfID, | 1799 EXPECT_FALSE( |
| 1800 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1800 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1801 | 1801 |
| 1802 // Reporting that the app is closed should just update the existing item. | 1802 // Reporting that the app is closed should just update the existing item. |
| 1803 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); | 1803 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); |
| 1804 EXPECT_EQ(3, model_->item_count()); | 1804 EXPECT_EQ(3, model_->item_count()); |
| 1805 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 1805 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
| 1806 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); | 1806 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); |
| 1807 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1807 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1808 EXPECT_NE(ash::kInvalidShelfID, | 1808 EXPECT_FALSE( |
| 1809 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1809 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1810 | 1810 |
| 1811 // Unpinning the app should remove its shelf item. | 1811 // Unpinning the app should remove its shelf item. |
| 1812 launcher_controller_->UnpinAppWithID(extension1_->id()); | 1812 launcher_controller_->UnpinAppWithID(extension1_->id()); |
| 1813 EXPECT_EQ(2, model_->item_count()); | 1813 EXPECT_EQ(2, model_->item_count()); |
| 1814 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1814 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1815 EXPECT_EQ(ash::kInvalidShelfID, | 1815 EXPECT_TRUE( |
| 1816 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1816 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1817 } | 1817 } |
| 1818 | 1818 |
| 1819 // Test the V1 app interaction flow: pin it, run it, unpin it, close it. | 1819 // Test the V1 app interaction flow: pin it, run it, unpin it, close it. |
| 1820 TEST_F(ChromeLauncherControllerTest, V1AppPinRunUnpinClose) { | 1820 TEST_F(ChromeLauncherControllerTest, V1AppPinRunUnpinClose) { |
| 1821 InitLauncherController(); | 1821 InitLauncherController(); |
| 1822 // The model should only contain the browser shortcut and app list items. | 1822 // The model should only contain the browser shortcut and app list items. |
| 1823 EXPECT_EQ(2, model_->item_count()); | 1823 EXPECT_EQ(2, model_->item_count()); |
| 1824 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1824 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1825 EXPECT_EQ(ash::kInvalidShelfID, | 1825 EXPECT_TRUE( |
| 1826 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1826 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1827 | 1827 |
| 1828 // Pinning the app should create a new shelf item. | 1828 // Pinning the app should create a new shelf item. |
| 1829 launcher_controller_->PinAppWithID(extension1_->id()); | 1829 launcher_controller_->PinAppWithID(extension1_->id()); |
| 1830 EXPECT_EQ(3, model_->item_count()); | 1830 EXPECT_EQ(3, model_->item_count()); |
| 1831 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 1831 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
| 1832 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); | 1832 EXPECT_EQ(ash::STATUS_CLOSED, model_->items()[2].status); |
| 1833 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1833 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1834 EXPECT_NE(ash::kInvalidShelfID, | 1834 EXPECT_FALSE( |
| 1835 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1835 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1836 | 1836 |
| 1837 // Reporting that the app is running should just update the existing item. | 1837 // Reporting that the app is running should just update the existing item. |
| 1838 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); | 1838 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); |
| 1839 EXPECT_EQ(3, model_->item_count()); | 1839 EXPECT_EQ(3, model_->item_count()); |
| 1840 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 1840 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
| 1841 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); | 1841 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); |
| 1842 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1842 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1843 EXPECT_NE(ash::kInvalidShelfID, | 1843 EXPECT_FALSE( |
| 1844 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1844 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1845 | 1845 |
| 1846 // Unpinning the app should just update the existing item. | 1846 // Unpinning the app should just update the existing item. |
| 1847 launcher_controller_->UnpinAppWithID(extension1_->id()); | 1847 launcher_controller_->UnpinAppWithID(extension1_->id()); |
| 1848 EXPECT_EQ(3, model_->item_count()); | 1848 EXPECT_EQ(3, model_->item_count()); |
| 1849 EXPECT_EQ(ash::TYPE_APP, model_->items()[2].type); | 1849 EXPECT_EQ(ash::TYPE_APP, model_->items()[2].type); |
| 1850 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); | 1850 EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[2].status); |
| 1851 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1851 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1852 EXPECT_NE(ash::kInvalidShelfID, | 1852 EXPECT_FALSE( |
| 1853 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1853 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1854 | 1854 |
| 1855 // Reporting that the app is closed should remove its shelf item. | 1855 // Reporting that the app is closed should remove its shelf item. |
| 1856 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); | 1856 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_CLOSED); |
| 1857 EXPECT_EQ(2, model_->item_count()); | 1857 EXPECT_EQ(2, model_->item_count()); |
| 1858 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1858 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1859 EXPECT_EQ(ash::kInvalidShelfID, | 1859 EXPECT_TRUE( |
| 1860 launcher_controller_->GetShelfIDForAppID(extension1_->id())); | 1860 launcher_controller_->GetShelfIDForAppID(extension1_->id()).IsNull()); |
| 1861 } | 1861 } |
| 1862 | 1862 |
| 1863 // Ensure unpinned V1 app ordering is properly restored after user changes. | 1863 // Ensure unpinned V1 app ordering is properly restored after user changes. |
| 1864 TEST_F(ChromeLauncherControllerTest, CheckRunningV1AppOrder) { | 1864 TEST_F(ChromeLauncherControllerTest, CheckRunningV1AppOrder) { |
| 1865 InitLauncherController(); | 1865 InitLauncherController(); |
| 1866 // The model should only contain the browser shortcut and app list items. | 1866 // The model should only contain the browser shortcut and app list items. |
| 1867 EXPECT_EQ(2, model_->item_count()); | 1867 EXPECT_EQ(2, model_->item_count()); |
| 1868 | 1868 |
| 1869 // Add a few running applications. | 1869 // Add a few running applications. |
| 1870 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); | 1870 launcher_controller_->SetV1AppStatus(extension1_->id(), ash::STATUS_RUNNING); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1920 const std::string arc_app_id1 = ArcAppTest::GetAppId(app1); | 1920 const std::string arc_app_id1 = ArcAppTest::GetAppId(app1); |
| 1921 const std::string arc_app_id2 = ArcAppTest::GetAppId(app2); | 1921 const std::string arc_app_id2 = ArcAppTest::GetAppId(app2); |
| 1922 const std::string arc_app_id3 = ArcAppTest::GetAppId(app3); | 1922 const std::string arc_app_id3 = ArcAppTest::GetAppId(app3); |
| 1923 const std::string arc_shortcut_id = ArcAppTest::GetAppId(shortcut); | 1923 const std::string arc_shortcut_id = ArcAppTest::GetAppId(shortcut); |
| 1924 | 1924 |
| 1925 SendListOfArcApps(); | 1925 SendListOfArcApps(); |
| 1926 SendListOfArcShortcuts(); | 1926 SendListOfArcShortcuts(); |
| 1927 | 1927 |
| 1928 arc_test_.StopArcInstance(); | 1928 arc_test_.StopArcInstance(); |
| 1929 | 1929 |
| 1930 EXPECT_EQ(ash::kInvalidShelfID, | 1930 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 1931 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 1931 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 1932 EXPECT_EQ(ash::kInvalidShelfID, | 1932 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id3).IsNull()); |
| 1933 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | 1933 EXPECT_TRUE( |
| 1934 EXPECT_EQ(ash::kInvalidShelfID, | 1934 launcher_controller_->GetShelfIDForAppID(arc_shortcut_id).IsNull()); |
| 1935 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); | |
| 1936 EXPECT_EQ(ash::kInvalidShelfID, | |
| 1937 launcher_controller_->GetShelfIDForAppID(arc_shortcut_id)); | |
| 1938 | 1935 |
| 1939 arc::LaunchApp(profile(), arc_app_id1, ui::EF_LEFT_MOUSE_BUTTON); | 1936 arc::LaunchApp(profile(), arc_app_id1, ui::EF_LEFT_MOUSE_BUTTON); |
| 1940 arc::LaunchApp(profile(), arc_app_id1, ui::EF_LEFT_MOUSE_BUTTON); | 1937 arc::LaunchApp(profile(), arc_app_id1, ui::EF_LEFT_MOUSE_BUTTON); |
| 1941 arc::LaunchApp(profile(), arc_app_id2, ui::EF_LEFT_MOUSE_BUTTON); | 1938 arc::LaunchApp(profile(), arc_app_id2, ui::EF_LEFT_MOUSE_BUTTON); |
| 1942 arc::LaunchApp(profile(), arc_app_id3, ui::EF_LEFT_MOUSE_BUTTON); | 1939 arc::LaunchApp(profile(), arc_app_id3, ui::EF_LEFT_MOUSE_BUTTON); |
| 1943 arc::LaunchApp(profile(), arc_shortcut_id, ui::EF_LEFT_MOUSE_BUTTON); | 1940 arc::LaunchApp(profile(), arc_shortcut_id, ui::EF_LEFT_MOUSE_BUTTON); |
| 1944 | 1941 |
| 1945 const ash::ShelfID shelf_id_app_1 = | 1942 const ash::ShelfID shelf_id_app_1 = |
| 1946 launcher_controller_->GetShelfIDForAppID(arc_app_id1); | 1943 launcher_controller_->GetShelfIDForAppID(arc_app_id1); |
| 1947 const ash::ShelfID shelf_id_app_2 = | 1944 const ash::ShelfID shelf_id_app_2 = |
| 1948 launcher_controller_->GetShelfIDForAppID(arc_app_id2); | 1945 launcher_controller_->GetShelfIDForAppID(arc_app_id2); |
| 1949 const ash::ShelfID shelf_id_app_3 = | 1946 const ash::ShelfID shelf_id_app_3 = |
| 1950 launcher_controller_->GetShelfIDForAppID(arc_app_id3); | 1947 launcher_controller_->GetShelfIDForAppID(arc_app_id3); |
| 1951 const ash::ShelfID shelf_id_shortcut = | 1948 const ash::ShelfID shelf_id_shortcut = |
| 1952 launcher_controller_->GetShelfIDForAppID(arc_shortcut_id); | 1949 launcher_controller_->GetShelfIDForAppID(arc_shortcut_id); |
| 1953 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_1); | 1950 EXPECT_FALSE(shelf_id_app_1.IsNull()); |
| 1954 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_2); | 1951 EXPECT_FALSE(shelf_id_app_2.IsNull()); |
| 1955 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_3); | 1952 EXPECT_FALSE(shelf_id_app_3.IsNull()); |
| 1956 EXPECT_NE(ash::kInvalidShelfID, shelf_id_shortcut); | 1953 EXPECT_FALSE(shelf_id_shortcut.IsNull()); |
| 1957 | 1954 |
| 1958 // We activated arc_app_id1 twice but expect one close for item controller | 1955 // We activated arc_app_id1 twice but expect one close for item controller |
| 1959 // stops launching request. | 1956 // stops launching request. |
| 1960 ash::ShelfItemDelegate* item_delegate = | 1957 ash::ShelfItemDelegate* item_delegate = |
| 1961 model_->GetShelfItemDelegate(shelf_id_app_1); | 1958 model_->GetShelfItemDelegate(shelf_id_app_1); |
| 1962 ASSERT_NE(nullptr, item_delegate); | 1959 ASSERT_NE(nullptr, item_delegate); |
| 1963 item_delegate->Close(); | 1960 item_delegate->Close(); |
| 1964 base::RunLoop().RunUntilIdle(); | 1961 base::RunLoop().RunUntilIdle(); |
| 1965 | 1962 |
| 1966 EXPECT_EQ(ash::kInvalidShelfID, | 1963 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 1967 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | |
| 1968 EXPECT_EQ(shelf_id_app_2, | 1964 EXPECT_EQ(shelf_id_app_2, |
| 1969 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | 1965 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); |
| 1970 EXPECT_EQ(shelf_id_app_3, | 1966 EXPECT_EQ(shelf_id_app_3, |
| 1971 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); | 1967 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); |
| 1972 | 1968 |
| 1973 arc_test_.RestartArcInstance(); | 1969 arc_test_.RestartArcInstance(); |
| 1974 SendListOfArcApps(); | 1970 SendListOfArcApps(); |
| 1975 | 1971 |
| 1976 base::RunLoop().RunUntilIdle(); | 1972 base::RunLoop().RunUntilIdle(); |
| 1977 | 1973 |
| 1978 // Now deferred contollers should go away together with shelf items and ARC | 1974 // Now deferred contollers should go away together with shelf items and ARC |
| 1979 // app instance should receive request for launching apps and shortcuts. | 1975 // app instance should receive request for launching apps and shortcuts. |
| 1980 EXPECT_EQ(ash::kInvalidShelfID, | 1976 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 1981 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 1977 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 1982 EXPECT_EQ(ash::kInvalidShelfID, | 1978 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id3).IsNull()); |
| 1983 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 1984 EXPECT_EQ(ash::kInvalidShelfID, | |
| 1985 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); | |
| 1986 | 1979 |
| 1987 ASSERT_EQ(2U, arc_test_.app_instance()->launch_requests().size()); | 1980 ASSERT_EQ(2U, arc_test_.app_instance()->launch_requests().size()); |
| 1988 ASSERT_EQ(1U, arc_test_.app_instance()->launch_intents().size()); | 1981 ASSERT_EQ(1U, arc_test_.app_instance()->launch_intents().size()); |
| 1989 | 1982 |
| 1990 const arc::FakeAppInstance::Request* request1 = | 1983 const arc::FakeAppInstance::Request* request1 = |
| 1991 arc_test_.app_instance()->launch_requests()[0].get(); | 1984 arc_test_.app_instance()->launch_requests()[0].get(); |
| 1992 const arc::FakeAppInstance::Request* request2 = | 1985 const arc::FakeAppInstance::Request* request2 = |
| 1993 arc_test_.app_instance()->launch_requests()[1].get(); | 1986 arc_test_.app_instance()->launch_requests()[1].get(); |
| 1994 | 1987 |
| 1995 EXPECT_TRUE((request1->IsForApp(app2) && request2->IsForApp(app3)) || | 1988 EXPECT_TRUE((request1->IsForApp(app2) && request2->IsForApp(app3)) || |
| 1996 (request1->IsForApp(app3) && request2->IsForApp(app2))); | 1989 (request1->IsForApp(app3) && request2->IsForApp(app2))); |
| 1997 EXPECT_EQ(arc_test_.app_instance()->launch_intents()[0].c_str(), | 1990 EXPECT_EQ(arc_test_.app_instance()->launch_intents()[0].c_str(), |
| 1998 shortcut.intent_uri); | 1991 shortcut.intent_uri); |
| 1999 } | 1992 } |
| 2000 | 1993 |
| 2001 // Ensure the deferred controller does not override the active app controller | 1994 // Ensure the deferred controller does not override the active app controller |
| 2002 // (crbug.com/701152). | 1995 // (crbug.com/701152). |
| 2003 TEST_P(ChromeLauncherControllerWithArcTest, ArcDeferredLaunchForActiveApp) { | 1996 TEST_P(ChromeLauncherControllerWithArcTest, ArcDeferredLaunchForActiveApp) { |
| 2004 InitLauncherController(); | 1997 InitLauncherController(); |
| 2005 SendListOfArcApps(); | 1998 SendListOfArcApps(); |
| 2006 arc_test_.StopArcInstance(); | 1999 arc_test_.StopArcInstance(); |
| 2007 | 2000 |
| 2008 const arc::mojom::AppInfo& app = arc_test_.fake_apps()[0]; | 2001 const arc::mojom::AppInfo& app = arc_test_.fake_apps()[0]; |
| 2009 const std::string app_id = ArcAppTest::GetAppId(app); | 2002 const std::string app_id = ArcAppTest::GetAppId(app); |
| 2010 | 2003 |
| 2011 launcher_controller_->PinAppWithID(app_id); | 2004 launcher_controller_->PinAppWithID(app_id); |
| 2012 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); | 2005 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); |
| 2013 const ash::ShelfID shelf_id = | 2006 const ash::ShelfID shelf_id = |
| 2014 launcher_controller_->GetShelfIDForAppID(app_id); | 2007 launcher_controller_->GetShelfIDForAppID(app_id); |
| 2015 EXPECT_NE(ash::kInvalidShelfID, shelf_id); | 2008 EXPECT_FALSE(shelf_id.IsNull()); |
| 2016 | 2009 |
| 2017 int item_index = model_->ItemIndexByID(shelf_id); | 2010 int item_index = model_->ItemIndexByID(shelf_id); |
| 2018 ASSERT_GE(item_index, 0); | 2011 ASSERT_GE(item_index, 0); |
| 2019 | 2012 |
| 2020 EXPECT_EQ(model_->items()[item_index].status, ash::STATUS_CLOSED); | 2013 EXPECT_EQ(model_->items()[item_index].status, ash::STATUS_CLOSED); |
| 2021 EXPECT_EQ(model_->items()[item_index].type, ash::TYPE_PINNED_APP); | 2014 EXPECT_EQ(model_->items()[item_index].type, ash::TYPE_PINNED_APP); |
| 2022 | 2015 |
| 2023 // Play Store app is ARC app that might be represented by native Chrome | 2016 // Play Store app is ARC app that might be represented by native Chrome |
| 2024 // platform app. | 2017 // platform app. |
| 2025 model_->SetShelfItemDelegate( | 2018 model_->SetShelfItemDelegate( |
| 2026 shelf_id, base::MakeUnique<ExtensionAppWindowLauncherItemController>( | 2019 shelf_id, base::MakeUnique<ExtensionAppWindowLauncherItemController>( |
| 2027 ash::AppLaunchId(app_id))); | 2020 ash::ShelfID(app_id))); |
| 2028 launcher_controller_->SetItemStatus(shelf_id, ash::STATUS_RUNNING); | 2021 launcher_controller_->SetItemStatus(shelf_id, ash::STATUS_RUNNING); |
| 2029 | 2022 |
| 2030 // This launch request should be ignored in case of active app. | 2023 // This launch request should be ignored in case of active app. |
| 2031 arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON); | 2024 arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON); |
| 2032 EXPECT_FALSE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); | 2025 EXPECT_FALSE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); |
| 2033 | 2026 |
| 2034 // Close app but shortcut should exist. | 2027 // Close app but shortcut should exist. |
| 2035 launcher_controller_->CloseLauncherItem(shelf_id); | 2028 launcher_controller_->CloseLauncherItem(shelf_id); |
| 2036 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(app_id)); | 2029 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(app_id)); |
| 2037 | 2030 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2071 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 2064 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 2072 const std::string arc_app_id2 = | 2065 const std::string arc_app_id2 = |
| 2073 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); | 2066 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); |
| 2074 const std::string arc_app_id3 = | 2067 const std::string arc_app_id3 = |
| 2075 ArcAppTest::GetAppId(arc_test_.fake_apps()[2]); | 2068 ArcAppTest::GetAppId(arc_test_.fake_apps()[2]); |
| 2076 | 2069 |
| 2077 std::string window_app_id1("org.chromium.arc.1"); | 2070 std::string window_app_id1("org.chromium.arc.1"); |
| 2078 views::Widget* arc_window1 = CreateArcWindow(window_app_id1); | 2071 views::Widget* arc_window1 = CreateArcWindow(window_app_id1); |
| 2079 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], | 2072 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], |
| 2080 std::string()); | 2073 std::string()); |
| 2081 EXPECT_NE(ash::kInvalidShelfID, | 2074 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 2082 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | |
| 2083 | 2075 |
| 2084 std::string window_app_id2("org.chromium.arc.2"); | 2076 std::string window_app_id2("org.chromium.arc.2"); |
| 2085 views::Widget* arc_window2 = CreateArcWindow(window_app_id2); | 2077 views::Widget* arc_window2 = CreateArcWindow(window_app_id2); |
| 2086 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[1], | 2078 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[1], |
| 2087 std::string()); | 2079 std::string()); |
| 2088 EXPECT_NE(ash::kInvalidShelfID, | 2080 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 2089 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 2090 | 2081 |
| 2091 launcher_controller_->SetProfileForTest(profile2); | 2082 launcher_controller_->SetProfileForTest(profile2); |
| 2092 SwitchActiveUser(account_id2); | 2083 SwitchActiveUser(account_id2); |
| 2093 | 2084 |
| 2094 EXPECT_EQ(ash::kInvalidShelfID, | 2085 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 2095 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 2086 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 2096 EXPECT_EQ(ash::kInvalidShelfID, | |
| 2097 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 2098 | 2087 |
| 2099 std::string window_app_id3("org.chromium.arc.3"); | 2088 std::string window_app_id3("org.chromium.arc.3"); |
| 2100 views::Widget* arc_window3 = CreateArcWindow(window_app_id3); | 2089 views::Widget* arc_window3 = CreateArcWindow(window_app_id3); |
| 2101 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[2], | 2090 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[2], |
| 2102 std::string()); | 2091 std::string()); |
| 2103 EXPECT_EQ(ash::kInvalidShelfID, | 2092 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id3).IsNull()); |
| 2104 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); | |
| 2105 | 2093 |
| 2106 arc_window2->CloseNow(); | 2094 arc_window2->CloseNow(); |
| 2107 arc_test_.app_instance()->SendTaskDestroyed(2); | 2095 arc_test_.app_instance()->SendTaskDestroyed(2); |
| 2108 | 2096 |
| 2109 launcher_controller_->SetProfileForTest(profile()); | 2097 launcher_controller_->SetProfileForTest(profile()); |
| 2110 SwitchActiveUser(account_id); | 2098 SwitchActiveUser(account_id); |
| 2111 | 2099 |
| 2112 EXPECT_NE(ash::kInvalidShelfID, | 2100 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 2113 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 2101 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 2114 EXPECT_EQ(ash::kInvalidShelfID, | 2102 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id3).IsNull()); |
| 2115 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 2116 EXPECT_NE(ash::kInvalidShelfID, | |
| 2117 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); | |
| 2118 | 2103 |
| 2119 // Close active window to let test passes. | 2104 // Close active window to let test passes. |
| 2120 arc_window1->CloseNow(); | 2105 arc_window1->CloseNow(); |
| 2121 arc_window3->CloseNow(); | 2106 arc_window3->CloseNow(); |
| 2122 } | 2107 } |
| 2123 | 2108 |
| 2124 TEST_P(ChromeLauncherControllerWithArcTest, ArcRunningApp) { | 2109 TEST_P(ChromeLauncherControllerWithArcTest, ArcRunningApp) { |
| 2125 InitLauncherController(); | 2110 InitLauncherController(); |
| 2126 | 2111 |
| 2127 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 2112 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 2128 SendListOfArcApps(); | 2113 SendListOfArcApps(); |
| 2129 EXPECT_EQ(ash::kInvalidShelfID, | 2114 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id).IsNull()); |
| 2130 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | |
| 2131 | 2115 |
| 2132 // Normal flow, create/destroy tasks. | 2116 // Normal flow, create/destroy tasks. |
| 2133 std::string window_app_id1("org.chromium.arc.1"); | 2117 std::string window_app_id1("org.chromium.arc.1"); |
| 2134 std::string window_app_id2("org.chromium.arc.2"); | 2118 std::string window_app_id2("org.chromium.arc.2"); |
| 2135 std::string window_app_id3("org.chromium.arc.3"); | 2119 std::string window_app_id3("org.chromium.arc.3"); |
| 2136 CreateArcWindow(window_app_id1); | 2120 CreateArcWindow(window_app_id1); |
| 2137 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], | 2121 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], |
| 2138 std::string()); | 2122 std::string()); |
| 2139 EXPECT_NE(ash::kInvalidShelfID, | 2123 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id).IsNull()); |
| 2140 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | |
| 2141 CreateArcWindow(window_app_id2); | 2124 CreateArcWindow(window_app_id2); |
| 2142 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[0], | 2125 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[0], |
| 2143 std::string()); | 2126 std::string()); |
| 2144 EXPECT_NE(ash::kInvalidShelfID, | 2127 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id).IsNull()); |
| 2145 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | |
| 2146 arc_test_.app_instance()->SendTaskDestroyed(1); | 2128 arc_test_.app_instance()->SendTaskDestroyed(1); |
| 2147 EXPECT_NE(ash::kInvalidShelfID, | 2129 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id).IsNull()); |
| 2148 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | |
| 2149 arc_test_.app_instance()->SendTaskDestroyed(2); | 2130 arc_test_.app_instance()->SendTaskDestroyed(2); |
| 2150 EXPECT_EQ(ash::kInvalidShelfID, | 2131 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id).IsNull()); |
| 2151 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | |
| 2152 | 2132 |
| 2153 // Stopping bridge removes apps. | 2133 // Stopping bridge removes apps. |
| 2154 CreateArcWindow(window_app_id3); | 2134 CreateArcWindow(window_app_id3); |
| 2155 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[0], | 2135 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[0], |
| 2156 std::string()); | 2136 std::string()); |
| 2157 EXPECT_NE(ash::kInvalidShelfID, | 2137 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id).IsNull()); |
| 2158 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | |
| 2159 arc_test_.StopArcInstance(); | 2138 arc_test_.StopArcInstance(); |
| 2160 base::RunLoop().RunUntilIdle(); | 2139 base::RunLoop().RunUntilIdle(); |
| 2161 EXPECT_EQ(ash::kInvalidShelfID, | 2140 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id).IsNull()); |
| 2162 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | |
| 2163 } | 2141 } |
| 2164 | 2142 |
| 2165 // Test race creation/deletion of ARC app. | 2143 // Test race creation/deletion of ARC app. |
| 2166 // TODO(khmel): Remove after moving everything to wayland protocol. | 2144 // TODO(khmel): Remove after moving everything to wayland protocol. |
| 2167 TEST_P(ChromeLauncherControllerWithArcTest, ArcRaceCreateClose) { | 2145 TEST_P(ChromeLauncherControllerWithArcTest, ArcRaceCreateClose) { |
| 2168 InitLauncherController(); | 2146 InitLauncherController(); |
| 2169 | 2147 |
| 2170 const std::string arc_app_id1 = | 2148 const std::string arc_app_id1 = |
| 2171 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 2149 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 2172 const std::string arc_app_id2 = | 2150 const std::string arc_app_id2 = |
| 2173 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); | 2151 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); |
| 2174 SendListOfArcApps(); | 2152 SendListOfArcApps(); |
| 2175 | 2153 |
| 2176 // ARC window created before and closed after mojom notification. | 2154 // ARC window created before and closed after mojom notification. |
| 2177 std::string window_app_id1("org.chromium.arc.1"); | 2155 std::string window_app_id1("org.chromium.arc.1"); |
| 2178 views::Widget* arc_window = CreateArcWindow(window_app_id1); | 2156 views::Widget* arc_window = CreateArcWindow(window_app_id1); |
| 2179 EXPECT_EQ(ash::kInvalidShelfID, | 2157 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 2180 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | |
| 2181 ASSERT_TRUE(arc_window); | 2158 ASSERT_TRUE(arc_window); |
| 2182 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], | 2159 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], |
| 2183 std::string()); | 2160 std::string()); |
| 2184 EXPECT_NE(ash::kInvalidShelfID, | 2161 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 2185 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | |
| 2186 arc_test_.app_instance()->SendTaskDestroyed(1); | 2162 arc_test_.app_instance()->SendTaskDestroyed(1); |
| 2187 EXPECT_EQ(ash::kInvalidShelfID, | 2163 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 2188 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | |
| 2189 arc_window->Close(); | 2164 arc_window->Close(); |
| 2190 base::RunLoop().RunUntilIdle(); | 2165 base::RunLoop().RunUntilIdle(); |
| 2191 EXPECT_EQ(ash::kInvalidShelfID, | 2166 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id1).IsNull()); |
| 2192 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | |
| 2193 | 2167 |
| 2194 // ARC window created after and closed before mojom notification. | 2168 // ARC window created after and closed before mojom notification. |
| 2195 std::string window_app_id2("org.chromium.arc.2"); | 2169 std::string window_app_id2("org.chromium.arc.2"); |
| 2196 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[1], | 2170 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[1], |
| 2197 std::string()); | 2171 std::string()); |
| 2198 EXPECT_NE(ash::kInvalidShelfID, | 2172 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 2199 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 2200 arc_window = CreateArcWindow(window_app_id2); | 2173 arc_window = CreateArcWindow(window_app_id2); |
| 2201 ASSERT_TRUE(arc_window); | 2174 ASSERT_TRUE(arc_window); |
| 2202 EXPECT_NE(ash::kInvalidShelfID, | 2175 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 2203 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 2204 arc_window->Close(); | 2176 arc_window->Close(); |
| 2205 base::RunLoop().RunUntilIdle(); | 2177 base::RunLoop().RunUntilIdle(); |
| 2206 // Closing window does not close shelf item. It is closed on task destroy. | 2178 // Closing window does not close shelf item. It is closed on task destroy. |
| 2207 EXPECT_NE(ash::kInvalidShelfID, | 2179 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 2208 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 2209 arc_test_.app_instance()->SendTaskDestroyed(2); | 2180 arc_test_.app_instance()->SendTaskDestroyed(2); |
| 2210 EXPECT_EQ(ash::kInvalidShelfID, | 2181 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(arc_app_id2).IsNull()); |
| 2211 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | |
| 2212 } | 2182 } |
| 2213 | 2183 |
| 2214 TEST_P(ChromeLauncherControllerWithArcTest, ArcWindowRecreation) { | 2184 TEST_P(ChromeLauncherControllerWithArcTest, ArcWindowRecreation) { |
| 2215 InitLauncherController(); | 2185 InitLauncherController(); |
| 2216 | 2186 |
| 2217 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 2187 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 2218 SendListOfArcApps(); | 2188 SendListOfArcApps(); |
| 2219 | 2189 |
| 2220 std::string window_app_id("org.chromium.arc.1"); | 2190 std::string window_app_id("org.chromium.arc.1"); |
| 2221 views::Widget* arc_window = CreateArcWindow(window_app_id); | 2191 views::Widget* arc_window = CreateArcWindow(window_app_id); |
| 2222 ASSERT_TRUE(arc_window); | 2192 ASSERT_TRUE(arc_window); |
| 2223 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], | 2193 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], |
| 2224 std::string()); | 2194 std::string()); |
| 2225 const ash::ShelfID shelf_id = | 2195 const ash::ShelfID shelf_id = |
| 2226 launcher_controller_->GetShelfIDForAppID(arc_app_id); | 2196 launcher_controller_->GetShelfIDForAppID(arc_app_id); |
| 2227 EXPECT_NE(ash::kInvalidShelfID, shelf_id); | 2197 EXPECT_FALSE(shelf_id.IsNull()); |
| 2228 | 2198 |
| 2229 for (int i = 0; i < 3; ++i) { | 2199 for (int i = 0; i < 3; ++i) { |
| 2230 arc_window->Close(); | 2200 arc_window->Close(); |
| 2231 base::RunLoop().RunUntilIdle(); | 2201 base::RunLoop().RunUntilIdle(); |
| 2232 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 2202 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
| 2233 | 2203 |
| 2234 arc_window = CreateArcWindow(window_app_id); | 2204 arc_window = CreateArcWindow(window_app_id); |
| 2235 ASSERT_TRUE(arc_window); | 2205 ASSERT_TRUE(arc_window); |
| 2236 base::RunLoop().RunUntilIdle(); | 2206 base::RunLoop().RunUntilIdle(); |
| 2237 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 2207 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
| (...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3013 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); | 2983 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); |
| 3014 EXPECT_EQ(0, browser()->tab_strip_model()->count()); | 2984 EXPECT_EQ(0, browser()->tab_strip_model()->count()); |
| 3015 | 2985 |
| 3016 InitLauncherControllerWithBrowser(); | 2986 InitLauncherControllerWithBrowser(); |
| 3017 | 2987 |
| 3018 // The model should only contain the browser shortcut and app list items. | 2988 // The model should only contain the browser shortcut and app list items. |
| 3019 EXPECT_EQ(2, model_->item_count()); | 2989 EXPECT_EQ(2, model_->item_count()); |
| 3020 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 2990 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 3021 | 2991 |
| 3022 // Installing |extension3_| adds it to the launcher. | 2992 // Installing |extension3_| adds it to the launcher. |
| 3023 ash::ShelfID gmail_id = model_->next_id(); | 2993 const ash::ShelfID gmail_id(extension3_->id()); |
| 3024 extension_service_->AddExtension(extension3_.get()); | 2994 extension_service_->AddExtension(extension3_.get()); |
| 3025 EXPECT_EQ(3, model_->item_count()); | 2995 EXPECT_EQ(3, model_->item_count()); |
| 3026 int gmail_index = model_->ItemIndexByID(gmail_id); | 2996 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 3027 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); | 2997 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); |
| 3028 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 2998 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 3029 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 2999 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 3030 | 3000 |
| 3031 // Check the menu content. | 3001 // Check the menu content. |
| 3032 ash::ShelfItem item_browser; | 3002 ash::ShelfItem item_browser; |
| 3033 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; | 3003 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3073 } | 3043 } |
| 3074 | 3044 |
| 3075 // Check the multi profile case where only user related apps should show up. | 3045 // Check the multi profile case where only user related apps should show up. |
| 3076 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, | 3046 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, |
| 3077 V1AppMenuGenerationTwoUsers) { | 3047 V1AppMenuGenerationTwoUsers) { |
| 3078 // Create a browser item in the LauncherController. | 3048 // Create a browser item in the LauncherController. |
| 3079 InitLauncherController(); | 3049 InitLauncherController(); |
| 3080 chrome::NewTab(browser()); | 3050 chrome::NewTab(browser()); |
| 3081 | 3051 |
| 3082 // Installing |extension3_| adds it to the launcher. | 3052 // Installing |extension3_| adds it to the launcher. |
| 3083 ash::ShelfID gmail_id = model_->next_id(); | 3053 const ash::ShelfID gmail_id(extension3_->id()); |
| 3084 extension_service_->AddExtension(extension3_.get()); | 3054 extension_service_->AddExtension(extension3_.get()); |
| 3085 EXPECT_EQ(3, model_->item_count()); | 3055 EXPECT_EQ(3, model_->item_count()); |
| 3086 int gmail_index = model_->ItemIndexByID(gmail_id); | 3056 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 3087 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); | 3057 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); |
| 3088 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 3058 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 3089 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 3059 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 3090 | 3060 |
| 3091 // Check the menu content. | 3061 // Check the menu content. |
| 3092 ash::ShelfItem item_browser; | 3062 ash::ShelfItem item_browser; |
| 3093 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; | 3063 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3339 EXPECT_EQ(2, model_->item_count()); | 3309 EXPECT_EQ(2, model_->item_count()); |
| 3340 } | 3310 } |
| 3341 } | 3311 } |
| 3342 | 3312 |
| 3343 // Checks that the generated menu list properly activates items. | 3313 // Checks that the generated menu list properly activates items. |
| 3344 TEST_F(ChromeLauncherControllerTest, V1AppMenuExecution) { | 3314 TEST_F(ChromeLauncherControllerTest, V1AppMenuExecution) { |
| 3345 InitLauncherControllerWithBrowser(); | 3315 InitLauncherControllerWithBrowser(); |
| 3346 | 3316 |
| 3347 // Add |extension3_| to the launcher and add two items. | 3317 // Add |extension3_| to the launcher and add two items. |
| 3348 GURL gmail = GURL("https://mail.google.com/mail/u"); | 3318 GURL gmail = GURL("https://mail.google.com/mail/u"); |
| 3349 ash::ShelfID gmail_id = model_->next_id(); | 3319 const ash::ShelfID gmail_id(extension3_->id()); |
| 3350 extension_service_->AddExtension(extension3_.get()); | 3320 extension_service_->AddExtension(extension3_.get()); |
| 3351 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 3321 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 3352 base::string16 title1 = ASCIIToUTF16("Test1"); | 3322 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 3353 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); | 3323 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); |
| 3354 chrome::NewTab(browser()); | 3324 chrome::NewTab(browser()); |
| 3355 base::string16 title2 = ASCIIToUTF16("Test2"); | 3325 base::string16 title2 = ASCIIToUTF16("Test2"); |
| 3356 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); | 3326 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); |
| 3357 | 3327 |
| 3358 // Check that the menu is properly set. | 3328 // Check that the menu is properly set. |
| 3359 ash::ShelfItem item_gmail; | 3329 ash::ShelfItem item_gmail; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 3387 } | 3357 } |
| 3388 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); | 3358 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 3389 } | 3359 } |
| 3390 | 3360 |
| 3391 // Checks that the generated menu list properly deletes items. | 3361 // Checks that the generated menu list properly deletes items. |
| 3392 TEST_F(ChromeLauncherControllerTest, V1AppMenuDeletionExecution) { | 3362 TEST_F(ChromeLauncherControllerTest, V1AppMenuDeletionExecution) { |
| 3393 InitLauncherControllerWithBrowser(); | 3363 InitLauncherControllerWithBrowser(); |
| 3394 | 3364 |
| 3395 // Add |extension3_| to the launcher and add two items. | 3365 // Add |extension3_| to the launcher and add two items. |
| 3396 GURL gmail = GURL("https://mail.google.com/mail/u"); | 3366 GURL gmail = GURL("https://mail.google.com/mail/u"); |
| 3397 ash::ShelfID gmail_id = model_->next_id(); | 3367 const ash::ShelfID gmail_id(extension3_->id()); |
| 3398 extension_service_->AddExtension(extension3_.get()); | 3368 extension_service_->AddExtension(extension3_.get()); |
| 3399 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 3369 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 3400 base::string16 title1 = ASCIIToUTF16("Test1"); | 3370 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 3401 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); | 3371 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); |
| 3402 chrome::NewTab(browser()); | 3372 chrome::NewTab(browser()); |
| 3403 base::string16 title2 = ASCIIToUTF16("Test2"); | 3373 base::string16 title2 = ASCIIToUTF16("Test2"); |
| 3404 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); | 3374 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); |
| 3405 | 3375 |
| 3406 // Check that the menu is properly set. | 3376 // Check that the menu is properly set. |
| 3407 ash::ShelfItem item_gmail; | 3377 ash::ShelfItem item_gmail; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3445 // Make an app panel; the ShelfItem is added by ash::ShelfWindowWatcher. | 3415 // Make an app panel; the ShelfItem is added by ash::ShelfWindowWatcher. |
| 3446 std::unique_ptr<V2App> app_panel1 = base::MakeUnique<V2App>( | 3416 std::unique_ptr<V2App> app_panel1 = base::MakeUnique<V2App>( |
| 3447 profile(), extension1_.get(), extensions::AppWindow::WINDOW_TYPE_PANEL); | 3417 profile(), extension1_.get(), extensions::AppWindow::WINDOW_TYPE_PANEL); |
| 3448 EXPECT_TRUE(app_panel1->window()->GetNativeWindow()->IsVisible()); | 3418 EXPECT_TRUE(app_panel1->window()->GetNativeWindow()->IsVisible()); |
| 3449 int panel_index = model_observer_->last_index(); | 3419 int panel_index = model_observer_->last_index(); |
| 3450 EXPECT_EQ(1, model_observer_->added()); | 3420 EXPECT_EQ(1, model_observer_->added()); |
| 3451 EXPECT_EQ(1, app_icon_loader->fetch_count()); | 3421 EXPECT_EQ(1, app_icon_loader->fetch_count()); |
| 3452 model_observer_->clear_counts(); | 3422 model_observer_->clear_counts(); |
| 3453 | 3423 |
| 3454 // App panels should have a separate identifier than the app id | 3424 // App panels should have a separate identifier than the app id |
| 3455 EXPECT_EQ(ash::kInvalidShelfID, | 3425 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(app_id).IsNull()); |
| 3456 launcher_controller_->GetShelfIDForAppID(app_id)); | |
| 3457 | 3426 |
| 3458 // Setting the app image should not change the panel, which has a window icon. | 3427 // Setting the app image should not change the panel, which has a window icon. |
| 3459 gfx::ImageSkia image; | 3428 gfx::ImageSkia image; |
| 3460 launcher_controller_->OnAppImageUpdated(app_id, image); | 3429 launcher_controller_->OnAppImageUpdated(app_id, image); |
| 3461 EXPECT_EQ(0, model_observer_->changed()); | 3430 EXPECT_EQ(0, model_observer_->changed()); |
| 3462 model_observer_->clear_counts(); | 3431 model_observer_->clear_counts(); |
| 3463 | 3432 |
| 3464 // Make a second app panel and verify that it gets the same index as the first | 3433 // Make a second app panel and verify that it gets the same index as the first |
| 3465 // panel, being added to the left of the existing panel. | 3434 // panel, being added to the left of the existing panel. |
| 3466 std::unique_ptr<V2App> app_panel2 = base::MakeUnique<V2App>( | 3435 std::unique_ptr<V2App> app_panel2 = base::MakeUnique<V2App>( |
| (...skipping 16 matching lines...) Expand all Loading... |
| 3483 chrome::NewTab(browser()); | 3452 chrome::NewTab(browser()); |
| 3484 base::string16 title = ASCIIToUTF16("Test"); | 3453 base::string16 title = ASCIIToUTF16("Test"); |
| 3485 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title); | 3454 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title); |
| 3486 content::WebContents* content = | 3455 content::WebContents* content = |
| 3487 browser()->tab_strip_model()->GetActiveWebContents(); | 3456 browser()->tab_strip_model()->GetActiveWebContents(); |
| 3488 | 3457 |
| 3489 // Check that the launcher controller does not recognize the running app. | 3458 // Check that the launcher controller does not recognize the running app. |
| 3490 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); | 3459 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); |
| 3491 | 3460 |
| 3492 // Installing |extension3_| adds it to the launcher. | 3461 // Installing |extension3_| adds it to the launcher. |
| 3493 ash::ShelfID gmail_id = model_->next_id(); | 3462 const ash::ShelfID gmail_id(extension3_->id()); |
| 3494 extension_service_->AddExtension(extension3_.get()); | 3463 extension_service_->AddExtension(extension3_.get()); |
| 3495 EXPECT_EQ(3, model_->item_count()); | 3464 EXPECT_EQ(3, model_->item_count()); |
| 3496 int gmail_index = model_->ItemIndexByID(gmail_id); | 3465 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 3497 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); | 3466 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); |
| 3498 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 3467 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 3499 | 3468 |
| 3500 // Check that it is now handled. | 3469 // Check that it is now handled. |
| 3501 EXPECT_TRUE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); | 3470 EXPECT_TRUE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); |
| 3502 | 3471 |
| 3503 // Check also that the app has detected that properly. | 3472 // Check also that the app has detected that properly. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3514 | 3483 |
| 3515 // Create a Gmail browser tab. | 3484 // Create a Gmail browser tab. |
| 3516 chrome::NewTab(browser()); | 3485 chrome::NewTab(browser()); |
| 3517 base::string16 title = ASCIIToUTF16("Test"); | 3486 base::string16 title = ASCIIToUTF16("Test"); |
| 3518 NavigateAndCommitActiveTabWithTitle(browser(), GURL(offline_gmail_url), | 3487 NavigateAndCommitActiveTabWithTitle(browser(), GURL(offline_gmail_url), |
| 3519 title); | 3488 title); |
| 3520 content::WebContents* content = | 3489 content::WebContents* content = |
| 3521 browser()->tab_strip_model()->GetActiveWebContents(); | 3490 browser()->tab_strip_model()->GetActiveWebContents(); |
| 3522 | 3491 |
| 3523 // Installing |extension3_| adds it to the launcher. | 3492 // Installing |extension3_| adds it to the launcher. |
| 3524 ash::ShelfID gmail_id = model_->next_id(); | 3493 const ash::ShelfID gmail_id(extension3_->id()); |
| 3525 extension_service_->AddExtension(extension3_.get()); | 3494 extension_service_->AddExtension(extension3_.get()); |
| 3526 EXPECT_EQ(3, model_->item_count()); | 3495 EXPECT_EQ(3, model_->item_count()); |
| 3527 int gmail_index = model_->ItemIndexByID(gmail_id); | 3496 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 3528 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); | 3497 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); |
| 3529 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 3498 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 3530 | 3499 |
| 3531 // The content should not be able to be handled by the app. | 3500 // The content should not be able to be handled by the app. |
| 3532 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); | 3501 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); |
| 3533 } | 3502 } |
| 3534 | 3503 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3638 // ChromeLauncherController. | 3607 // ChromeLauncherController. |
| 3639 TestAppIconLoaderImpl* app_icon_loader1 = new TestAppIconLoaderImpl(); | 3608 TestAppIconLoaderImpl* app_icon_loader1 = new TestAppIconLoaderImpl(); |
| 3640 TestAppIconLoaderImpl* app_icon_loader2 = new TestAppIconLoaderImpl(); | 3609 TestAppIconLoaderImpl* app_icon_loader2 = new TestAppIconLoaderImpl(); |
| 3641 app_icon_loader1->AddSupportedApp(app_id1); | 3610 app_icon_loader1->AddSupportedApp(app_id1); |
| 3642 app_icon_loader2->AddSupportedApp(app_id2); | 3611 app_icon_loader2->AddSupportedApp(app_id2); |
| 3643 SetAppIconLoaders(std::unique_ptr<AppIconLoader>(app_icon_loader1), | 3612 SetAppIconLoaders(std::unique_ptr<AppIconLoader>(app_icon_loader1), |
| 3644 std::unique_ptr<AppIconLoader>(app_icon_loader2)); | 3613 std::unique_ptr<AppIconLoader>(app_icon_loader2)); |
| 3645 | 3614 |
| 3646 const ash::ShelfID shelfId3 = launcher_controller_->CreateAppLauncherItem( | 3615 const ash::ShelfID shelfId3 = launcher_controller_->CreateAppLauncherItem( |
| 3647 base::MakeUnique<ExtensionAppWindowLauncherItemController>( | 3616 base::MakeUnique<ExtensionAppWindowLauncherItemController>( |
| 3648 ash::AppLaunchId(app_id3)), | 3617 ash::ShelfID(app_id3)), |
| 3649 ash::STATUS_RUNNING); | 3618 ash::STATUS_RUNNING); |
| 3650 EXPECT_EQ(0, app_icon_loader1->fetch_count()); | 3619 EXPECT_EQ(0, app_icon_loader1->fetch_count()); |
| 3651 EXPECT_EQ(0, app_icon_loader1->clear_count()); | 3620 EXPECT_EQ(0, app_icon_loader1->clear_count()); |
| 3652 EXPECT_EQ(0, app_icon_loader2->fetch_count()); | 3621 EXPECT_EQ(0, app_icon_loader2->fetch_count()); |
| 3653 EXPECT_EQ(0, app_icon_loader2->clear_count()); | 3622 EXPECT_EQ(0, app_icon_loader2->clear_count()); |
| 3654 | 3623 |
| 3655 const ash::ShelfID shelfId2 = launcher_controller_->CreateAppLauncherItem( | 3624 const ash::ShelfID shelfId2 = launcher_controller_->CreateAppLauncherItem( |
| 3656 base::MakeUnique<ExtensionAppWindowLauncherItemController>( | 3625 base::MakeUnique<ExtensionAppWindowLauncherItemController>( |
| 3657 ash::AppLaunchId(app_id2)), | 3626 ash::ShelfID(app_id2)), |
| 3658 ash::STATUS_RUNNING); | 3627 ash::STATUS_RUNNING); |
| 3659 EXPECT_EQ(0, app_icon_loader1->fetch_count()); | 3628 EXPECT_EQ(0, app_icon_loader1->fetch_count()); |
| 3660 EXPECT_EQ(0, app_icon_loader1->clear_count()); | 3629 EXPECT_EQ(0, app_icon_loader1->clear_count()); |
| 3661 EXPECT_EQ(1, app_icon_loader2->fetch_count()); | 3630 EXPECT_EQ(1, app_icon_loader2->fetch_count()); |
| 3662 EXPECT_EQ(0, app_icon_loader2->clear_count()); | 3631 EXPECT_EQ(0, app_icon_loader2->clear_count()); |
| 3663 | 3632 |
| 3664 const ash::ShelfID shelfId1 = launcher_controller_->CreateAppLauncherItem( | 3633 const ash::ShelfID shelfId1 = launcher_controller_->CreateAppLauncherItem( |
| 3665 base::MakeUnique<ExtensionAppWindowLauncherItemController>( | 3634 base::MakeUnique<ExtensionAppWindowLauncherItemController>( |
| 3666 ash::AppLaunchId(app_id1)), | 3635 ash::ShelfID(app_id1)), |
| 3667 ash::STATUS_RUNNING); | 3636 ash::STATUS_RUNNING); |
| 3668 EXPECT_EQ(1, app_icon_loader1->fetch_count()); | 3637 EXPECT_EQ(1, app_icon_loader1->fetch_count()); |
| 3669 EXPECT_EQ(0, app_icon_loader1->clear_count()); | 3638 EXPECT_EQ(0, app_icon_loader1->clear_count()); |
| 3670 EXPECT_EQ(1, app_icon_loader2->fetch_count()); | 3639 EXPECT_EQ(1, app_icon_loader2->fetch_count()); |
| 3671 EXPECT_EQ(0, app_icon_loader2->clear_count()); | 3640 EXPECT_EQ(0, app_icon_loader2->clear_count()); |
| 3672 | 3641 |
| 3673 launcher_controller_->CloseLauncherItem(shelfId1); | 3642 launcher_controller_->CloseLauncherItem(shelfId1); |
| 3674 EXPECT_EQ(1, app_icon_loader1->fetch_count()); | 3643 EXPECT_EQ(1, app_icon_loader1->fetch_count()); |
| 3675 EXPECT_EQ(1, app_icon_loader1->clear_count()); | 3644 EXPECT_EQ(1, app_icon_loader1->clear_count()); |
| 3676 EXPECT_EQ(1, app_icon_loader2->fetch_count()); | 3645 EXPECT_EQ(1, app_icon_loader2->fetch_count()); |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4087 // Prevent safe decoding which requires IPC. | 4056 // Prevent safe decoding which requires IPC. |
| 4088 ArcAppIcon::DisableSafeDecodingForTesting(); | 4057 ArcAppIcon::DisableSafeDecodingForTesting(); |
| 4089 | 4058 |
| 4090 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); | 4059 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); |
| 4091 EnablePlayStore(false); | 4060 EnablePlayStore(false); |
| 4092 EXPECT_FALSE(arc::IsArcPlayStoreEnabledForProfile(profile())); | 4061 EXPECT_FALSE(arc::IsArcPlayStoreEnabledForProfile(profile())); |
| 4093 ASSERT_TRUE(prefs->GetAppIds().size()); | 4062 ASSERT_TRUE(prefs->GetAppIds().size()); |
| 4094 | 4063 |
| 4095 const std::string app_id = | 4064 const std::string app_id = |
| 4096 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); | 4065 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); |
| 4097 EXPECT_EQ(ash::kInvalidShelfID, | 4066 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(app_id).IsNull()); |
| 4098 launcher_controller_->GetShelfIDForAppID(app_id)); | |
| 4099 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); | 4067 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); |
| 4100 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile())); | 4068 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile())); |
| 4101 EXPECT_NE(ash::kInvalidShelfID, | 4069 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(app_id).IsNull()); |
| 4102 launcher_controller_->GetShelfIDForAppID(app_id)); | |
| 4103 | 4070 |
| 4104 // Stop ARC again. Shelf item should go away. | 4071 // Stop ARC again. Shelf item should go away. |
| 4105 EnablePlayStore(false); | 4072 EnablePlayStore(false); |
| 4106 EXPECT_EQ(ash::kInvalidShelfID, | 4073 EXPECT_TRUE(launcher_controller_->GetShelfIDForAppID(app_id).IsNull()); |
| 4107 launcher_controller_->GetShelfIDForAppID(app_id)); | |
| 4108 | 4074 |
| 4109 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); | 4075 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); |
| 4110 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile())); | 4076 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile())); |
| 4111 | 4077 |
| 4112 EXPECT_NE(ash::kInvalidShelfID, | 4078 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(app_id).IsNull()); |
| 4113 launcher_controller_->GetShelfIDForAppID(app_id)); | |
| 4114 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); | 4079 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); |
| 4115 | 4080 |
| 4116 std::string window_app_id("org.chromium.arc.1"); | 4081 std::string window_app_id("org.chromium.arc.1"); |
| 4117 CreateArcWindow(window_app_id); | 4082 CreateArcWindow(window_app_id); |
| 4118 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_default_apps()[0], | 4083 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_default_apps()[0], |
| 4119 std::string()); | 4084 std::string()); |
| 4120 | 4085 |
| 4121 EXPECT_NE(ash::kInvalidShelfID, | 4086 EXPECT_FALSE(launcher_controller_->GetShelfIDForAppID(app_id).IsNull()); |
| 4122 launcher_controller_->GetShelfIDForAppID(app_id)); | |
| 4123 EXPECT_FALSE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); | 4087 EXPECT_FALSE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); |
| 4124 } | 4088 } |
| 4125 | 4089 |
| 4126 TEST_P(ChromeLauncherControllerArcDefaultAppsTest, PlayStoreDeferredLaunch) { | 4090 TEST_P(ChromeLauncherControllerArcDefaultAppsTest, PlayStoreDeferredLaunch) { |
| 4127 // Add ARC host app to enable Play Store default app. | 4091 // Add ARC host app to enable Play Store default app. |
| 4128 extension_service_->AddExtension(arc_support_host_.get()); | 4092 extension_service_->AddExtension(arc_support_host_.get()); |
| 4129 arc_test_.SetUp(profile()); | 4093 arc_test_.SetUp(profile()); |
| 4130 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); | 4094 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); |
| 4131 EXPECT_TRUE(prefs->IsRegistered(arc::kPlayStoreAppId)); | 4095 EXPECT_TRUE(prefs->IsRegistered(arc::kPlayStoreAppId)); |
| 4132 | 4096 |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4292 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, | 4256 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, |
| 4293 shelf_controller->auto_hide()); | 4257 shelf_controller->auto_hide()); |
| 4294 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); | 4258 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); |
| 4295 | 4259 |
| 4296 PrefService* prefs = profile()->GetTestingPrefService(); | 4260 PrefService* prefs = profile()->GetTestingPrefService(); |
| 4297 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); | 4261 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); |
| 4298 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); | 4262 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); |
| 4299 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); | 4263 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); |
| 4300 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); | 4264 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); |
| 4301 } | 4265 } |
| OLD | NEW |