| Index: chrome/common/extensions/extension.cc
|
| diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
|
| index 86268cd76bcbf7b9a218826b617db98a4ede7818..49fd0a303a65e2915a6685c83fb6c106994ba6f6 100644
|
| --- a/chrome/common/extensions/extension.cc
|
| +++ b/chrome/common/extensions/extension.cc
|
| @@ -282,7 +282,7 @@ Extension::Location Extension::GetHigherPriorityLocation(
|
| // deterministicly choose a location.
|
| CHECK(loc1_rank != loc2_rank);
|
|
|
| - // Lowest rank has highest priority.
|
| + // Highest rank has highest priority.
|
| return (loc1_rank > loc2_rank ? loc1 : loc2 );
|
| }
|
|
|
| @@ -2821,6 +2821,52 @@ bool Extension::OverlapsWithOrigin(const GURL& origin) const {
|
| return web_extent().OverlapsWith(origin_only_pattern_list);
|
| }
|
|
|
| +Extension::SyncType Extension::GetSyncType() const {
|
| + // TODO(akalin): Figure out if we need to allow some other types.
|
| + if (location() != Extension::INTERNAL) {
|
| + // We have a non-standard location.
|
| + return SYNC_TYPE_NONE;
|
| + }
|
| +
|
| + // Disallow extensions with non-gallery auto-update URLs for now.
|
| + //
|
| + // TODO(akalin): Relax this restriction once we've put in UI to
|
| + // approve synced extensions.
|
| + if (!update_url().is_empty() &&
|
| + (update_url() != GalleryUpdateUrl(false)) &&
|
| + (update_url() != GalleryUpdateUrl(true))) {
|
| + return SYNC_TYPE_NONE;
|
| + }
|
| +
|
| + // Disallow extensions with native code plugins.
|
| + //
|
| + // TODO(akalin): Relax this restriction once we've put in UI to
|
| + // approve synced extensions.
|
| + if (!plugins().empty()) {
|
| + return SYNC_TYPE_NONE;
|
| + }
|
| +
|
| + switch (GetType()) {
|
| + case Extension::TYPE_EXTENSION:
|
| + return SYNC_TYPE_EXTENSION;
|
| +
|
| + case Extension::TYPE_USER_SCRIPT:
|
| + // We only want to sync user scripts with gallery update URLs.
|
| + if (update_url() == GalleryUpdateUrl(true) ||
|
| + update_url() == GalleryUpdateUrl(false))
|
| + return SYNC_TYPE_EXTENSION;
|
| + else
|
| + return SYNC_TYPE_NONE;
|
| +
|
| + case Extension::TYPE_HOSTED_APP:
|
| + case Extension::TYPE_PACKAGED_APP:
|
| + return SYNC_TYPE_APP;
|
| +
|
| + default:
|
| + return SYNC_TYPE_NONE;
|
| + }
|
| +}
|
| +
|
| ExtensionInfo::ExtensionInfo(const DictionaryValue* manifest,
|
| const std::string& id,
|
| const FilePath& path,
|
|
|