Commit b5cdcd7a authored by nancy's avatar nancy Committed by Commit Bot

Add ARC menu items to AppService.

This CL is used to integrate ARC's context menus for app list to
AppService:
https://cs.chromium.org/chromium/src/chrome/browser/ui/app_list/arc/arc_app_context_menu.cc?l=43
https://cs.chromium.org/chromium/src/chrome/browser/ui/app_list/arc/arc_app_context_menu.cc?l=73

BUG=1038487

Change-Id: Ib1fa21ad7400bf990ec546c8eb527767a4f32362
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2003149
Commit-Queue: Nancy Wang <nancylingwang@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732341}
parent aa4b3e95
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <memory> #include <memory>
#include <utility> #include <utility>
#include "ash/public/cpp/app_menu_constants.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/containers/flat_map.h" #include "base/containers/flat_map.h"
...@@ -18,6 +19,7 @@ ...@@ -18,6 +19,7 @@
#include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
#include "chrome/browser/apps/app_service/arc_apps_factory.h" #include "chrome/browser/apps/app_service/arc_apps_factory.h"
#include "chrome/browser/apps/app_service/dip_px_util.h" #include "chrome/browser/apps/app_service/dip_px_util.h"
#include "chrome/browser/apps/app_service/menu_util.h"
#include "chrome/browser/chromeos/arc/arc_util.h" #include "chrome/browser/chromeos/arc/arc_util.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/app_list/arc/arc_app_dialog.h" #include "chrome/browser/ui/app_list/arc/arc_app_dialog.h"
...@@ -25,6 +27,7 @@ ...@@ -25,6 +27,7 @@
#include "chrome/browser/ui/app_list/arc/arc_app_utils.h" #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
#include "chrome/common/chrome_features.h" #include "chrome/common/chrome_features.h"
#include "chrome/grit/component_extension_resources.h" #include "chrome/grit/component_extension_resources.h"
#include "chrome/grit/generated_resources.h"
#include "chrome/services/app_service/public/cpp/intent_filter_util.h" #include "chrome/services/app_service/public/cpp/intent_filter_util.h"
#include "components/arc/app_permissions/arc_app_permissions_bridge.h" #include "components/arc/app_permissions/arc_app_permissions_bridge.h"
#include "components/arc/arc_service_manager.h" #include "components/arc/arc_service_manager.h"
...@@ -490,7 +493,39 @@ void ArcApps::UnpauseApps(const std::string& app_id) { ...@@ -490,7 +493,39 @@ void ArcApps::UnpauseApps(const std::string& app_id) {
void ArcApps::GetMenuModel(const std::string& app_id, void ArcApps::GetMenuModel(const std::string& app_id,
apps::mojom::MenuType menu_type, apps::mojom::MenuType menu_type,
GetMenuModelCallback callback) { GetMenuModelCallback callback) {
std::move(callback).Run(apps::mojom::MenuItems::New()); ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_);
if (!prefs) {
std::move(callback).Run(apps::mojom::MenuItems::New());
return;
}
const std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
prefs->GetApp(app_id);
if (!app_info) {
std::move(callback).Run(apps::mojom::MenuItems::New());
return;
}
apps::mojom::MenuItemsPtr menu_items = apps::mojom::MenuItems::New();
// Add Open item if the app is not opened and not suspended.
if (!base::Contains(app_id_to_task_ids_, app_id) && !app_info->suspended) {
AddCommandItem(ash::LAUNCH_NEW, IDS_APP_CONTEXT_MENU_ACTIVATE_ARC,
&menu_items);
}
if (app_info->shortcut) {
AddCommandItem(ash::UNINSTALL, IDS_APP_LIST_REMOVE_SHORTCUT, &menu_items);
} else if (app_info->ready && !app_info->sticky) {
AddCommandItem(ash::UNINSTALL, IDS_APP_LIST_UNINSTALL_ITEM, &menu_items);
}
// App Info item.
if (app_info->ready) {
AddCommandItem(ash::SHOW_APP_INFO, IDS_APP_CONTEXT_MENU_SHOW_INFO,
&menu_items);
}
std::move(callback).Run(std::move(menu_items));
} }
void ArcApps::OpenNativeSettings(const std::string& app_id) { void ArcApps::OpenNativeSettings(const std::string& app_id) {
......
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