// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_APP_SYNC_DATA_H_ #define CHROME_BROWSER_EXTENSIONS_APP_SYNC_DATA_H_ #include "chrome/browser/extensions/extension_sync_data.h" #include "sync/api/string_ordinal.h" #include "sync/api/sync_change.h" namespace syncer { class SyncData; } namespace sync_pb { class AppSpecifics; } namespace extensions { class Extension; class ExtensionSyncData; // A class that encapsulates the synced properties of an Application. class AppSyncData { public: AppSyncData(); explicit AppSyncData(const syncer::SyncData& sync_data); explicit AppSyncData(const syncer::SyncChange& sync_change); AppSyncData(const Extension& extension, bool enabled, bool incognito_enabled, const syncer::StringOrdinal& app_launch_ordinal, const syncer::StringOrdinal& page_ordinal); ~AppSyncData(); // Retrive sync data from this class. syncer::SyncData GetSyncData() const; syncer::SyncChange GetSyncChange( syncer::SyncChange::SyncChangeType change_type) const; const std::string& id() const { return extension_sync_data_.id(); } bool uninstalled() const { return extension_sync_data_.uninstalled(); } // These ordinals aren't necessarily valid. Some applications don't have // valid ordinals because they don't appear on the new tab page. const syncer::StringOrdinal& app_launch_ordinal() const { return app_launch_ordinal_; } const syncer::StringOrdinal& page_ordinal() const { return page_ordinal_; } const ExtensionSyncData& extension_sync_data() const { return extension_sync_data_; } private: // Convert an AppSyncData back out to a sync structure. void PopulateAppSpecifics(sync_pb::AppSpecifics* specifics) const; // Populate this class from sync inputs. void PopulateFromAppSpecifics( const sync_pb::AppSpecifics& specifics); void PopulateFromSyncData(const syncer::SyncData& sync_data); ExtensionSyncData extension_sync_data_; syncer::StringOrdinal app_launch_ordinal_; syncer::StringOrdinal page_ordinal_; }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_APP_SYNC_DATA_H_