diff options
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.cc | 66 |
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)); } |