Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
|
Luis Héctor Chávez
2016/09/23 20:03:00
nit: #include <utility>
| |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/files/file_path.h" | 13 #include "base/files/file_path.h" |
| 14 #include "base/files/file_util.h" | 14 #include "base/files/file_util.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/memory/scoped_vector.h" | |
| 17 #include "base/run_loop.h" | 16 #include "base/run_loop.h" |
| 18 #include "base/task_runner_util.h" | 17 #include "base/task_runner_util.h" |
| 19 #include "base/values.h" | 18 #include "base/values.h" |
| 20 #include "chrome/browser/chromeos/arc/arc_support_host.h" | 19 #include "chrome/browser/chromeos/arc/arc_support_host.h" |
| 21 #include "chrome/browser/extensions/extension_service.h" | 20 #include "chrome/browser/extensions/extension_service.h" |
| 22 #include "chrome/browser/ui/app_list/app_list_test_util.h" | 21 #include "chrome/browser/ui/app_list/app_list_test_util.h" |
| 23 #include "chrome/browser/ui/app_list/arc/arc_app_icon.h" | 22 #include "chrome/browser/ui/app_list/arc/arc_app_icon.h" |
| 24 #include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h" | 23 #include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h" |
| 25 #include "chrome/browser/ui/app_list/arc/arc_app_item.h" | 24 #include "chrome/browser/ui/app_list/arc/arc_app_item.h" |
| 26 #include "chrome/browser/ui/app_list/arc/arc_app_launcher.h" | 25 #include "chrome/browser/ui/app_list/arc/arc_app_launcher.h" |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 596 const arc::mojom::AppInfo& app_first = fake_apps()[0]; | 595 const arc::mojom::AppInfo& app_first = fake_apps()[0]; |
| 597 const arc::mojom::AppInfo& app_last = fake_apps()[0]; | 596 const arc::mojom::AppInfo& app_last = fake_apps()[0]; |
| 598 ArcAppItem* item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); | 597 ArcAppItem* item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); |
| 599 ArcAppItem* item_last = FindArcItem(ArcAppTest::GetAppId(app_last)); | 598 ArcAppItem* item_last = FindArcItem(ArcAppTest::GetAppId(app_last)); |
| 600 ASSERT_NE(nullptr, item_first); | 599 ASSERT_NE(nullptr, item_first); |
| 601 ASSERT_NE(nullptr, item_last); | 600 ASSERT_NE(nullptr, item_last); |
| 602 item_first->Activate(0); | 601 item_first->Activate(0); |
| 603 item_last->Activate(0); | 602 item_last->Activate(0); |
| 604 item_first->Activate(0); | 603 item_first->Activate(0); |
| 605 | 604 |
| 606 const ScopedVector<arc::FakeAppInstance::Request>& launch_requests = | 605 const std::vector<std::unique_ptr<arc::FakeAppInstance::Request>>& |
| 607 app_instance()->launch_requests(); | 606 launch_requests = app_instance()->launch_requests(); |
| 608 ASSERT_EQ(3u, launch_requests.size()); | 607 ASSERT_EQ(3u, launch_requests.size()); |
| 609 EXPECT_TRUE(launch_requests[0]->IsForApp(app_first)); | 608 EXPECT_TRUE(launch_requests[0]->IsForApp(app_first)); |
| 610 EXPECT_TRUE(launch_requests[1]->IsForApp(app_last)); | 609 EXPECT_TRUE(launch_requests[1]->IsForApp(app_last)); |
| 611 EXPECT_TRUE(launch_requests[2]->IsForApp(app_first)); | 610 EXPECT_TRUE(launch_requests[2]->IsForApp(app_first)); |
| 612 | 611 |
| 613 // Test an attempt to launch of a not-ready app. | 612 // Test an attempt to launch of a not-ready app. |
| 614 arc_test()->StopArcInstance(); | 613 arc_test()->StopArcInstance(); |
| 615 item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); | 614 item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); |
| 616 ASSERT_NE(nullptr, item_first); | 615 ASSERT_NE(nullptr, item_first); |
| 617 size_t launch_request_count_before = app_instance()->launch_requests().size(); | 616 size_t launch_request_count_before = app_instance()->launch_requests().size(); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 632 const arc::mojom::ShortcutInfo& app_first = fake_shortcuts()[0]; | 631 const arc::mojom::ShortcutInfo& app_first = fake_shortcuts()[0]; |
| 633 const arc::mojom::ShortcutInfo& app_last = fake_shortcuts()[0]; | 632 const arc::mojom::ShortcutInfo& app_last = fake_shortcuts()[0]; |
| 634 ArcAppItem* item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); | 633 ArcAppItem* item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); |
| 635 ArcAppItem* item_last = FindArcItem(ArcAppTest::GetAppId(app_last)); | 634 ArcAppItem* item_last = FindArcItem(ArcAppTest::GetAppId(app_last)); |
| 636 ASSERT_NE(nullptr, item_first); | 635 ASSERT_NE(nullptr, item_first); |
| 637 ASSERT_NE(nullptr, item_last); | 636 ASSERT_NE(nullptr, item_last); |
| 638 item_first->Activate(0); | 637 item_first->Activate(0); |
| 639 item_last->Activate(0); | 638 item_last->Activate(0); |
| 640 item_first->Activate(0); | 639 item_first->Activate(0); |
| 641 | 640 |
| 642 const ScopedVector<mojo::String>& launch_intents = | 641 const std::vector<std::unique_ptr<mojo::String>>& launch_intents = |
| 643 app_instance()->launch_intents(); | 642 app_instance()->launch_intents(); |
| 644 ASSERT_EQ(3u, launch_intents.size()); | 643 ASSERT_EQ(3u, launch_intents.size()); |
| 645 EXPECT_EQ(app_first.intent_uri, *launch_intents[0]); | 644 EXPECT_EQ(app_first.intent_uri, *launch_intents[0]); |
| 646 EXPECT_EQ(app_last.intent_uri, *launch_intents[1]); | 645 EXPECT_EQ(app_last.intent_uri, *launch_intents[1]); |
| 647 EXPECT_EQ(app_first.intent_uri, *launch_intents[2]); | 646 EXPECT_EQ(app_first.intent_uri, *launch_intents[2]); |
| 648 | 647 |
| 649 // Test an attempt to launch of a not-ready shortcut. | 648 // Test an attempt to launch of a not-ready shortcut. |
| 650 arc_test()->StopArcInstance(); | 649 arc_test()->StopArcInstance(); |
| 651 item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); | 650 item_first = FindArcItem(ArcAppTest::GetAppId(app_first)); |
| 652 ASSERT_NE(nullptr, item_first); | 651 ASSERT_NE(nullptr, item_first); |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 680 // This does not result in an icon being loaded, so WaitForIconReady | 679 // This does not result in an icon being loaded, so WaitForIconReady |
| 681 // cannot be used. | 680 // cannot be used. |
| 682 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | 681 content::BrowserThread::GetBlockingPool()->FlushForTesting(); |
| 683 base::RunLoop().RunUntilIdle(); | 682 base::RunLoop().RunUntilIdle(); |
| 684 } | 683 } |
| 685 } | 684 } |
| 686 | 685 |
| 687 const size_t expected_size = scale_factors.size() * fake_apps().size(); | 686 const size_t expected_size = scale_factors.size() * fake_apps().size(); |
| 688 | 687 |
| 689 // At this moment we should receive all requests for icon loading. | 688 // At this moment we should receive all requests for icon loading. |
| 690 const ScopedVector<arc::FakeAppInstance::IconRequest>& icon_requests = | 689 const std::vector<std::unique_ptr<arc::FakeAppInstance::IconRequest>>& |
| 691 app_instance()->icon_requests(); | 690 icon_requests = app_instance()->icon_requests(); |
| 692 EXPECT_EQ(expected_size, icon_requests.size()); | 691 EXPECT_EQ(expected_size, icon_requests.size()); |
| 693 std::map<std::string, uint32_t> app_masks; | 692 std::map<std::string, uint32_t> app_masks; |
| 694 for (size_t i = 0; i < icon_requests.size(); ++i) { | 693 for (size_t i = 0; i < icon_requests.size(); ++i) { |
| 695 const arc::FakeAppInstance::IconRequest* icon_request = icon_requests[i]; | 694 const arc::FakeAppInstance::IconRequest* icon_request = |
| 695 icon_requests[i].get(); | |
| 696 const std::string id = ArcAppListPrefs::GetAppId( | 696 const std::string id = ArcAppListPrefs::GetAppId( |
| 697 icon_request->package_name(), icon_request->activity()); | 697 icon_request->package_name(), icon_request->activity()); |
| 698 // Make sure no double requests. | 698 // Make sure no double requests. |
| 699 EXPECT_NE(app_masks[id], | 699 EXPECT_NE(app_masks[id], |
| 700 app_masks[id] | (1 << icon_request->scale_factor())); | 700 app_masks[id] | (1 << icon_request->scale_factor())); |
| 701 app_masks[id] |= (1 << icon_request->scale_factor()); | 701 app_masks[id] |= (1 << icon_request->scale_factor()); |
| 702 } | 702 } |
| 703 | 703 |
| 704 // Validate that we have a request for each icon for each supported scale | 704 // Validate that we have a request for each icon for each supported scale |
| 705 // factor. | 705 // factor. |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 734 const base::FilePath icon_path = | 734 const base::FilePath icon_path = |
| 735 prefs->GetIconPath(ArcAppTest::GetAppId(shortcut), scale_factor); | 735 prefs->GetIconPath(ArcAppTest::GetAppId(shortcut), scale_factor); |
| 736 EXPECT_FALSE(base::PathExists(icon_path)); | 736 EXPECT_FALSE(base::PathExists(icon_path)); |
| 737 | 737 |
| 738 app_item->icon().GetRepresentation(scale); | 738 app_item->icon().GetRepresentation(scale); |
| 739 WaitForIconReady(prefs, ArcAppTest::GetAppId(shortcut), scale_factor); | 739 WaitForIconReady(prefs, ArcAppTest::GetAppId(shortcut), scale_factor); |
| 740 } | 740 } |
| 741 | 741 |
| 742 // At this moment we should receive all requests for icon loading. | 742 // At this moment we should receive all requests for icon loading. |
| 743 const size_t expected_size = scale_factors.size(); | 743 const size_t expected_size = scale_factors.size(); |
| 744 const ScopedVector<arc::FakeAppInstance::ShortcutIconRequest>& icon_requests = | 744 const std::vector<std::unique_ptr<arc::FakeAppInstance::ShortcutIconRequest>>& |
| 745 app_instance()->shortcut_icon_requests(); | 745 icon_requests = app_instance()->shortcut_icon_requests(); |
| 746 EXPECT_EQ(expected_size, icon_requests.size()); | 746 EXPECT_EQ(expected_size, icon_requests.size()); |
| 747 uint32_t app_mask = 0; | 747 uint32_t app_mask = 0; |
| 748 for (size_t i = 0; i < icon_requests.size(); ++i) { | 748 for (size_t i = 0; i < icon_requests.size(); ++i) { |
| 749 const arc::FakeAppInstance::ShortcutIconRequest* icon_request = | 749 const arc::FakeAppInstance::ShortcutIconRequest* icon_request = |
| 750 icon_requests[i]; | 750 icon_requests[i].get(); |
| 751 EXPECT_EQ(shortcut.icon_resource_id, icon_request->icon_resource_id()); | 751 EXPECT_EQ(shortcut.icon_resource_id, icon_request->icon_resource_id()); |
| 752 | 752 |
| 753 // Make sure no double requests. | 753 // Make sure no double requests. |
| 754 EXPECT_NE(app_mask, app_mask | (1 << icon_request->scale_factor())); | 754 EXPECT_NE(app_mask, app_mask | (1 << icon_request->scale_factor())); |
| 755 app_mask |= (1 << icon_request->scale_factor()); | 755 app_mask |= (1 << icon_request->scale_factor()); |
| 756 } | 756 } |
| 757 | 757 |
| 758 // Validate that we have a request for each icon for each supported scale | 758 // Validate that we have a request for each icon for each supported scale |
| 759 // factor. | 759 // factor. |
| 760 EXPECT_EQ(app_mask, expected_mask); | 760 EXPECT_EQ(app_mask, expected_mask); |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1113 app_instance()->SendPackageUninstalled(all_apps[0].package_name); | 1113 app_instance()->SendPackageUninstalled(all_apps[0].package_name); |
| 1114 all_apps.erase(all_apps.begin()); | 1114 all_apps.erase(all_apps.begin()); |
| 1115 ValidateHaveApps(all_apps); | 1115 ValidateHaveApps(all_apps); |
| 1116 | 1116 |
| 1117 // OptOut and default apps should exist minus first. | 1117 // OptOut and default apps should exist minus first. |
| 1118 arc_test()->arc_auth_service()->DisableArc(); | 1118 arc_test()->arc_auth_service()->DisableArc(); |
| 1119 all_apps = fake_default_apps(); | 1119 all_apps = fake_default_apps(); |
| 1120 all_apps.erase(all_apps.begin()); | 1120 all_apps.erase(all_apps.begin()); |
| 1121 ValidateHaveApps(all_apps); | 1121 ValidateHaveApps(all_apps); |
| 1122 } | 1122 } |
| OLD | NEW |