Index: chrome/common/extensions/extension.cc |
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc |
index 03bba03247001607407bbad7e3a594fe3ba3d415..a2aa3c53f4739bb8a9065d004473bec9e7a8fe94 100644 |
--- a/chrome/common/extensions/extension.cc |
+++ b/chrome/common/extensions/extension.cc |
@@ -3776,9 +3776,15 @@ 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 internal and the chrome web store. |
- return location() == Extension::INTERNAL || |
- id() == extension_misc::kWebStoreAppId; |
+ // Default apps are not synced because otherwise they will pollute profiles |
+ // that don't already have them. Specially, if a user doesn't have default |
+ // apps, creates a new profile (which get default apps) and then enables sync |
+ // for it, then their profile everywhere gets the default apps. |
+ bool is_syncable = (location() == Extension::INTERNAL && |
+ !was_installed_by_default()); |
+ // Sync the chrome web store to maintain its position on the new tab page. |
+ is_syncable |= (id() == extension_misc::kWebStoreAppId); |
+ return is_syncable; |
} |
bool Extension::ShouldDisplayInLauncher() const { |