Index: chrome/browser/sync/glue/extension_util.cc |
diff --git a/chrome/browser/sync/glue/extension_util.cc b/chrome/browser/sync/glue/extension_util.cc |
index 1fad37e1d3be6fccf8517a39976dd1518bd0f9d8..4ad0f9f8994c0fe2b58094fc83d614d225bed671 100644 |
--- a/chrome/browser/sync/glue/extension_util.cc |
+++ b/chrome/browser/sync/glue/extension_util.cc |
@@ -8,6 +8,7 @@ |
#include "base/logging.h" |
#include "base/scoped_ptr.h" |
+#include "base/stl_util-inl.h" |
#include "base/version.h" |
#include "chrome/browser/extensions/extensions_service.h" |
#include "chrome/browser/sync/protocol/extension_specifics.pb.h" |
@@ -17,17 +18,25 @@ |
namespace browser_sync { |
-bool IsExtensionSyncable(const Extension& extension) { |
+ExtensionType GetExtensionType(const Extension& extension) { |
if (extension.is_theme()) { |
- return false; |
+ return THEME; |
} |
// TODO(akalin): Add Extensions::is_app(). |
if (!extension.GetFullLaunchURL().is_empty()) { |
- // We have an app. |
- return false; |
+ return APP; |
+ } |
+ |
+ if (extension.converted_from_user_script()) { |
+ return USER_SCRIPT; |
} |
+ // Otherwise, we just have a regular extension. |
+ return EXTENSION; |
+} |
+ |
+bool IsExtensionValid(const Extension& extension) { |
// TODO(akalin): Figure out if we need to allow some other types. |
if (extension.location() != Extension::INTERNAL) { |
// We have a non-standard location. |
@@ -57,6 +66,13 @@ bool IsExtensionSyncable(const Extension& extension) { |
return true; |
} |
+bool IsExtensionValidAndSyncable(const Extension& extension, |
+ const ExtensionTypeSet& allowed_types) { |
+ return |
+ IsExtensionValid(extension) && |
+ ContainsKey(allowed_types, GetExtensionType(extension)); |
+} |
+ |
std::string ExtensionSpecificsToString( |
const sync_pb::ExtensionSpecifics& specifics) { |
std::stringstream ss; |
@@ -167,7 +183,7 @@ void GetExtensionSpecifics(const Extension& extension, |
void GetExtensionSpecificsHelper(const Extension& extension, |
bool enabled, bool incognito_enabled, |
sync_pb::ExtensionSpecifics* specifics) { |
- DCHECK(IsExtensionSyncable(extension)); |
+ DCHECK(IsExtensionValid(extension)); |
const std::string& id = extension.id(); |
specifics->set_id(id); |
specifics->set_version(extension.VersionString()); |
@@ -180,7 +196,7 @@ void GetExtensionSpecificsHelper(const Extension& extension, |
bool IsExtensionOutdated(const Extension& extension, |
const sync_pb::ExtensionSpecifics& specifics) { |
- DCHECK(IsExtensionSyncable(extension)); |
+ DCHECK(IsExtensionValid(extension)); |
DcheckIsExtensionSpecificsValid(specifics); |
scoped_ptr<Version> specifics_version( |
Version::GetVersionFromString(specifics.version())); |
@@ -197,7 +213,7 @@ void SetExtensionProperties( |
DcheckIsExtensionSpecificsValid(specifics); |
CHECK(extensions_service); |
CHECK(extension); |
- DCHECK(IsExtensionSyncable(*extension)); |
+ DCHECK(IsExtensionValid(*extension)); |
const std::string& id = extension->id(); |
GURL update_url(specifics.update_url()); |
if (update_url != extension->update_url()) { |