app_sync_data.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/app_sync_data.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/extensions/extension.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/api/sync_data.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/app_specifics.pb.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/sync.pb.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AppSyncData::AppSyncData() {} 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AppSyncData::AppSyncData(const syncer::SyncData& sync_data) { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateFromSyncData(sync_data); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AppSyncData::AppSyncData(const syncer::SyncChange& sync_change) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateFromSyncData(sync_change.sync_data()); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_sync_data_.set_uninstalled( 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_change.change_type() == syncer::SyncChange::ACTION_DELETE); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AppSyncData::AppSyncData(const Extension& extension, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool enabled, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool incognito_enabled, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const syncer::StringOrdinal& app_launch_ordinal, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const syncer::StringOrdinal& page_ordinal) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : extension_sync_data_(extension, enabled, incognito_enabled), 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) app_launch_ordinal_(app_launch_ordinal), 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_ordinal_(page_ordinal) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AppSyncData::~AppSyncData() {} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)syncer::SyncData AppSyncData::GetSyncData() const { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::EntitySpecifics specifics; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateAppSpecifics(specifics.mutable_app()); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return syncer::SyncData::CreateLocalData(extension_sync_data_.id(), 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_sync_data_.name(), 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)syncer::SyncChange AppSyncData::GetSyncChange( 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncer::SyncChange::SyncChangeType change_type) const { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return syncer::SyncChange(FROM_HERE, change_type, GetSyncData()); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppSyncData::PopulateAppSpecifics(sync_pb::AppSpecifics* specifics) const { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(specifics); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Only sync the ordinal values if they are valid. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (app_launch_ordinal_.IsValid()) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics->set_app_launch_ordinal(app_launch_ordinal_.ToInternalValue()); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (page_ordinal_.IsValid()) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics->set_page_ordinal(page_ordinal_.ToInternalValue()); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_sync_data_.PopulateExtensionSpecifics( 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics->mutable_extension()); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppSyncData::PopulateFromAppSpecifics( 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const sync_pb::AppSpecifics& specifics) { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_sync_data_.PopulateFromExtensionSpecifics(specifics.extension()); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) app_launch_ordinal_ = syncer::StringOrdinal(specifics.app_launch_ordinal()); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_ordinal_ = syncer::StringOrdinal(specifics.page_ordinal()); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppSyncData::PopulateFromSyncData(const syncer::SyncData& sync_data) { 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateFromAppSpecifics(sync_data.GetSpecifics().app()); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace extensions 77