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

Side by Side Diff: chrome/browser/sync/glue/extension_util.cc

Issue 6852029: [Sync] Move some extension-sync-related logic to ExtensionService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address asargent's comments Created 9 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/sync/glue/extension_util.h" 5 #include "chrome/browser/sync/glue/extension_util.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/stl_util-inl.h" 11 #include "base/stl_util-inl.h"
12 #include "base/version.h" 12 #include "base/version.h"
13 #include "chrome/browser/extensions/extension_prefs.h" 13 #include "chrome/browser/extensions/extension_prefs.h"
14 #include "chrome/browser/extensions/extension_service.h" 14 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/extensions/extension_sync_data.h"
15 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" 16 #include "chrome/browser/sync/protocol/extension_specifics.pb.h"
16 #include "chrome/common/extensions/extension.h" 17 #include "chrome/common/extensions/extension.h"
17 #include "chrome/common/extensions/extension_constants.h" 18 #include "chrome/common/extensions/extension_constants.h"
18 19
19 namespace browser_sync { 20 namespace browser_sync {
20 21
21 bool IsExtensionValid(const Extension& extension) { 22 bool IsExtensionValid(const Extension& extension) {
22 // TODO(akalin): Figure out if we need to allow some other types. 23 // TODO(akalin): Figure out if we need to allow some other types.
23 if (extension.location() != Extension::INTERNAL) { 24 if (extension.location() != Extension::INTERNAL) {
24 // We have a non-standard location. 25 // We have a non-standard location.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 bool incognito_enabled = extension_service.IsIncognitoEnabled(id); 151 bool incognito_enabled = extension_service.IsIncognitoEnabled(id);
151 specifics->set_id(id); 152 specifics->set_id(id);
152 specifics->set_version(extension.VersionString()); 153 specifics->set_version(extension.VersionString());
153 specifics->set_update_url(extension.update_url().spec()); 154 specifics->set_update_url(extension.update_url().spec());
154 specifics->set_enabled(enabled); 155 specifics->set_enabled(enabled);
155 specifics->set_incognito_enabled(incognito_enabled); 156 specifics->set_incognito_enabled(incognito_enabled);
156 specifics->set_name(extension.name()); 157 specifics->set_name(extension.name());
157 DcheckIsExtensionSpecificsValid(*specifics); 158 DcheckIsExtensionSpecificsValid(*specifics);
158 } 159 }
159 160
160 bool IsExtensionOutdated(const Extension& extension,
161 const sync_pb::ExtensionSpecifics& specifics) {
162 DCHECK(IsExtensionValid(extension));
163 DcheckIsExtensionSpecificsValid(specifics);
164 scoped_ptr<Version> specifics_version(
165 Version::GetVersionFromString(specifics.version()));
166 if (!specifics_version.get()) {
167 // If version is invalid, assume we're up-to-date.
168 return false;
169 }
170 return extension.version()->CompareTo(*specifics_version) < 0;
171 }
172
173 void MergeExtensionSpecifics( 161 void MergeExtensionSpecifics(
174 const sync_pb::ExtensionSpecifics& specifics, 162 const sync_pb::ExtensionSpecifics& specifics,
175 bool merge_user_properties, 163 bool merge_user_properties,
176 sync_pb::ExtensionSpecifics* merged_specifics) { 164 sync_pb::ExtensionSpecifics* merged_specifics) {
177 DcheckIsExtensionSpecificsValid(*merged_specifics); 165 DcheckIsExtensionSpecificsValid(*merged_specifics);
178 DcheckIsExtensionSpecificsValid(specifics); 166 DcheckIsExtensionSpecificsValid(specifics);
179 DCHECK_EQ(specifics.id(), merged_specifics->id()); 167 DCHECK_EQ(specifics.id(), merged_specifics->id());
180 // TODO(akalin): Merge enabled permissions when we sync those. 168 // TODO(akalin): Merge enabled permissions when we sync those.
181 scoped_ptr<Version> version( 169 scoped_ptr<Version> version(
182 Version::GetVersionFromString(specifics.version())); 170 Version::GetVersionFromString(specifics.version()));
183 CHECK(version.get()); 171 CHECK(version.get());
184 scoped_ptr<Version> merged_version( 172 scoped_ptr<Version> merged_version(
185 Version::GetVersionFromString(merged_specifics->version())); 173 Version::GetVersionFromString(merged_specifics->version()));
186 CHECK(merged_version.get()); 174 CHECK(merged_version.get());
187 if (version->CompareTo(*merged_version) >= 0) { 175 if (version->CompareTo(*merged_version) >= 0) {
188 // |specifics| has a more recent or the same version, so merge it 176 // |specifics| has a more recent or the same version, so merge it
189 // in. 177 // in.
190 CopyNonUserProperties(specifics, merged_specifics); 178 CopyNonUserProperties(specifics, merged_specifics);
191 if (merge_user_properties) { 179 if (merge_user_properties) {
192 CopyUserProperties(specifics, merged_specifics); 180 CopyUserProperties(specifics, merged_specifics);
193 } 181 }
194 } 182 }
195 } 183 }
196 184
185 bool GetExtensionSyncData(
186 const sync_pb::ExtensionSpecifics& specifics,
187 ExtensionSyncData* sync_data) {
188 if (!Extension::IdIsValid(specifics.id())) {
189 return false;
190 }
191
192 scoped_ptr<Version> version(
193 Version::GetVersionFromString(specifics.version()));
194 if (!version.get()) {
195 return false;
196 }
197
198 // The update URL must be either empty or valid.
199 GURL update_url(specifics.update_url());
200 if (!update_url.is_empty() && !update_url.is_valid()) {
201 return false;
202 }
203
204 sync_data->id = specifics.id();
205 sync_data->update_url = update_url;
206 sync_data->version = *version;
207 sync_data->enabled = specifics.enabled();
208 sync_data->incognito_enabled = specifics.incognito_enabled();
209 return true;
210 }
211
197 } // namespace browser_sync 212 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/extension_util.h ('k') | chrome/browser/sync/glue/extension_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698