Index: chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc |
diff --git a/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc b/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc |
index e4d462826d918013b88bb284bc71bd516e998c7b..20f75b77cf47bb20501a950fe513ee5b0710d4a7 100644 |
--- a/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc |
+++ b/chrome/browser/ui/app_list/arc/arc_package_syncable_service.cc |
@@ -5,6 +5,8 @@ |
#include "chrome/browser/ui/app_list/arc/arc_package_syncable_service.h" |
#include <unordered_set> |
+#include <utility> |
+#include <vector> |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/sync/profile_sync_service_factory.h" |
@@ -29,6 +31,9 @@ using ArcSyncItem = ArcPackageSyncableService::SyncItem; |
constexpr int64_t kNoAndroidID = 0; |
+constexpr uint32_t kUninstallPackageMinVersion = 2; |
+constexpr uint32_t kInstallPackageMinVersion = 8; |
+ |
std::unique_ptr<ArcSyncItem> CreateSyncItemFromSyncSpecifics( |
const sync_pb::ArcPackageSpecifics& specifics) { |
return base::MakeUnique<ArcSyncItem>( |
@@ -428,31 +433,40 @@ bool ArcPackageSyncableService::DeleteSyncItemSpecifics( |
void ArcPackageSyncableService::InstallPackage(const ArcSyncItem* sync_item) { |
DCHECK(sync_item); |
- if (!prefs_ || !prefs_->app_instance_holder()->instance()) { |
+ if (!prefs_) { |
VLOG(2) << "Request to install package when bridge service is not ready: " |
<< sync_item->package_name << "."; |
return; |
} |
+ auto* instance = prefs_->app_instance_holder()->GetInstanceForMethod( |
+ "InstallPackage", kInstallPackageMinVersion); |
+ if (!instance) |
+ return; |
+ |
mojom::ArcPackageInfo package; |
package.package_name = sync_item->package_name; |
package.package_version = sync_item->package_version; |
package.last_backup_android_id = sync_item->last_backup_android_id; |
package.last_backup_time = sync_item->last_backup_time; |
package.sync = true; |
- prefs_->app_instance_holder()->instance()->InstallPackage(package.Clone()); |
+ instance->InstallPackage(package.Clone()); |
} |
void ArcPackageSyncableService::UninstallPackage(const ArcSyncItem* sync_item) { |
DCHECK(sync_item); |
- if (!prefs_ || !prefs_->app_instance_holder()->instance()) { |
+ if (!prefs_) { |
VLOG(2) << "Request to uninstall package when bridge service is not ready: " |
<< sync_item->package_name << "."; |
return; |
} |
- prefs_->app_instance_holder()->instance()->UninstallPackage( |
- sync_item->package_name); |
+ auto* instance = prefs_->app_instance_holder()->GetInstanceForMethod( |
+ "UninstallPackage", kUninstallPackageMinVersion); |
+ if (!instance) |
+ return; |
+ |
+ instance->UninstallPackage(sync_item->package_name); |
} |
bool ArcPackageSyncableService::ShouldSyncPackage( |