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

Unified Diff: chrome/browser/extensions/extension_sync_service.h

Issue 1240573012: Extension syncing: Introduce a NeedsSync pref (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ext_sync_uninstall
Patch Set: more cleanup; fix test Created 5 years, 5 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/extensions/extension_sync_service.h
diff --git a/chrome/browser/extensions/extension_sync_service.h b/chrome/browser/extensions/extension_sync_service.h
index 88e2c3c0f0dc309d1139a638332692fbdd8af367..5e1f83c6888965600821d512456376a3951f7f5f 100644
--- a/chrome/browser/extensions/extension_sync_service.h
+++ b/chrome/browser/extensions/extension_sync_service.h
@@ -8,13 +8,13 @@
#include <string>
#include <vector>
-#include "chrome/browser/extensions/pending_enables.h"
#include "chrome/browser/extensions/sync_bundle.h"
#include "components/keyed_service/core/keyed_service.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/common/extension.h"
#include "sync/api/syncable_service.h"
+class ExtensionService;
class Profile;
namespace extensions {
@@ -43,11 +43,9 @@ class ExtensionSyncService : public syncer::SyncableService,
// Convenience function to get the ExtensionSyncService for a BrowserContext.
static ExtensionSyncService* Get(content::BrowserContext* context);
+ // Notifies Sync that the given |extension| has been uninstalled.
void SyncUninstallExtension(const extensions::Extension& extension);
- void SyncEnableExtension(const extensions::Extension& extension);
- void SyncDisableExtension(const extensions::Extension& extension);
-
void SyncOrderingChange(const std::string& extension_id);
// Notifies Sync (if needed) of a newly-installed extension or a change to
@@ -66,38 +64,41 @@ class ExtensionSyncService : public syncer::SyncableService,
const tracked_objects::Location& from_here,
const syncer::SyncChangeList& change_list) override;
- // Creates the ExtensionSyncData for the given app/extension.
- extensions::ExtensionSyncData CreateSyncData(
- const extensions::Extension& extension) const;
-
// Applies the change specified passed in by either ExtensionSyncData to the
not at google - send to devlin 2015/07/16 18:25:47 This applies a change *from the sync server* right
Marc Treib 2015/07/17 10:24:06 Yes, "apply" = server -> local, "push" = local ->
// current system.
// Returns false if the changes were not completely applied and were added
// to the pending list to be tried again.
bool ApplySyncData(const extensions::ExtensionSyncData& extension_sync_data);
+ // Returns whether the extension with the given |extension_id| has local
+ // changes that need to be synced. This can only be true before sync has
+ // started, i.e. before MergeDataAndStartSyncing has been called.
+ bool ExtensionNeedsSync(const std::string& extension_id) const;
+
// |flare| provides a StartSyncFlare to the SyncableService. See
// sync_start_util for more. Public for testing.
void SetSyncStartFlare(const syncer::SyncableService::StartSyncFlare& flare);
private:
- // Whether the given extension has been enabled before sync has started.
- bool IsPendingEnable(const std::string& extension_id) const;
-
// Gets the SyncBundle for the given |type|.
extensions::SyncBundle* GetSyncBundle(syncer::ModelType type);
const extensions::SyncBundle* GetSyncBundle(syncer::ModelType type) const;
- // Gets the PendingEnables for apps/extensions.
- extensions::PendingEnables* GetPendingEnables(bool for_apps);
+ // Creates the ExtensionSyncData for the given app/extension.
+ extensions::ExtensionSyncData CreateSyncData(
+ const extensions::Extension& extension) const;
- // Gets the ExtensionSyncData for all apps or extensions.
- std::vector<extensions::ExtensionSyncData> GetSyncDataList(
- syncer::ModelType type) const;
+ // Collects the ExtensionSyncData for all installed apps or extensions.
+ // If |only_with_needs_sync| is true, includes only extensions that have the
+ // NeedsSync pref set, i.e. which have local changes that need to be pushed.
+ std::vector<extensions::ExtensionSyncData> GetLocalSyncDataList(
+ syncer::ModelType type, bool only_with_needs_sync) const;
+ // Helper for GetLocalSyncDataList.
void FillSyncDataList(
const extensions::ExtensionSet& extensions,
syncer::ModelType type,
+ bool only_with_needs_sync,
std::vector<extensions::ExtensionSyncData>* sync_data_list) const;
// Handles applying the extension specific values in |extension_sync_data| to
@@ -123,12 +124,6 @@ class ExtensionSyncService : public syncer::SyncableService,
extensions::SyncBundle app_sync_bundle_;
extensions::SyncBundle extension_sync_bundle_;
- // Set of extensions/apps that have been enabled before sync has started.
- // TODO(treib,kalman): This seems wrong. Why are enables special, as opposed
- // to disables, or any other changes?
- extensions::PendingEnables pending_app_enables_;
- extensions::PendingEnables pending_extension_enables_;
-
// Run()ning tells sync to try and start soon, because syncable changes
// have started happening. It will cause sync to call us back
// asynchronously via MergeDataAndStartSyncing as soon as possible.

Powered by Google App Engine
This is Rietveld 408576698