1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SYNC_DATA_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SYNC_DATA_H_
10 #include "base/version.h"
11 #include "sync/api/sync_change.h"
19 class ExtensionSpecifics
;
22 namespace extensions
{
26 // A class that encapsulates the synced properties of an Extension.
27 class ExtensionSyncData
{
30 explicit ExtensionSyncData(const syncer::SyncData
& sync_data
);
31 explicit ExtensionSyncData(const syncer::SyncChange
& sync_change
);
32 ExtensionSyncData(const Extension
& extension
,
34 bool incognito_enabled
);
37 // Retrieve sync data from this class.
38 syncer::SyncData
GetSyncData() const;
39 syncer::SyncChange
GetSyncChange(
40 syncer::SyncChange::SyncChangeType change_type
) const;
42 // Convert an ExtensionSyncData back out to a sync structure.
43 void PopulateExtensionSpecifics(sync_pb::ExtensionSpecifics
* specifics
) const;
45 // Populate this class from sync inputs.
46 void PopulateFromExtensionSpecifics(
47 const sync_pb::ExtensionSpecifics
& specifics
);
49 void set_uninstalled(bool uninstalled
);
51 const std::string
& id() const { return id_
; }
53 // Version-independent properties (i.e., used even when the
54 // version of the currently-installed extension doesn't match
56 bool uninstalled() const { return uninstalled_
; }
57 bool enabled() const { return enabled_
; }
58 bool incognito_enabled() const { return incognito_enabled_
; }
60 // Version-dependent properties (i.e., should be used only when the
61 // version of the currenty-installed extension matches |version|).
62 const Version
& version() const { return version_
; }
63 const GURL
& update_url() const { return update_url_
; }
64 // Used only for debugging.
65 const std::string
& name() const { return name_
; }
68 // Populate this class from sync inputs.
69 void PopulateFromSyncData(const syncer::SyncData
& sync_data
);
74 bool incognito_enabled_
;
80 } // namespace extensions
82 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYNC_DATA_H_