| Index: chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
|
| diff --git a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
|
| index 791b24f96419f712762339330f2e8525e36dc091..b98349627c8408cbb8ebfd666736c7cc55cbb65f 100644
|
| --- a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
|
| +++ b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
|
| @@ -15,6 +15,7 @@
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/task_runner_util.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/ui/app_list/app_list_service.h"
|
| #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs_factory.h"
|
| #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
|
| #include "chrome/browser/ui/app_list/arc/arc_package_syncable_service.h"
|
| @@ -575,6 +576,8 @@ void ArcAppListPrefs::OnInstanceReady() {
|
| return;
|
| }
|
|
|
| + is_initialized_ = false;
|
| +
|
| app_instance->Init(binding_.CreateInterfacePtrAndBind());
|
| app_instance->RefreshAppList();
|
|
|
| @@ -592,6 +595,8 @@ void ArcAppListPrefs::OnInstanceClosed() {
|
| sync_service_->StopSyncing(syncer::ARC_PACKAGE);
|
| sync_service_ = nullptr;
|
| }
|
| +
|
| + is_initialized_ = false;
|
| }
|
|
|
| void ArcAppListPrefs::MayAddNonLaunchableApp(const std::string& name,
|
| @@ -918,12 +923,46 @@ void ArcAppListPrefs::OnNotificationsEnabledChanged(
|
| OnNotificationsEnabledChanged(package_name, enabled));
|
| }
|
|
|
| +void ArcAppListPrefs::MayShowPackageInAppLauncher(
|
| + const arc::mojom::ArcPackageInfo& package_info) {
|
| + // Ignore system packages and auxiliary packages.
|
| + if (!package_info.sync || package_info.system)
|
| + return;
|
| +
|
| + std::unordered_set<std::string> app_ids =
|
| + GetAppsForPackage(package_info.package_name);
|
| + for (const auto& app_id : app_ids) {
|
| + std::unique_ptr<ArcAppListPrefs::AppInfo> app_info = GetApp(app_id);
|
| + if (!app_info) {
|
| + NOTREACHED();
|
| + continue;
|
| + }
|
| + if (!app_info->showInLauncher)
|
| + continue;
|
| +
|
| + AppListService* service = AppListService::Get();
|
| + CHECK(service);
|
| + service->ShowForAppInstall(profile_, app_id, false);
|
| + break;
|
| + }
|
| +}
|
| +
|
| void ArcAppListPrefs::OnPackageAdded(
|
| arc::mojom::ArcPackageInfoPtr package_info) {
|
| DCHECK(IsArcEnabled());
|
| +
|
| + // Ignore packages installed by internal sync.
|
| + arc::ArcPackageSyncableService* package_service =
|
| + arc::ArcPackageSyncableService::Get(profile_);
|
| + DCHECK(package_service);
|
| + const bool new_package_in_system = !GetPackage(package_info->package_name) &&
|
| + !package_service->IsPackageSyncing(package_info->package_name);
|
| +
|
| AddOrUpdatePackagePrefs(prefs_, *package_info);
|
| FOR_EACH_OBSERVER(Observer, observer_list_,
|
| OnPackageInstalled(*package_info));
|
| + if (new_package_in_system)
|
| + MayShowPackageInAppLauncher(*package_info);
|
| }
|
|
|
| void ArcAppListPrefs::OnPackageModified(
|
|
|