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