Chromium Code Reviews| 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 0c2e812e905712e7e34a4ad15360222534e0e39b..28d3249e322d3c000b66977ae7bf216abff57b8a 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 |
| @@ -634,7 +634,7 @@ void ArcAppListPrefs::NotifyRegisteredApps() { |
| apps_restored_ = true; |
| } |
| -void ArcAppListPrefs::RemoveAllApps() { |
| +void ArcAppListPrefs::RemoveAllAppsAndPackages() { |
| std::vector<std::string> app_ids = GetAppIdsNoArcEnabledCheck(); |
| for (const auto& app_id : app_ids) { |
| if (!default_apps_.HasApp(app_id)) { |
| @@ -647,6 +647,15 @@ void ArcAppListPrefs::RemoveAllApps() { |
| } |
| } |
| DCHECK(ready_apps_.empty()); |
| + |
| + const std::vector<std::string> package_names_to_remove = |
| + GetPackagesFromPrefs(false, true); |
| + for (auto package_name : package_names_to_remove) { |
| + if (!default_apps_.HasPackage(package_name)) |
| + RemovePackageFromPrefs(prefs_, package_name); |
| + for (auto& observer : observer_list_) |
| + observer.OnPackageRemoved(package_name, false); |
| + } |
| } |
| void ArcAppListPrefs::OnArcPlayStoreEnabledChanged(bool enabled) { |
| @@ -659,7 +668,7 @@ void ArcAppListPrefs::OnArcPlayStoreEnabledChanged(bool enabled) { |
| if (enabled) |
| NotifyRegisteredApps(); |
| else |
| - RemoveAllApps(); |
| + RemoveAllAppsAndPackages(); |
| } |
| void ArcAppListPrefs::SetDefaultAppsFilterLevel() { |
| @@ -684,7 +693,7 @@ void ArcAppListPrefs::OnDefaultAppsReady() { |
| // Apply uninstalled packages now. |
| const std::vector<std::string> uninstalled_package_names = |
| - GetPackagesFromPrefs(false); |
| + GetPackagesFromPrefs(false, false); |
|
xiyuan
2017/04/18 20:43:01
nit: doc the booleans ?
khmel
2017/04/20 00:13:38
Done.
|
| for (const auto& uninstalled_package_name : uninstalled_package_names) |
| default_apps_.MaybeMarkPackageUninstalled(uninstalled_package_name, true); |
| @@ -935,7 +944,6 @@ void ArcAppListPrefs::AddOrUpdatePackagePrefs( |
| void ArcAppListPrefs::RemovePackageFromPrefs(PrefService* prefs, |
| const std::string& package_name) { |
| - DCHECK(IsArcAndroidEnabledForProfile(profile_)); |
| default_apps_.MaybeMarkPackageUninstalled(package_name, true); |
| if (!default_apps_.HasPackage(package_name)) { |
| DictionaryPrefUpdate update(prefs, prefs::kArcPackages); |
| @@ -1114,6 +1122,7 @@ std::unordered_set<std::string> ArcAppListPrefs::GetAppsForPackage( |
| } |
| void ArcAppListPrefs::HandlePackageRemoved(const std::string& package_name) { |
| + DCHECK(IsArcAndroidEnabledForProfile(profile_)); |
| const std::unordered_set<std::string> apps_to_remove = |
| GetAppsForPackage(package_name); |
| for (const auto& app_id : apps_to_remove) |
| @@ -1126,7 +1135,7 @@ void ArcAppListPrefs::OnPackageRemoved(const std::string& package_name) { |
| HandlePackageRemoved(package_name); |
| for (auto& observer : observer_list_) |
| - observer.OnPackageRemoved(package_name); |
| + observer.OnPackageRemoved(package_name, true); |
| } |
| void ArcAppListPrefs::OnAppIcon(const std::string& package_name, |
| @@ -1294,14 +1303,17 @@ void ArcAppListPrefs::OnPackageListRefreshed( |
| } |
| std::vector<std::string> ArcAppListPrefs::GetPackagesFromPrefs() const { |
| - return GetPackagesFromPrefs(true); |
| + return GetPackagesFromPrefs(true, true); |
|
xiyuan
2017/04/18 20:43:01
nit: doc the booleans
khmel
2017/04/20 00:13:38
Done.
|
| } |
| std::vector<std::string> ArcAppListPrefs::GetPackagesFromPrefs( |
| + bool check_arc_alive, |
| bool installed) const { |
| std::vector<std::string> packages; |
| - if ((!IsArcAlive() || !IsArcAndroidEnabledForProfile(profile_)) && installed) |
| + if (check_arc_alive && |
| + (!IsArcAlive() || !IsArcAndroidEnabledForProfile(profile_))) { |
| return packages; |
| + } |
| const base::DictionaryValue* package_prefs = |
| prefs_->GetDictionary(prefs::kArcPackages); |