12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include <utility>
- #include <vector>
- #include "base/test/task_environment.h"
- #include "chromeos/crosapi/mojom/app_service_types.mojom.h"
- #include "chromeos/crosapi/mojom/app_service_types_mojom_traits.h"
- #include "components/services/app_service/public/cpp/app_launch_util.h"
- #include "components/services/app_service/public/cpp/app_types.h"
- #include "components/services/app_service/public/cpp/icon_types.h"
- #include "components/services/app_service/public/cpp/intent_filter.h"
- #include "components/services/app_service/public/cpp/intent_filter_util.h"
- #include "components/services/app_service/public/cpp/permission.h"
- #include "components/services/app_service/public/cpp/shortcut.h"
- #include "components/services/app_service/public/mojom/types.mojom.h"
- #include "mojo/public/cpp/test_support/test_utils.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "third_party/abseil-cpp/absl/types/variant.h"
- #include "ui/gfx/image/image_unittest_util.h"
- // Test that every field in apps::App in correctly converted.
- TEST(AppServiceTypesMojomTraitsTest, RoundTrip) {
- auto input = std::make_unique<apps::App>(apps::AppType::kWeb, "abcdefg");
- input->readiness = apps::Readiness::kReady;
- input->name = "lacros test name";
- input->short_name = "lacros test name";
- input->publisher_id = "publisher_id";
- input->description = "description";
- input->version = "version";
- input->additional_search_terms = {"1", "2"};
- input->icon_key = apps::IconKey(
- /*timeline=*/1, apps::IconKey::kInvalidResourceId, /*icon_effects=*/2);
- input->last_launch_time = base::Time() + base::Days(1);
- input->install_time = base::Time() + base::Days(2);
- input->install_reason = apps::InstallReason::kUser;
- input->policy_id = "https://app.site/alpha";
- input->recommendable = true;
- input->searchable = true;
- input->show_in_launcher = true;
- input->show_in_shelf = true;
- input->show_in_search = true;
- input->show_in_management = true;
- input->has_badge = absl::nullopt;
- input->paused = false;
- auto intent_filter = std::make_unique<apps::IntentFilter>();
- intent_filter->AddSingleValueCondition(apps::ConditionType::kScheme, "https",
- apps::PatternMatchType::kLiteral);
- intent_filter->activity_name = "activity_name";
- intent_filter->activity_label = "activity_label";
- input->intent_filters.push_back(std::move(intent_filter));
- input->window_mode = apps::WindowMode::kWindow;
- input->permissions.push_back(std::make_unique<apps::Permission>(
- apps::PermissionType::kCamera,
- std::make_unique<apps::PermissionValue>(/*bool_value=*/true),
- /*is_managed=*/true));
- input->allow_uninstall = true;
- input->handles_intents = true;
- input->shortcuts.push_back(
- std::make_unique<apps::Shortcut>("test_id", "test_name", /*position*/ 1));
- input->is_platform_app = true;
- apps::AppPtr output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(input, output));
- EXPECT_EQ(output->app_type, apps::AppType::kWeb);
- EXPECT_EQ(output->app_id, "abcdefg");
- EXPECT_EQ(output->readiness, apps::Readiness::kReady);
- EXPECT_EQ(output->name, "lacros test name");
- EXPECT_EQ(output->short_name, "lacros test name");
- EXPECT_EQ(output->publisher_id, "publisher_id");
- EXPECT_EQ(output->description, "description");
- EXPECT_EQ(output->version, "version");
- EXPECT_EQ(output->additional_search_terms, input->additional_search_terms);
- EXPECT_EQ(output->icon_key->timeline, 1U);
- EXPECT_EQ(output->icon_key->icon_effects, 2U);
- EXPECT_EQ(output->last_launch_time, base::Time() + base::Days(1));
- EXPECT_EQ(output->install_time, base::Time() + base::Days(2));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kUser);
- EXPECT_EQ(output->policy_id, "https://app.site/alpha");
- EXPECT_TRUE(output->recommendable.value());
- EXPECT_TRUE(output->searchable.value());
- EXPECT_TRUE(output->show_in_launcher.value());
- EXPECT_TRUE(output->show_in_shelf.value());
- EXPECT_TRUE(output->show_in_search.value());
- EXPECT_TRUE(output->show_in_management.value());
- EXPECT_FALSE(output->has_badge.has_value());
- EXPECT_FALSE(output->paused.value());
- ASSERT_EQ(output->intent_filters.size(), 1U);
- auto& filter = output->intent_filters[0];
- ASSERT_EQ(filter->conditions.size(), 1U);
- auto& condition = filter->conditions[0];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kScheme);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->value, "https");
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kLiteral);
- EXPECT_EQ(filter->activity_name, "activity_name");
- EXPECT_EQ(filter->activity_label, "activity_label");
- EXPECT_EQ(output->window_mode, apps::WindowMode::kWindow);
- ASSERT_EQ(output->permissions.size(), 1U);
- auto& out_permission = output->permissions[0];
- EXPECT_EQ(out_permission->permission_type, apps::PermissionType::kCamera);
- ASSERT_TRUE(absl::holds_alternative<bool>(out_permission->value->value));
- EXPECT_TRUE(absl::get<bool>(out_permission->value->value));
- EXPECT_TRUE(out_permission->is_managed);
- EXPECT_TRUE(output->allow_uninstall.value());
- EXPECT_TRUE(output->handles_intents.value());
- ASSERT_EQ(output->shortcuts.size(), 1U);
- auto& shortcut = output->shortcuts[0];
- EXPECT_EQ(shortcut->shortcut_id, "test_id");
- EXPECT_EQ(shortcut->name, "test_name");
- EXPECT_EQ(shortcut->position, 1);
- EXPECT_TRUE(output->is_platform_app.value());
- }
- // Test that serialization and deserialization works with optional fields that
- // doesn't fill up.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripNoOptional) {
- auto input = std::make_unique<apps::App>(apps::AppType::kWeb, "abcdefg");
- input->readiness = apps::Readiness::kReady;
- input->additional_search_terms = {"1", "2"};
- input->install_reason = apps::InstallReason::kUser;
- input->recommendable = true;
- input->searchable = true;
- input->show_in_launcher = true;
- input->show_in_shelf = true;
- input->show_in_search = true;
- input->show_in_management = true;
- input->has_badge = absl::nullopt;
- input->paused = false;
- auto intent_filter = std::make_unique<apps::IntentFilter>();
- intent_filter->AddSingleValueCondition(apps::ConditionType::kScheme, "https",
- apps::PatternMatchType::kLiteral);
- input->intent_filters.push_back(std::move(intent_filter));
- input->window_mode = apps::WindowMode::kBrowser;
- input->allow_uninstall = true;
- input->handles_intents = true;
- input->is_platform_app = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(input, output));
- EXPECT_EQ(output->app_type, apps::AppType::kWeb);
- EXPECT_EQ(output->app_id, "abcdefg");
- EXPECT_EQ(output->readiness, apps::Readiness::kReady);
- EXPECT_EQ(output->additional_search_terms, input->additional_search_terms);
- EXPECT_EQ(output->install_reason, apps::InstallReason::kUser);
- EXPECT_FALSE(output->policy_id.has_value());
- EXPECT_TRUE(output->recommendable.value());
- EXPECT_TRUE(output->searchable.value());
- EXPECT_TRUE(output->show_in_launcher.value());
- EXPECT_TRUE(output->show_in_shelf.value());
- EXPECT_TRUE(output->show_in_search.value());
- EXPECT_TRUE(output->show_in_management.value());
- EXPECT_FALSE(output->has_badge.has_value());
- EXPECT_FALSE(output->paused.value());
- ASSERT_EQ(output->intent_filters.size(), 1U);
- auto& filter = output->intent_filters[0];
- ASSERT_EQ(filter->conditions.size(), 1U);
- auto& condition = filter->conditions[0];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kScheme);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->value, "https");
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kLiteral);
- EXPECT_EQ(output->window_mode, apps::WindowMode::kBrowser);
- EXPECT_TRUE(output->allow_uninstall);
- EXPECT_TRUE(output->handles_intents);
- EXPECT_FALSE(output->is_platform_app.has_value());
- }
- // Test that serialization and deserialization works with updating app type.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripAppType) {
- {
- auto input =
- std::make_unique<apps::App>(apps::AppType::kUnknown, "abcdefg");
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->app_type, apps::AppType::kUnknown);
- }
- {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->app_type, apps::AppType::kArc);
- }
- {
- auto input = std::make_unique<apps::App>(apps::AppType::kWeb, "abcdefg");
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->app_type, apps::AppType::kWeb);
- }
- {
- auto input =
- std::make_unique<apps::App>(apps::AppType::kSystemWeb, "abcdefg");
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->app_type, apps::AppType::kSystemWeb);
- }
- }
- // Test that serialization and deserialization works with updating readiness.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripReadiness) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->readiness = apps::Readiness::kUnknown;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kUnknown);
- }
- {
- input->readiness = apps::Readiness::kReady;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kReady);
- }
- {
- input->readiness = apps::Readiness::kDisabledByBlocklist;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kDisabledByBlocklist);
- }
- {
- input->readiness = apps::Readiness::kDisabledByPolicy;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kDisabledByPolicy);
- }
- {
- input->readiness = apps::Readiness::kDisabledByUser;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kDisabledByUser);
- }
- {
- input->readiness = apps::Readiness::kTerminated;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kTerminated);
- }
- {
- input->readiness = apps::Readiness::kUninstalledByUser;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kUninstalledByUser);
- }
- {
- input->readiness = apps::Readiness::kRemoved;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->readiness, apps::Readiness::kRemoved);
- }
- }
- // Test that serialization and deserialization works with updating install
- // reason.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripInstallReason) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->install_reason = apps::InstallReason::kUnknown;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kUnknown);
- }
- {
- input->install_reason = apps::InstallReason::kSystem;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kSystem);
- }
- {
- input->install_reason = apps::InstallReason::kPolicy;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kPolicy);
- }
- {
- input->install_reason = apps::InstallReason::kOem;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kOem);
- }
- {
- input->install_reason = apps::InstallReason::kDefault;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kDefault);
- }
- {
- input->install_reason = apps::InstallReason::kSync;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kSync);
- }
- {
- input->install_reason = apps::InstallReason::kUser;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_EQ(output->install_reason, apps::InstallReason::kUser);
- }
- }
- // Test that serialization and deserialization works with updating
- // recommendable.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripRecommendable) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->recommendable = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->recommendable.has_value());
- }
- {
- input->recommendable = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->recommendable.value());
- }
- {
- input->recommendable = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->recommendable.value());
- }
- }
- // Test that serialization and deserialization works with updating searchable.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripSearchable) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->searchable = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->searchable.has_value());
- }
- {
- input->searchable = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->searchable.value());
- }
- {
- input->searchable = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->searchable.value());
- }
- }
- // Test that serialization and deserialization works with updating
- // show_in_launcher.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripShowInLauncher) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->show_in_launcher = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_launcher.has_value());
- }
- {
- input->show_in_launcher = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_launcher.value());
- }
- {
- input->show_in_launcher = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->show_in_launcher.value());
- }
- }
- // Test that serialization and deserialization works with updating
- // show_in_shelf.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripShowInShelf) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->show_in_shelf = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_shelf.has_value());
- }
- {
- input->show_in_shelf = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_shelf.value());
- }
- {
- input->show_in_shelf = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->show_in_shelf.value());
- }
- }
- // Test that serialization and deserialization works with updating
- // show_in_search.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripShowInSearch) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->show_in_search = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_search.has_value());
- }
- {
- input->show_in_search = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_search.value());
- }
- {
- input->show_in_search = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->show_in_search.value());
- }
- }
- // Test that serialization and deserialization works with updating
- // show_in_management.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripShowInManagement) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->show_in_management = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_management.has_value());
- }
- {
- input->show_in_management = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->show_in_management.value());
- }
- {
- input->show_in_management = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->show_in_management.value());
- }
- }
- // Test that serialization and deserialization works with updating has_badge.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripHasBadge) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->has_badge = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->has_badge.has_value());
- }
- {
- input->has_badge = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->has_badge.value());
- }
- {
- input->has_badge = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->has_badge.value());
- }
- }
- // Test that serialization and deserialization works with updating paused.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripPaused) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- {
- input->paused = absl::nullopt;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->paused.has_value());
- }
- {
- input->paused = false;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_FALSE(output->paused.value());
- }
- {
- input->paused = true;
- apps::AppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(
- input, output));
- EXPECT_TRUE(output->paused.value());
- }
- }
- // Test that serialization and deserialization works with updating
- // intent_filters.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripIntentFilters) {
- auto input = std::make_unique<apps::App>(apps::AppType::kArc, "abcdefg");
- auto intent_filter = std::make_unique<apps::IntentFilter>();
- intent_filter->AddSingleValueCondition(apps::ConditionType::kScheme, "1",
- apps::PatternMatchType::kLiteral);
- intent_filter->AddSingleValueCondition(apps::ConditionType::kHost, "2",
- apps::PatternMatchType::kLiteral);
- intent_filter->AddSingleValueCondition(apps::ConditionType::kPath, "3",
- apps::PatternMatchType::kPrefix);
- intent_filter->AddSingleValueCondition(apps::ConditionType::kAction, "4",
- apps::PatternMatchType::kGlob);
- intent_filter->AddSingleValueCondition(apps::ConditionType::kMimeType, "5",
- apps::PatternMatchType::kMimeType);
- intent_filter->AddSingleValueCondition(apps::ConditionType::kFile, "6",
- apps::PatternMatchType::kMimeType);
- intent_filter->AddSingleValueCondition(
- apps::ConditionType::kFile, "7", apps::PatternMatchType::kFileExtension);
- intent_filter->AddSingleValueCondition(apps::ConditionType::kHost, "8",
- apps::PatternMatchType::kSuffix);
- input->intent_filters.push_back(std::move(intent_filter));
- apps::AppPtr output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::App>(input, output));
- ASSERT_EQ(output->intent_filters.size(), 1U);
- auto& filter = output->intent_filters[0];
- ASSERT_EQ(filter->conditions.size(), 8U);
- {
- auto& condition = filter->conditions[0];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kScheme);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kLiteral);
- EXPECT_EQ(condition->condition_values[0]->value, "1");
- }
- {
- auto& condition = filter->conditions[1];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kHost);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kLiteral);
- EXPECT_EQ(condition->condition_values[0]->value, "2");
- }
- {
- auto& condition = filter->conditions[2];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kPath);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kPrefix);
- EXPECT_EQ(condition->condition_values[0]->value, "3");
- }
- {
- auto& condition = filter->conditions[3];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kAction);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kGlob);
- EXPECT_EQ(condition->condition_values[0]->value, "4");
- }
- {
- auto& condition = filter->conditions[4];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kMimeType);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kMimeType);
- EXPECT_EQ(condition->condition_values[0]->value, "5");
- }
- {
- auto& condition = filter->conditions[5];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kFile);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kMimeType);
- EXPECT_EQ(condition->condition_values[0]->value, "6");
- }
- {
- auto& condition = filter->conditions[6];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kFile);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kFileExtension);
- EXPECT_EQ(condition->condition_values[0]->value, "7");
- }
- {
- auto& condition = filter->conditions[7];
- EXPECT_EQ(condition->condition_type, apps::ConditionType::kHost);
- ASSERT_EQ(condition->condition_values.size(), 1U);
- EXPECT_EQ(condition->condition_values[0]->match_type,
- apps::PatternMatchType::kSuffix);
- EXPECT_EQ(condition->condition_values[0]->value, "8");
- }
- }
- // Test that serialization and deserialization works with uninstall source.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripUninstallSource) {
- apps::UninstallSource input;
- {
- input = apps::UninstallSource::kUnknown;
- apps::UninstallSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::UninstallSource>(
- input, output));
- EXPECT_EQ(output, apps::UninstallSource::kUnknown);
- }
- {
- input = apps::UninstallSource::kAppList;
- apps::UninstallSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::UninstallSource>(
- input, output));
- EXPECT_EQ(output, apps::UninstallSource::kAppList);
- }
- {
- input = apps::UninstallSource::kAppManagement;
- apps::UninstallSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::UninstallSource>(
- input, output));
- EXPECT_EQ(output, apps::UninstallSource::kAppManagement);
- }
- {
- input = apps::UninstallSource::kShelf;
- apps::UninstallSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::UninstallSource>(
- input, output));
- EXPECT_EQ(output, apps::UninstallSource::kShelf);
- }
- {
- input = apps::UninstallSource::kMigration;
- apps::UninstallSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::UninstallSource>(
- input, output));
- EXPECT_EQ(output, apps::UninstallSource::kMigration);
- }
- }
- // Test that serialization and deserialization works with icon type.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripIconType) {
- apps::IconType input;
- {
- input = apps::IconType::kUnknown;
- apps::IconType output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::IconType>(
- input, output));
- EXPECT_EQ(output, apps::IconType::kUnknown);
- }
- {
- input = apps::IconType::kUncompressed;
- apps::IconType output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::IconType>(
- input, output));
- EXPECT_EQ(output, apps::IconType::kUncompressed);
- }
- {
- input = apps::IconType::kCompressed;
- apps::IconType output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::IconType>(
- input, output));
- EXPECT_EQ(output, apps::IconType::kCompressed);
- }
- {
- input = apps::IconType::kStandard;
- apps::IconType output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::IconType>(
- input, output));
- EXPECT_EQ(output, apps::IconType::kStandard);
- }
- }
- // Test that serialization and deserialization works with icon value.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripIconValue) {
- {
- auto input = std::make_unique<apps::IconValue>();
- input->icon_type = apps::IconType::kUnknown;
- std::vector<float> scales;
- scales.push_back(1.0f);
- gfx::ImageSkia::SetSupportedScales(scales);
- gfx::ImageSkia image = gfx::test::CreateImageSkia(1, 2);
- input->uncompressed = image;
- input->compressed = {1u, 2u};
- input->is_placeholder_icon = true;
- auto output = std::make_unique<apps::IconValue>();
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::IconValue>(
- input, output));
- EXPECT_EQ(output->icon_type, apps::IconType::kUnknown);
- EXPECT_TRUE(gfx::test::AreImagesEqual(gfx::Image(output->uncompressed),
- gfx::Image(image)));
- EXPECT_EQ(output->compressed, std::vector<uint8_t>({1u, 2u}));
- EXPECT_TRUE(output->is_placeholder_icon);
- }
- {
- auto input = std::make_unique<apps::IconValue>();
- input->icon_type = apps::IconType::kUncompressed;
- std::vector<float> scales;
- scales.push_back(1.0f);
- gfx::ImageSkia::SetSupportedScales(scales);
- gfx::ImageSkia image = gfx::test::CreateImageSkia(3, 4);
- input->uncompressed = image;
- input->is_placeholder_icon = false;
- auto output = std::make_unique<apps::IconValue>();
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::IconValue>(
- input, output));
- EXPECT_EQ(output->icon_type, apps::IconType::kUncompressed);
- EXPECT_TRUE(gfx::test::AreImagesEqual(gfx::Image(output->uncompressed),
- gfx::Image(image)));
- EXPECT_FALSE(output->is_placeholder_icon);
- }
- {
- auto input = std::make_unique<apps::IconValue>();
- input->icon_type = apps::IconType::kCompressed;
- input->compressed = {3u, 4u};
- input->is_placeholder_icon = true;
- auto output = std::make_unique<apps::IconValue>();
- ;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::IconValue>(
- input, output));
- EXPECT_EQ(output->icon_type, apps::IconType::kCompressed);
- EXPECT_EQ(output->compressed, std::vector<uint8_t>({3u, 4u}));
- EXPECT_TRUE(output->is_placeholder_icon);
- }
- }
- // Test that serialization and deserialization works with window mode.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripWindowMode) {
- apps::WindowMode input;
- {
- input = apps::WindowMode::kUnknown;
- apps::WindowMode output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::WindowMode>(
- input, output));
- EXPECT_EQ(output, apps::WindowMode::kUnknown);
- }
- {
- input = apps::WindowMode::kWindow;
- apps::WindowMode output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::WindowMode>(
- input, output));
- EXPECT_EQ(output, apps::WindowMode::kWindow);
- }
- {
- input = apps::WindowMode::kBrowser;
- apps::WindowMode output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::WindowMode>(
- input, output));
- EXPECT_EQ(output, apps::WindowMode::kBrowser);
- }
- {
- input = apps::WindowMode::kTabbedWindow;
- apps::WindowMode output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::WindowMode>(
- input, output));
- EXPECT_EQ(output, apps::WindowMode::kTabbedWindow);
- }
- }
- // Test that serialization and deserialization works with launch source.
- TEST(AppServiceTypesMojomTraitsTest, RoundTripLaunchSource) {
- apps::LaunchSource input;
- {
- input = apps::LaunchSource::kUnknown;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromAppListGrid;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromAppListGridContextMenu;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromAppListQuery;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromAppListQueryContextMenu;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromAppListRecommendation;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromParentalControls;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromShelf;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromFileManager;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromLink;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromOmnibox;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromChromeInternal;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromKeyboard;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromOtherApp;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromMenu;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromInstalledNotification;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromTest;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromArc;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromSharesheet;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromReleaseNotesNotification;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromFullRestore;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromSmartTextContextMenu;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- {
- input = apps::LaunchSource::kFromDiscoverTabNotification;
- apps::LaunchSource output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::LaunchSource>(
- input, output));
- EXPECT_EQ(output, input);
- }
- }
- TEST(AppServiceTypesMojomTraitsTest, RoundTripPermissions) {
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kUnknown,
- std::make_unique<apps::PermissionValue>(true),
- /*is_managed=*/false);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kCamera,
- std::make_unique<apps::PermissionValue>(true),
- /*is_managed=*/true);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kLocation,
- std::make_unique<apps::PermissionValue>(apps::TriState::kAllow),
- /*is_managed=*/false);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kMicrophone,
- std::make_unique<apps::PermissionValue>(apps::TriState::kBlock),
- /*is_managed=*/true);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kNotifications,
- std::make_unique<apps::PermissionValue>(apps::TriState::kAsk),
- /*is_managed=*/false);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kContacts,
- std::make_unique<apps::PermissionValue>(apps::TriState::kAllow),
- /*is_managed=*/true);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kStorage,
- std::make_unique<apps::PermissionValue>(apps::TriState::kBlock),
- /*is_managed=*/false);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- {
- auto permission = std::make_unique<apps::Permission>(
- apps::PermissionType::kFileHandling,
- std::make_unique<apps::PermissionValue>(true),
- /*is_managed=*/false);
- apps::PermissionPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Permission>(
- permission, output));
- EXPECT_EQ(*permission, *output);
- }
- }
- // Test that serialization and deserialization works with updating
- // preferred app.
- TEST(AppServiceTypesMojomTraitsTest, PreferredApp) {
- auto intent_filter = std::make_unique<apps::IntentFilter>();
- intent_filter->AddSingleValueCondition(apps::ConditionType::kScheme, "1",
- apps::PatternMatchType::kLiteral);
- auto input =
- std::make_unique<apps::PreferredApp>(std::move(intent_filter), "abcdefg");
- apps::PreferredAppPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::PreferredApp>(
- input, output));
- EXPECT_EQ(*input, *output);
- }
- // Test that serialization and deserialization works with updating
- // PreferredAppChanges.
- TEST(AppServiceTypesMojomTraitsTest, PreferredAppChanges) {
- apps::IntentFilters added_filters;
- auto intent_filter1 = std::make_unique<apps::IntentFilter>();
- intent_filter1->AddSingleValueCondition(apps::ConditionType::kScheme, "1",
- apps::PatternMatchType::kLiteral);
- auto intent_filter2 = std::make_unique<apps::IntentFilter>();
- intent_filter2->AddSingleValueCondition(apps::ConditionType::kHost, "2",
- apps::PatternMatchType::kLiteral);
- added_filters.push_back(std::move(intent_filter1));
- added_filters.push_back(std::move(intent_filter2));
- apps::IntentFilters removed_filters;
- auto intent_filter3 = std::make_unique<apps::IntentFilter>();
- intent_filter3->AddSingleValueCondition(apps::ConditionType::kPath, "3",
- apps::PatternMatchType::kPrefix);
- auto intent_filter4 = std::make_unique<apps::IntentFilter>();
- intent_filter4->AddSingleValueCondition(apps::ConditionType::kAction, "4",
- apps::PatternMatchType::kGlob);
- removed_filters.push_back(std::move(intent_filter3));
- removed_filters.push_back(std::move(intent_filter4));
- auto input = std::make_unique<apps::PreferredAppChanges>();
- input->added_filters["a"] = std::move(added_filters);
- input->removed_filters["b"] = std::move(removed_filters);
- apps::PreferredAppChangesPtr output;
- ASSERT_TRUE(
- mojo::test::SerializeAndDeserialize<crosapi::mojom::PreferredAppChanges>(
- input, output));
- EXPECT_EQ(input->added_filters.size(), output->added_filters.size());
- for (const auto& added_filters : input->added_filters) {
- EXPECT_TRUE(IsEqual(added_filters.second,
- output->added_filters[added_filters.first]));
- }
- EXPECT_EQ(input->removed_filters.size(), output->removed_filters.size());
- for (const auto& removed_filters : input->removed_filters) {
- EXPECT_TRUE(IsEqual(removed_filters.second,
- output->removed_filters[removed_filters.first]));
- }
- }
- TEST(AppServiceTypesMojomTraitsTest, RoundTripShortcuts) {
- {
- auto shortcut = std::make_unique<apps::Shortcut>("test_id", "test_name",
- /*position*/ 1);
- apps::ShortcutPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Shortcut>(
- shortcut, output));
- EXPECT_EQ(*shortcut, *output);
- }
- {
- auto shortcut = std::make_unique<apps::Shortcut>("", "", /*position*/ 0);
- apps::ShortcutPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Shortcut>(
- shortcut, output));
- EXPECT_EQ(*shortcut, *output);
- }
- {
- auto shortcut =
- std::make_unique<apps::Shortcut>("A", "B", /*position*/ 100);
- apps::ShortcutPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Shortcut>(
- shortcut, output));
- EXPECT_EQ(*shortcut, *output);
- }
- {
- auto shortcut = std::make_unique<apps::Shortcut>("", "B", /*position*/ 1);
- apps::ShortcutPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Shortcut>(
- shortcut, output));
- EXPECT_EQ(*shortcut, *output);
- }
- {
- auto shortcut = std::make_unique<apps::Shortcut>("A", "", /*position*/ 1);
- apps::ShortcutPtr output;
- ASSERT_TRUE(mojo::test::SerializeAndDeserialize<crosapi::mojom::Shortcut>(
- shortcut, output));
- EXPECT_EQ(*shortcut, *output);
- }
- }
|