summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/ui/webui/app_management/app_management_page_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/ui/webui/app_management/app_management_page_handler.cc')
-rw-r--r--chromium/chrome/browser/ui/webui/app_management/app_management_page_handler.cc66
1 files changed, 42 insertions, 24 deletions
diff --git a/chromium/chrome/browser/ui/webui/app_management/app_management_page_handler.cc b/chromium/chrome/browser/ui/webui/app_management/app_management_page_handler.cc
index 35c327bb3b8..227c34962ac 100644
--- a/chromium/chrome/browser/ui/webui/app_management/app_management_page_handler.cc
+++ b/chromium/chrome/browser/ui/webui/app_management/app_management_page_handler.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/webui/app_management/app_management.mojom.h"
#include "chrome/services/app_service/public/cpp/app_registry_cache.h"
#include "chrome/services/app_service/public/mojom/types.mojom.h"
#include "extensions/browser/extension_registry.h"
@@ -21,9 +22,14 @@
#include "extensions/common/extension.h"
#include "extensions/common/permissions/permission_message.h"
#include "extensions/common/permissions/permissions_data.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
#include "components/arc/arc_prefs.h"
#endif
@@ -37,14 +43,21 @@ constexpr int kMinAndroidFrameworkVersion = 28; // Android P
#endif
constexpr char const* kAppIdsWithHiddenMoreSettings[] = {
- extension_misc::kFilesManagerAppId,
extensions::kWebStoreAppId,
+ extension_misc::kFilesManagerAppId,
+ extension_misc::kGeniusAppId,
};
constexpr char const* kAppIdsWithHiddenPinToShelf[] = {
extension_misc::kChromeAppId,
};
+#if defined(OS_CHROMEOS)
+constexpr char const* kAppIdsWithHiddenStoragePermission[] = {
+ arc::kPlayStoreAppId,
+};
+#endif // OS_CHROMEOS
+
app_management::mojom::ExtensionAppPermissionMessagePtr
CreateExtensionAppPermissionMessage(
const extensions::PermissionMessage& message) {
@@ -64,22 +77,23 @@ bool ShouldHidePinToShelf(const std::string app_id) {
return base::Contains(kAppIdsWithHiddenPinToShelf, app_id);
}
+bool ShouldHideStoragePermission(const std::string app_id) {
+#if defined(OS_CHROMEOS)
+ return base::Contains(kAppIdsWithHiddenStoragePermission, app_id);
+#else
+ return false;
+#endif
+}
} // namespace
AppManagementPageHandler::AppManagementPageHandler(
- app_management::mojom::PageHandlerRequest request,
- app_management::mojom::PagePtr page,
+ mojo::PendingReceiver<app_management::mojom::PageHandler> receiver,
+ mojo::PendingRemote<app_management::mojom::Page> page,
Profile* profile)
- : binding_(this, std::move(request)),
+ : receiver_(this, std::move(receiver)),
page_(std::move(page)),
- profile_(profile)
-#if defined(OS_CHROMEOS)
- ,
- arc_app_list_prefs_observer_(this),
- shelf_delegate_(this)
-#endif
-{
+ profile_(profile) {
apps::AppServiceProxy* proxy =
apps::AppServiceProxyFactory::GetForProfile(profile_);
@@ -138,7 +152,8 @@ void AppManagementPageHandler::GetApps(GetAppsCallback callback) {
std::vector<app_management::mojom::AppPtr> apps;
proxy->AppRegistryCache().ForEachApp(
[this, &apps](const apps::AppUpdate& update) {
- if (update.ShowInManagement() == apps::mojom::OptionalBool::kTrue) {
+ if (update.ShowInManagement() == apps::mojom::OptionalBool::kTrue &&
+ update.Readiness() != apps::mojom::Readiness::kUninstalledByUser) {
apps.push_back(CreateUIAppPtr(update));
}
});
@@ -216,6 +231,12 @@ app_management::mojom::AppPtr AppManagementPageHandler::CreateUIAppPtr(
const apps::AppUpdate& update) {
base::flat_map<uint32_t, apps::mojom::PermissionPtr> permissions;
for (const auto& permission : update.Permissions()) {
+ if (static_cast<app_management::mojom::ArcPermissionType>(
+ permission->permission_id) ==
+ app_management::mojom::ArcPermissionType::STORAGE &&
+ ShouldHideStoragePermission(update.AppId())) {
+ continue;
+ }
permissions[permission->permission_id] = permission->Clone();
}
@@ -246,19 +267,16 @@ app_management::mojom::AppPtr AppManagementPageHandler::CreateUIAppPtr(
}
void AppManagementPageHandler::OnAppUpdate(const apps::AppUpdate& update) {
- if (update.ReadinessChanged() &&
- update.Readiness() == apps::mojom::Readiness::kUninstalledByUser) {
- page_->OnAppRemoved(update.AppId());
- return;
- }
-
- if (update.ShowInManagement() != apps::mojom::OptionalBool::kTrue) {
- return;
- }
+ if (update.ShowInManagementChanged() || update.ReadinessChanged()) {
+ if (update.ShowInManagement() == apps::mojom::OptionalBool::kTrue &&
+ update.Readiness() == apps::mojom::Readiness::kReady) {
+ page_->OnAppAdded(CreateUIAppPtr(update));
+ }
- if (update.ReadinessChanged() &&
- update.Readiness() == apps::mojom::Readiness::kReady) {
- page_->OnAppAdded(CreateUIAppPtr(update));
+ if (update.ShowInManagement() == apps::mojom::OptionalBool::kFalse ||
+ update.Readiness() == apps::mojom::Readiness::kUninstalledByUser) {
+ page_->OnAppRemoved(update.AppId());
+ }
} else {
page_->OnAppChanged(CreateUIAppPtr(update));
}