Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Unified Diff: chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc

Issue 2276553002: arc: Open launcher after installing app from Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clean Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(

Powered by Google App Engine
This is Rietveld 408576698