| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/extension_sync_data.h" | 5 #include "chrome/browser/extensions/extension_sync_data.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
| 9 #include "chrome/browser/sync/protocol/app_specifics.pb.h" | 9 #include "chrome/browser/sync/protocol/app_specifics.pb.h" |
| 10 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" | 10 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" |
| 11 | 11 |
| 12 ExtensionSyncData::ExtensionSyncData() | 12 ExtensionSyncData::ExtensionSyncData() |
| 13 : uninstalled_(false), | 13 : uninstalled_(false), |
| 14 enabled_(false), | 14 enabled_(false), |
| 15 incognito_enabled_(false), | 15 incognito_enabled_(false), |
| 16 type_(Extension::SYNC_TYPE_NONE) { | 16 type_(Extension::SYNC_TYPE_NONE), |
| 17 app_launch_index_(0), |
| 18 page_index_(0) { |
| 17 } | 19 } |
| 18 | 20 |
| 19 ExtensionSyncData::ExtensionSyncData(const SyncData& sync_data) | 21 ExtensionSyncData::ExtensionSyncData(const SyncData& sync_data) |
| 20 : uninstalled_(false), | 22 : uninstalled_(false), |
| 21 enabled_(false), | 23 enabled_(false), |
| 22 incognito_enabled_(false), | 24 incognito_enabled_(false), |
| 23 type_(Extension::SYNC_TYPE_NONE) { | 25 type_(Extension::SYNC_TYPE_NONE), |
| 26 app_launch_index_(0), |
| 27 page_index_(0) { |
| 24 PopulateFromSyncData(sync_data); | 28 PopulateFromSyncData(sync_data); |
| 25 } | 29 } |
| 26 | 30 |
| 27 ExtensionSyncData::ExtensionSyncData(const SyncChange& sync_change) | 31 ExtensionSyncData::ExtensionSyncData(const SyncChange& sync_change) |
| 28 : uninstalled_(sync_change.change_type() == SyncChange::ACTION_DELETE) { | 32 : uninstalled_(sync_change.change_type() == SyncChange::ACTION_DELETE) { |
| 29 PopulateFromSyncData(sync_change.sync_data()); | 33 PopulateFromSyncData(sync_change.sync_data()); |
| 30 } | 34 } |
| 31 | 35 |
| 32 ExtensionSyncData::ExtensionSyncData(const Extension& extension, | 36 ExtensionSyncData::ExtensionSyncData(const Extension& extension, |
| 33 bool enabled, | 37 bool enabled, |
| 34 bool incognito_enabled) | 38 bool incognito_enabled, |
| 39 int32 app_launch_index, |
| 40 int32 page_index) |
| 35 : id_(extension.id()), | 41 : id_(extension.id()), |
| 36 uninstalled_(false), | 42 uninstalled_(false), |
| 37 enabled_(enabled), | 43 enabled_(enabled), |
| 38 incognito_enabled_(incognito_enabled), | 44 incognito_enabled_(incognito_enabled), |
| 39 type_(extension.GetSyncType()), | 45 type_(extension.GetSyncType()), |
| 40 version_(*extension.version()), | 46 version_(*extension.version()), |
| 41 update_url_(extension.update_url()), | 47 update_url_(extension.update_url()), |
| 42 name_(extension.name()) { | 48 name_(extension.name()), |
| 49 app_launch_index_(app_launch_index), |
| 50 page_index_(page_index) { |
| 43 } | 51 } |
| 44 | 52 |
| 45 ExtensionSyncData::~ExtensionSyncData() {} | 53 ExtensionSyncData::~ExtensionSyncData() {} |
| 46 | 54 |
| 47 void ExtensionSyncData::PopulateSyncSpecifics( | 55 void ExtensionSyncData::PopulateExtensionSyncSpecifics( |
| 48 sync_pb::ExtensionSpecifics* specifics) const { | 56 sync_pb::ExtensionSpecifics* specifics) const { |
| 49 DCHECK(Extension::IdIsValid(id_)); | 57 DCHECK(Extension::IdIsValid(id_)); |
| 50 specifics->set_id(id_); | 58 specifics->set_id(id_); |
| 51 specifics->set_update_url(update_url_.spec()); | 59 specifics->set_update_url(update_url_.spec()); |
| 52 specifics->set_version(version_.GetString()); | 60 specifics->set_version(version_.GetString()); |
| 53 specifics->set_enabled(enabled_); | 61 specifics->set_enabled(enabled_); |
| 54 specifics->set_incognito_enabled(incognito_enabled_); | 62 specifics->set_incognito_enabled(incognito_enabled_); |
| 55 specifics->set_name(name_); | 63 specifics->set_name(name_); |
| 56 } | 64 } |
| 57 | 65 |
| 66 void ExtensionSyncData::PopulateAppSyncSpecifics( |
| 67 sync_pb::AppSpecifics* specifics) const { |
| 68 PopulateExtensionSyncSpecifics(specifics->mutable_extension()); |
| 69 |
| 70 specifics->set_app_launch_index(app_launch_index_); |
| 71 specifics->set_page_index(page_index_); |
| 72 } |
| 73 |
| 58 SyncData ExtensionSyncData::GetSyncData() const { | 74 SyncData ExtensionSyncData::GetSyncData() const { |
| 59 sync_pb::EntitySpecifics specifics; | 75 sync_pb::EntitySpecifics specifics; |
| 60 sync_pb::ExtensionSpecifics* extension_specifics = NULL; | |
| 61 | 76 |
| 62 switch (type_) { | 77 switch (type_) { |
| 63 case Extension::SYNC_TYPE_EXTENSION: | 78 case Extension::SYNC_TYPE_EXTENSION: |
| 64 extension_specifics = specifics.MutableExtension(sync_pb::extension); | 79 PopulateExtensionSyncSpecifics(specifics.MutableExtension( |
| 80 sync_pb::extension)); |
| 65 break; | 81 break; |
| 66 case Extension::SYNC_TYPE_APP: | 82 case Extension::SYNC_TYPE_APP: |
| 67 extension_specifics = | 83 PopulateAppSyncSpecifics(specifics.MutableExtension(sync_pb::app)); |
| 68 specifics.MutableExtension(sync_pb::app)->mutable_extension(); | |
| 69 break; | 84 break; |
| 70 default: | 85 default: |
| 71 LOG(FATAL) << "Attempt to get non-syncable data."; | 86 LOG(FATAL) << "Attempt to get non-syncable data."; |
| 72 } | 87 } |
| 73 | 88 |
| 74 PopulateSyncSpecifics(extension_specifics); | |
| 75 | |
| 76 return SyncData::CreateLocalData(id_, name_, specifics); | 89 return SyncData::CreateLocalData(id_, name_, specifics); |
| 77 } | 90 } |
| 78 | 91 |
| 79 SyncChange ExtensionSyncData::GetSyncChange( | 92 SyncChange ExtensionSyncData::GetSyncChange( |
| 80 SyncChange::SyncChangeType change_type) const { | 93 SyncChange::SyncChangeType change_type) const { |
| 81 return SyncChange(change_type, GetSyncData()); | 94 return SyncChange(change_type, GetSyncData()); |
| 82 } | 95 } |
| 83 | 96 |
| 84 void ExtensionSyncData::PopulateFromExtensionSpecifics( | 97 void ExtensionSyncData::PopulateFromExtensionSpecifics( |
| 85 const sync_pb::ExtensionSpecifics& specifics) { | 98 const sync_pb::ExtensionSpecifics& specifics) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 98 } | 111 } |
| 99 | 112 |
| 100 id_ = specifics.id(); | 113 id_ = specifics.id(); |
| 101 update_url_ = specifics_update_url; | 114 update_url_ = specifics_update_url; |
| 102 version_ = specifics_version; | 115 version_ = specifics_version; |
| 103 enabled_ = specifics.enabled(); | 116 enabled_ = specifics.enabled(); |
| 104 incognito_enabled_ = specifics.incognito_enabled(); | 117 incognito_enabled_ = specifics.incognito_enabled(); |
| 105 name_ = specifics.name(); | 118 name_ = specifics.name(); |
| 106 } | 119 } |
| 107 | 120 |
| 121 void ExtensionSyncData::PopulateFromAppSpecifics( |
| 122 const sync_pb::AppSpecifics& specifics) { |
| 123 PopulateFromExtensionSpecifics(specifics.extension()); |
| 124 |
| 125 app_launch_index_ = specifics.app_launch_index(); |
| 126 page_index_ = specifics.page_index(); |
| 127 } |
| 128 |
| 108 void ExtensionSyncData::PopulateFromSyncData(const SyncData& sync_data) { | 129 void ExtensionSyncData::PopulateFromSyncData(const SyncData& sync_data) { |
| 109 const sync_pb::EntitySpecifics& entity_specifics = sync_data.GetSpecifics(); | 130 const sync_pb::EntitySpecifics& entity_specifics = sync_data.GetSpecifics(); |
| 110 sync_pb::ExtensionSpecifics extension_expecifics; | 131 sync_pb::ExtensionSpecifics extension_expecifics; |
| 111 if (entity_specifics.HasExtension(sync_pb::extension)) { | 132 if (entity_specifics.HasExtension(sync_pb::extension)) { |
| 112 extension_expecifics = entity_specifics.GetExtension(sync_pb::extension); | 133 PopulateFromExtensionSpecifics( |
| 134 entity_specifics.GetExtension(sync_pb::extension)); |
| 113 type_ = Extension::SYNC_TYPE_EXTENSION; | 135 type_ = Extension::SYNC_TYPE_EXTENSION; |
| 114 } else if (entity_specifics.HasExtension(sync_pb::app)) { | 136 } else if (entity_specifics.HasExtension(sync_pb::app)) { |
| 115 extension_expecifics = | 137 PopulateFromAppSpecifics( |
| 116 entity_specifics.GetExtension(sync_pb::app).extension(); | 138 entity_specifics.GetExtension(sync_pb::app)); |
| 117 type_ = Extension::SYNC_TYPE_APP; | 139 type_ = Extension::SYNC_TYPE_APP; |
| 118 } else { | 140 } else { |
| 119 LOG(FATAL) << "Attempt to sync bad EntitySpecifics."; | 141 ; LOG(FATAL) << "Attempt to sync bad EntitySpecifics."; |
| 120 } | 142 } |
| 121 PopulateFromExtensionSpecifics(extension_expecifics); | |
| 122 } | 143 } |
| 123 | |
| OLD | NEW |