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

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

Issue 2263013002: [Merge-M53] arc: Add package app list updated event. (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@2785
Patch Set: resolve browser_tests 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
« no previous file with comments | « chrome/browser/ui/app_list/arc/arc_app_list_prefs.h ('k') | chrome/browser/ui/app_list/arc/arc_app_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 16f6f428e05327ff655a4644e10294e8f8ebff71..753ab7251658f0a6946cb2e5b439f01a200a8702 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
@@ -528,7 +528,7 @@ void ArcAppListPrefs::SetLastLaunchTime(const std::string& app_id,
}
void ArcAppListPrefs::DisableAllApps() {
- std::set<std::string> old_ready_apps;
+ std::unordered_set<std::string> old_ready_apps;
old_ready_apps.swap(ready_apps_);
for (auto& app_id : old_ready_apps) {
FOR_EACH_OBSERVER(Observer, observer_list_,
@@ -622,7 +622,6 @@ void ArcAppListPrefs::AddAppAndShortcut(
std::string app_id = shortcut ? GetAppId(package_name, intent_uri)
: GetAppId(package_name, activity);
const bool was_registered = IsRegistered(app_id);
-
if (was_registered) {
std::unique_ptr<ArcAppListPrefs::AppInfo> app_old_info = GetApp(app_id);
DCHECK(app_old_info);
@@ -655,12 +654,15 @@ void ArcAppListPrefs::AddAppAndShortcut(
}
// From now, app is available.
- if (!ready_apps_.count(app_id))
+ const bool was_disabled = ready_apps_.count(app_id) == 0;
+ if (was_disabled)
ready_apps_.insert(app_id);
if (was_registered) {
- FOR_EACH_OBSERVER(Observer, observer_list_,
- OnAppReadyChanged(app_id, true));
+ if (was_disabled) {
+ FOR_EACH_OBSERVER(Observer, observer_list_,
+ OnAppReadyChanged(app_id, true));
+ }
} else {
AppInfo app_info(
name, package_name, activity, intent_uri, icon_resource_id,
@@ -755,18 +757,41 @@ void ArcAppListPrefs::OnTaskOrientationLockRequested(
OnTaskOrientationLockRequested(task_id, orientation_lock));
}
-void ArcAppListPrefs::OnAppAdded(arc::mojom::AppInfoPtr app) {
- if ((app->name.get().empty() || app->package_name.get().empty() ||
- app->activity.get().empty())) {
+void ArcAppListPrefs::AddApp(const arc::mojom::AppInfo& app_info) {
+ if ((app_info.name.get().empty() || app_info.package_name.get().empty() ||
+ app_info.activity.get().empty())) {
VLOG(2) << "App Name, package name, and activity cannot be empty.";
return;
}
- AddAppAndShortcut(app->name, app->package_name, app->activity,
+ AddAppAndShortcut(app_info.name, app_info.package_name, app_info.activity,
std::string() /* intent_uri */,
- std::string() /* icon_resource_id */, app->sticky,
- app->notifications_enabled, false /* shortcut */,
- true /* launchable */, app->orientation_lock);
+ std::string() /* icon_resource_id */, app_info.sticky,
+ app_info.notifications_enabled, false /* shortcut */,
+ true /* launchable */, app_info.orientation_lock);
+}
+
+void ArcAppListPrefs::OnAppAddedDeprecated(arc::mojom::AppInfoPtr app) {
+ AddApp(*app);
+}
+
+void ArcAppListPrefs::OnPackageAppListRefreshed(
+ const mojo::String& package_name,
+ mojo::Array<arc::mojom::AppInfoPtr> apps) {
+ if (package_name.get().empty()) {
+ VLOG(2) << "Package name cannot be empty.";
+ return;
+ }
+
+ std::unordered_set<std::string> apps_to_remove =
+ GetAppsForPackage(package_name);
+ for (const auto& app : apps) {
+ apps_to_remove.erase(GetAppId(app->package_name, app->activity));
+ AddApp(*app);
+ }
+
+ for (const auto& app_id : apps_to_remove)
+ RemoveApp(app_id);
}
void ArcAppListPrefs::OnInstallShortcut(arc::mojom::ShortcutInfoPtr shortcut) {
@@ -782,9 +807,10 @@ void ArcAppListPrefs::OnInstallShortcut(arc::mojom::ShortcutInfoPtr shortcut) {
true /* launchable */, arc::mojom::OrientationLock::NONE);
}
-void ArcAppListPrefs::OnPackageRemoved(const mojo::String& package_name) {
+std::unordered_set<std::string> ArcAppListPrefs::GetAppsForPackage(
+ const std::string& package_name) const {
+ std::unordered_set<std::string> app_set;
const base::DictionaryValue* apps = prefs_->GetDictionary(prefs::kArcApps);
- std::vector<std::string> apps_to_remove;
for (base::DictionaryValue::Iterator app_it(*apps); !app_it.IsAtEnd();
app_it.Advance()) {
const base::Value* value = &app_it.value();
@@ -803,10 +829,16 @@ void ArcAppListPrefs::OnPackageRemoved(const mojo::String& package_name) {
if (package_name != app_package)
continue;
- apps_to_remove.push_back(app_it.key());
+ app_set.insert(app_it.key());
}
- for (auto& app_id : apps_to_remove)
+ return app_set;
+}
+
+void ArcAppListPrefs::OnPackageRemoved(const mojo::String& package_name) {
+ const std::unordered_set<std::string> apps_to_remove =
+ GetAppsForPackage(package_name);
+ for (const auto& app_id : apps_to_remove)
RemoveApp(app_id);
RemovePackageFromPrefs(prefs_, package_name);
« no previous file with comments | « chrome/browser/ui/app_list/arc/arc_app_list_prefs.h ('k') | chrome/browser/ui/app_list/arc/arc_app_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698