| Index: chrome/common/extensions/extension.cc
|
| diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
|
| index 04475081a52ddc8d892092fde25f1caeb48a4a19..b48968f8d8ae646a721edf116c961020704722ca 100644
|
| --- a/chrome/common/extensions/extension.cc
|
| +++ b/chrome/common/extensions/extension.cc
|
| @@ -2971,8 +2971,7 @@ bool Extension::OverlapsWithOrigin(const GURL& origin) const {
|
| }
|
|
|
| Extension::SyncType Extension::GetSyncType() const {
|
| - // TODO(akalin): Figure out if we need to allow some other types.
|
| - if (location() != Extension::INTERNAL) {
|
| + if (!IsSyncable()) {
|
| // We have a non-standard location.
|
| return SYNC_TYPE_NONE;
|
| }
|
| @@ -3012,6 +3011,25 @@ Extension::SyncType Extension::GetSyncType() const {
|
| }
|
| }
|
|
|
| +bool Extension::IsSyncable() const {
|
| + // TODO(akalin): Figure out if we need to allow some other types.
|
| +
|
| + // We want to sync any extensions that are shown in the luancher because
|
| + // their positions should sync.
|
| + return location_ == Extension::INTERNAL ||
|
| + ShouldDisplayInLauncher();
|
| +
|
| +}
|
| +
|
| +bool Extension::ShouldDisplayInLauncher() const {
|
| + // The CWS needs to be treated as syncable app because it appears on the NTP
|
| + // and we need to make sure its position values are synced.
|
| + // If another case arises where we need to have a special case like the CWS,
|
| + // something more systematic should be done.
|
| + return location_ == Extension::INTERNAL ||
|
| + id() == extension_misc::kWebStoreAppId;
|
| +}
|
| +
|
| ExtensionInfo::ExtensionInfo(const DictionaryValue* manifest,
|
| const std::string& id,
|
| const FilePath& path,
|
|
|