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

Unified Diff: chrome/browser/extensions/extension_sync_service.cc

Issue 907533004: [Extensions] Sync the 'allowed scripting on all urls' preference (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/extension_sync_service.h ('k') | chrome/browser/extensions/extension_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_sync_service.cc
diff --git a/chrome/browser/extensions/extension_sync_service.cc b/chrome/browser/extensions/extension_sync_service.cc
index ccb04ecfbb0d09a5602ad001b4bac1b4738177b3..da191a6efbf38df8198d6fd35c52ca87d9e1866a 100644
--- a/chrome/browser/extensions/extension_sync_service.cc
+++ b/chrome/browser/extensions/extension_sync_service.cc
@@ -42,6 +42,7 @@
using extensions::Extension;
using extensions::ExtensionPrefs;
using extensions::ExtensionRegistry;
+using extensions::ExtensionSyncData;
using extensions::FeatureSwitch;
namespace {
@@ -60,6 +61,25 @@ void OnWebApplicationInfoLoaded(
CreateOrUpdateBookmarkApp(extension_service.get(), &synced_info);
}
+// Returns the pref value for "all urls enabled" for the given extension id.
+ExtensionSyncData::OptionalBoolean GetAllowedOnAllUrlsOptionalBoolean(
+ const std::string& extension_id,
+ content::BrowserContext* context) {
+ bool allowed_on_all_urls =
+ extensions::util::AllowedScriptingOnAllUrls(extension_id, context);
+ // If the extension is not allowed on all urls (which is not the default),
+ // then we have to sync the preference.
+ if (!allowed_on_all_urls)
+ return ExtensionSyncData::BOOLEAN_FALSE;
+
+ // If the user has explicitly set a value, then we sync it.
+ if (extensions::util::HasSetAllowedScriptingOnAllUrls(extension_id, context))
+ return ExtensionSyncData::BOOLEAN_TRUE;
+
+ // Otherwise, unset.
+ return ExtensionSyncData::BOOLEAN_UNSET;
+}
+
} // namespace
ExtensionSyncService::ExtensionSyncService(Profile* profile,
@@ -240,12 +260,10 @@ syncer::SyncError ExtensionSyncService::ProcessSyncChanges(
i != change_list.end();
++i) {
syncer::ModelType type = i->sync_data().GetDataType();
- if (type == syncer::EXTENSIONS) {
- extension_sync_bundle_.ProcessSyncChange(
- extensions::ExtensionSyncData(*i));
- } else if (type == syncer::APPS) {
+ if (type == syncer::EXTENSIONS)
+ extension_sync_bundle_.ProcessSyncChange(ExtensionSyncData(*i));
+ else if (type == syncer::APPS)
app_sync_bundle_.ProcessSyncChange(extensions::AppSyncData(*i));
- }
}
extension_prefs_->app_sorting()->FixNTPOrdinalCollisions();
@@ -253,14 +271,15 @@ syncer::SyncError ExtensionSyncService::ProcessSyncChanges(
return syncer::SyncError();
}
-extensions::ExtensionSyncData ExtensionSyncService::GetExtensionSyncData(
+ExtensionSyncData ExtensionSyncService::GetExtensionSyncData(
const Extension& extension) const {
- return extensions::ExtensionSyncData(
+ return ExtensionSyncData(
extension,
extension_service_->IsExtensionEnabled(extension.id()),
extensions::util::IsIncognitoEnabled(extension.id(), profile_),
extension_prefs_->HasDisableReason(extension.id(),
- Extension::DISABLE_REMOTE_INSTALL));
+ Extension::DISABLE_REMOTE_INSTALL),
+ GetAllowedOnAllUrlsOptionalBoolean(extension.id(), profile_));
}
extensions::AppSyncData ExtensionSyncService::GetAppSyncData(
@@ -271,15 +290,16 @@ extensions::AppSyncData ExtensionSyncService::GetAppSyncData(
extensions::util::IsIncognitoEnabled(extension.id(), profile_),
extension_prefs_->HasDisableReason(extension.id(),
Extension::DISABLE_REMOTE_INSTALL),
+ GetAllowedOnAllUrlsOptionalBoolean(extension.id(), profile_),
extension_prefs_->app_sorting()->GetAppLaunchOrdinal(extension.id()),
extension_prefs_->app_sorting()->GetPageOrdinal(extension.id()),
extensions::GetLaunchTypePrefValue(extension_prefs_, extension.id()));
}
-std::vector<extensions::ExtensionSyncData>
- ExtensionSyncService::GetExtensionSyncDataList() const {
+std::vector<ExtensionSyncData>
+ ExtensionSyncService::GetExtensionSyncDataList() const {
ExtensionRegistry* registry = ExtensionRegistry::Get(profile_);
- std::vector<extensions::ExtensionSyncData> extension_sync_list;
+ std::vector<ExtensionSyncData> extension_sync_list;
extension_sync_bundle_.GetExtensionSyncDataListHelper(
registry->enabled_extensions(), &extension_sync_list);
extension_sync_bundle_.GetExtensionSyncDataListHelper(
@@ -287,7 +307,7 @@ std::vector<extensions::ExtensionSyncData>
extension_sync_bundle_.GetExtensionSyncDataListHelper(
registry->terminated_extensions(), &extension_sync_list);
- std::vector<extensions::ExtensionSyncData> pending_extensions =
+ std::vector<ExtensionSyncData> pending_extensions =
extension_sync_bundle_.GetPendingData();
extension_sync_list.insert(extension_sync_list.begin(),
pending_extensions.begin(),
@@ -317,7 +337,7 @@ std::vector<extensions::AppSyncData> ExtensionSyncService::GetAppSyncDataList()
}
bool ExtensionSyncService::ProcessExtensionSyncData(
- const extensions::ExtensionSyncData& extension_sync_data) {
+ const ExtensionSyncData& extension_sync_data) {
if (!ProcessExtensionSyncDataHelper(extension_sync_data,
syncer::EXTENSIONS)) {
extension_sync_bundle_.AddPendingExtension(extension_sync_data.id(),
@@ -443,7 +463,7 @@ bool ExtensionSyncService::IsPendingEnable(
}
bool ExtensionSyncService::ProcessExtensionSyncDataHelper(
- const extensions::ExtensionSyncData& extension_sync_data,
+ const ExtensionSyncData& extension_sync_data,
syncer::ModelType type) {
const std::string& id = extension_sync_data.id();
const Extension* extension = extension_service_->GetInstalledExtension(id);
@@ -512,6 +532,14 @@ bool ExtensionSyncService::ProcessExtensionSyncDataHelper(
id, profile_, extension_sync_data.incognito_enabled());
extension = NULL; // No longer safe to use.
+ // Update the all urls flag.
+ if (extension_sync_data.all_urls_enabled() !=
+ ExtensionSyncData::BOOLEAN_UNSET) {
+ bool allowed = extension_sync_data.all_urls_enabled() ==
+ ExtensionSyncData::BOOLEAN_TRUE;
+ extensions::util::SetAllowedScriptingOnAllUrls(id, profile_, allowed);
+ }
+
if (extension_installed) {
// If the extension is already installed, check if it's outdated.
if (version_compare_result < 0) {
« no previous file with comments | « chrome/browser/extensions/extension_sync_service.h ('k') | chrome/browser/extensions/extension_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698