Commit 61aa9b5c authored by Li Lin's avatar Li Lin Committed by Commit Bot

Set the default activity name for opening app.

Package name alone is not enough for resolving the activity. Set the
default activity name if there is no intent data for resolving the
activity.

Test: Manual
Bug: b/120867066
Change-Id: I38fea46006c7324b88570b9b971ba5bda9aca2a9
Reviewed-on: https://chromium-review.googlesource.com/c/1455273
Commit-Queue: Li Lin <llin@chromium.org>
Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#630164}
parent 07f72c5a
......@@ -41,6 +41,22 @@ AppStatus GetAndroidAppStatus(const std::string& package_name) {
return app_id.empty() ? AppStatus::UNAVAILABLE : AppStatus::AVAILABLE;
}
base::Optional<std::string> GetActivity(const std::string& package_name) {
auto* prefs = ArcAppListPrefs::Get(ProfileManager::GetActiveUserProfile());
if (!prefs) {
LOG(ERROR) << "ArcAppListPrefs is not available.";
return base::nullopt;
}
std::string app_id = prefs->GetAppIdByPackageName(package_name);
if (!app_id.empty()) {
std::unique_ptr<ArcAppListPrefs::AppInfo> app_info = prefs->GetApp(app_id);
return base::Optional<std::string>(app_info->activity);
}
return base::nullopt;
}
} // namespace
DeviceActions::DeviceActions() {}
......@@ -123,12 +139,24 @@ void DeviceActions::OpenAndroidApp(AndroidAppInfoPtr app_info,
std::move(callback).Run(false);
return;
}
auto& package_name = app_info->package_name;
arc::mojom::ActivityNamePtr activity = arc::mojom::ActivityName::New();
activity->package_name = app_info->package_name;
activity->package_name = package_name;
auto intent = arc::mojom::IntentInfo::New();
if (!app_info->intent.empty()) {
intent->data = app_info->intent;
} else {
// Intent is not specified to resolve the activity, set default activity
// name.
auto activity_name = GetActivity(package_name);
if (!activity_name.has_value()) {
LOG(ERROR) << "No activity resolved from package name.";
std::move(callback).Run(false);
return;
}
activity->activity_name = activity_name.value();
}
helper->HandleIntent(std::move(intent), std::move(activity));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment