Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/preference/preference_api.h" | 5 #include "chrome/browser/extensions/api/preference/preference_api.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| 11 #include "base/memory/singleton.h" | 11 #include "base/memory/singleton.h" |
| 12 #include "base/prefs/pref_service.h" | 12 #include "base/prefs/pref_service.h" |
| 13 #include "base/stl_util.h" | 13 #include "base/stl_util.h" |
| 14 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
| 15 #include "base/values.h" | 15 #include "base/values.h" |
| 16 #include "chrome/browser/chrome_notification_types.h" | 16 #include "chrome/browser/chrome_notification_types.h" |
| 17 #include "chrome/browser/extensions/api/content_settings/content_settings_servic e.h" | 17 #include "chrome/browser/extensions/api/content_settings/content_settings_servic e.h" |
| 18 #include "chrome/browser/extensions/api/preference/preference_api_constants.h" | 18 #include "chrome/browser/extensions/api/preference/preference_api_constants.h" |
| 19 #include "chrome/browser/extensions/api/preference/preference_helpers.h" | 19 #include "chrome/browser/extensions/api/preference/preference_helpers.h" |
| 20 #include "chrome/browser/extensions/api/proxy/proxy_api.h" | 20 #include "chrome/browser/extensions/api/proxy/proxy_api.h" |
| 21 #include "chrome/browser/extensions/extension_service.h" | 21 #include "chrome/browser/extensions/extension_service.h" |
| 22 #include "chrome/browser/net/prediction_options.h" | 22 #include "chrome/browser/net/prediction_options.h" |
| 23 #include "chrome/browser/profiles/profile.h" | 23 #include "chrome/browser/profiles/profile.h" |
| 24 #include "chrome/common/pref_names.h" | 24 #include "chrome/common/pref_names.h" |
| 25 #include "components/translate/core/common/translate_pref_names.h" | 25 #include "components/translate/core/common/translate_pref_names.h" |
| 26 #include "content/public/browser/browser_accessibility_state.h" | |
| 26 #include "content/public/browser/notification_details.h" | 27 #include "content/public/browser/notification_details.h" |
| 27 #include "content/public/browser/notification_source.h" | 28 #include "content/public/browser/notification_source.h" |
| 28 #include "extensions/browser/extension_pref_value_map.h" | 29 #include "extensions/browser/extension_pref_value_map.h" |
| 29 #include "extensions/browser/extension_pref_value_map_factory.h" | 30 #include "extensions/browser/extension_pref_value_map_factory.h" |
| 30 #include "extensions/browser/extension_prefs.h" | 31 #include "extensions/browser/extension_prefs.h" |
| 31 #include "extensions/browser/extension_prefs_factory.h" | 32 #include "extensions/browser/extension_prefs_factory.h" |
| 32 #include "extensions/browser/extension_system_provider.h" | 33 #include "extensions/browser/extension_system_provider.h" |
| 33 #include "extensions/browser/extensions_browser_client.h" | 34 #include "extensions/browser/extensions_browser_client.h" |
| 34 #include "extensions/browser/pref_names.h" | 35 #include "extensions/browser/pref_names.h" |
| 35 #include "extensions/common/error_utils.h" | 36 #include "extensions/common/error_utils.h" |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 62 // write permission should not be granted. | 63 // write permission should not be granted. |
| 63 APIPermission::ID write_permission; | 64 APIPermission::ID write_permission; |
| 64 }; | 65 }; |
| 65 | 66 |
| 66 const char kOnPrefChangeFormat[] = "types.ChromeSetting.%s.onChange"; | 67 const char kOnPrefChangeFormat[] = "types.ChromeSetting.%s.onChange"; |
| 67 const char kConversionErrorMessage[] = | 68 const char kConversionErrorMessage[] = |
| 68 "Internal error: Stored value for preference '*' cannot be converted " | 69 "Internal error: Stored value for preference '*' cannot be converted " |
| 69 "properly."; | 70 "properly."; |
| 70 | 71 |
| 71 PrefMappingEntry kPrefMapping[] = { | 72 PrefMappingEntry kPrefMapping[] = { |
| 72 {"alternateErrorPagesEnabled", prefs::kAlternateErrorPagesEnabled, | 73 {"alternateErrorPagesEnabled", |
| 73 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 74 prefs::kAlternateErrorPagesEnabled, |
| 74 {"autofillEnabled", autofill::prefs::kAutofillEnabled, | 75 APIPermission::kPrivacy, |
| 75 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 76 APIPermission::kPrivacy}, |
| 76 {"hyperlinkAuditingEnabled", prefs::kEnableHyperlinkAuditing, | 77 {"autofillEnabled", |
| 77 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 78 autofill::prefs::kAutofillEnabled, |
| 78 {"networkPredictionEnabled", prefs::kNetworkPredictionOptions, | 79 APIPermission::kPrivacy, |
| 79 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 80 APIPermission::kPrivacy}, |
| 81 {"hyperlinkAuditingEnabled", | |
| 82 prefs::kEnableHyperlinkAuditing, | |
| 83 APIPermission::kPrivacy, | |
| 84 APIPermission::kPrivacy}, | |
| 85 {"networkPredictionEnabled", | |
| 86 prefs::kNetworkPredictionOptions, | |
| 87 APIPermission::kPrivacy, | |
| 88 APIPermission::kPrivacy}, | |
| 80 {"passwordSavingEnabled", | 89 {"passwordSavingEnabled", |
| 81 password_manager::prefs::kPasswordManagerSavingEnabled, | 90 password_manager::prefs::kPasswordManagerSavingEnabled, |
| 82 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 91 APIPermission::kPrivacy, |
| 83 {"protectedContentEnabled", prefs::kEnableDRM, APIPermission::kPrivacy, | 92 APIPermission::kPrivacy}, |
| 93 {"protectedContentEnabled", | |
| 94 prefs::kEnableDRM, | |
| 95 APIPermission::kPrivacy, | |
| 84 APIPermission::kPrivacy}, | 96 APIPermission::kPrivacy}, |
| 85 {"proxy", prefs::kProxy, APIPermission::kProxy, APIPermission::kProxy}, | 97 {"proxy", prefs::kProxy, APIPermission::kProxy, APIPermission::kProxy}, |
| 86 {"referrersEnabled", prefs::kEnableReferrers, APIPermission::kPrivacy, | 98 {"referrersEnabled", |
| 99 prefs::kEnableReferrers, | |
| 100 APIPermission::kPrivacy, | |
| 87 APIPermission::kPrivacy}, | 101 APIPermission::kPrivacy}, |
| 88 {"safeBrowsingEnabled", prefs::kSafeBrowsingEnabled, | 102 {"safeBrowsingEnabled", |
| 89 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 103 prefs::kSafeBrowsingEnabled, |
| 90 {"searchSuggestEnabled", prefs::kSearchSuggestEnabled, | 104 APIPermission::kPrivacy, |
| 91 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 105 APIPermission::kPrivacy}, |
| 92 {"spellingServiceEnabled", prefs::kSpellCheckUseSpellingService, | 106 {"searchSuggestEnabled", |
| 93 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 107 prefs::kSearchSuggestEnabled, |
| 94 {"thirdPartyCookiesAllowed", prefs::kBlockThirdPartyCookies, | 108 APIPermission::kPrivacy, |
| 95 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 109 APIPermission::kPrivacy}, |
| 96 {"translationServiceEnabled", prefs::kEnableTranslate, | 110 {"spellingServiceEnabled", |
| 97 APIPermission::kPrivacy, APIPermission::kPrivacy}, | 111 prefs::kSpellCheckUseSpellingService, |
| 112 APIPermission::kPrivacy, | |
| 113 APIPermission::kPrivacy}, | |
| 114 {"thirdPartyCookiesAllowed", | |
| 115 prefs::kBlockThirdPartyCookies, | |
| 116 APIPermission::kPrivacy, | |
| 117 APIPermission::kPrivacy}, | |
| 118 {"translationServiceEnabled", | |
| 119 prefs::kEnableTranslate, | |
| 120 APIPermission::kPrivacy, | |
| 121 APIPermission::kPrivacy}, | |
| 98 #if defined(OS_CHROMEOS) | 122 #if defined(OS_CHROMEOS) |
| 99 {"autoclick", prefs::kAccessibilityAutoclickEnabled, | 123 {"autoclick", |
| 124 prefs::kAccessibilityAutoclickEnabled, | |
| 100 APIPermission::kAccessibilityFeaturesRead, | 125 APIPermission::kAccessibilityFeaturesRead, |
| 101 APIPermission::kAccessibilityFeaturesModify}, | 126 APIPermission::kAccessibilityFeaturesModify}, |
| 102 {"highContrast", prefs::kAccessibilityHighContrastEnabled, | 127 {"highContrast", |
| 128 prefs::kAccessibilityHighContrastEnabled, | |
| 103 APIPermission::kAccessibilityFeaturesRead, | 129 APIPermission::kAccessibilityFeaturesRead, |
| 104 APIPermission::kAccessibilityFeaturesModify}, | 130 APIPermission::kAccessibilityFeaturesModify}, |
| 105 {"largeCursor", prefs::kAccessibilityLargeCursorEnabled, | 131 {"largeCursor", |
| 132 prefs::kAccessibilityLargeCursorEnabled, | |
| 106 APIPermission::kAccessibilityFeaturesRead, | 133 APIPermission::kAccessibilityFeaturesRead, |
| 107 APIPermission::kAccessibilityFeaturesModify}, | 134 APIPermission::kAccessibilityFeaturesModify}, |
| 108 {"screenMagnifier", prefs::kAccessibilityScreenMagnifierEnabled, | 135 {"screenMagnifier", |
| 136 prefs::kAccessibilityScreenMagnifierEnabled, | |
| 109 APIPermission::kAccessibilityFeaturesRead, | 137 APIPermission::kAccessibilityFeaturesRead, |
| 110 APIPermission::kAccessibilityFeaturesModify}, | 138 APIPermission::kAccessibilityFeaturesModify}, |
| 111 {"spokenFeedback", prefs::kAccessibilitySpokenFeedbackEnabled, | 139 {"spokenFeedback", |
| 140 prefs::kAccessibilitySpokenFeedbackEnabled, | |
| 112 APIPermission::kAccessibilityFeaturesRead, | 141 APIPermission::kAccessibilityFeaturesRead, |
| 113 APIPermission::kAccessibilityFeaturesModify}, | 142 APIPermission::kAccessibilityFeaturesModify}, |
| 114 {"stickyKeys", prefs::kAccessibilityStickyKeysEnabled, | 143 {"stickyKeys", |
| 144 prefs::kAccessibilityStickyKeysEnabled, | |
| 115 APIPermission::kAccessibilityFeaturesRead, | 145 APIPermission::kAccessibilityFeaturesRead, |
| 116 APIPermission::kAccessibilityFeaturesModify}, | 146 APIPermission::kAccessibilityFeaturesModify}, |
| 117 {"virtualKeyboard", prefs::kAccessibilityVirtualKeyboardEnabled, | 147 {"virtualKeyboard", |
| 148 prefs::kAccessibilityVirtualKeyboardEnabled, | |
| 118 APIPermission::kAccessibilityFeaturesRead, | 149 APIPermission::kAccessibilityFeaturesRead, |
| 119 APIPermission::kAccessibilityFeaturesModify}, | 150 APIPermission::kAccessibilityFeaturesModify}, |
| 120 #endif | 151 #endif |
| 121 }; | 152 // accessibilityFeatures.animationPolicy is available for |
| 153 // all platforms but the others from accessibilityFeatures | |
| 154 // is only avaiable for OS_CHROMEOS. | |
| 155 {"animationPolicy", | |
|
not at google - send to devlin
2014/12/12 17:27:58
Could you keep this in some sort of order? Up the
je_julie(Not used)
2014/12/14 05:46:26
Done.
| |
| 156 prefs::kAnimationPolicy, | |
| 157 APIPermission::kAccessibilityFeaturesRead, | |
| 158 APIPermission::kAccessibilityFeaturesModify}}; | |
| 122 | 159 |
| 123 class IdentityPrefTransformer : public PrefTransformerInterface { | 160 class IdentityPrefTransformer : public PrefTransformerInterface { |
| 124 public: | 161 public: |
| 125 base::Value* ExtensionToBrowserPref(const base::Value* extension_pref, | 162 base::Value* ExtensionToBrowserPref(const base::Value* extension_pref, |
| 126 std::string* error, | 163 std::string* error, |
| 127 bool* bad_message) override { | 164 bool* bad_message) override { |
| 128 return extension_pref->DeepCopy(); | 165 return extension_pref->DeepCopy(); |
| 129 } | 166 } |
| 130 | 167 |
| 131 base::Value* BrowserToExtensionPref( | 168 base::Value* BrowserToExtensionPref( |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 443 : profile_(Profile::FromBrowserContext(context)) { | 480 : profile_(Profile::FromBrowserContext(context)) { |
| 444 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) { | 481 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) { |
| 445 std::string event_name; | 482 std::string event_name; |
| 446 APIPermission::ID permission = APIPermission::kInvalid; | 483 APIPermission::ID permission = APIPermission::kInvalid; |
| 447 bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref( | 484 bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref( |
| 448 kPrefMapping[i].browser_pref, &event_name, &permission); | 485 kPrefMapping[i].browser_pref, &event_name, &permission); |
| 449 DCHECK(rv); | 486 DCHECK(rv); |
| 450 EventRouter::Get(profile_)->RegisterObserver(this, event_name); | 487 EventRouter::Get(profile_)->RegisterObserver(this, event_name); |
| 451 } | 488 } |
| 452 content_settings_store()->AddObserver(this); | 489 content_settings_store()->AddObserver(this); |
| 490 | |
| 491 PrefService* prefs = profile_->GetPrefs(); | |
| 492 pref_change_registrar_.Init(prefs); | |
| 493 base::Closure animation_callback = | |
| 494 base::Bind(&PreferenceAPI::UpdateAnimationPolicy, base::Unretained(this)); | |
| 495 pref_change_registrar_.Add(prefs::kAnimationPolicy, animation_callback); | |
| 496 } | |
| 497 | |
| 498 void PreferenceAPI::UpdateAnimationPolicy() { | |
| 499 content::BrowserAccessibilityState::GetInstance()->UpdateAnimationPolicy(); | |
|
not at google - send to devlin
2014/12/12 17:27:58
Seems like this code should be in PreferenceEventR
je_julie(Not used)
2014/12/14 05:46:26
I saw that PreferenceEventRouter is added with OnL
not at google - send to devlin
2014/12/15 03:44:07
Mm, ok, so the way I read this is actually that
-
| |
| 453 } | 500 } |
| 454 | 501 |
| 455 PreferenceAPI::~PreferenceAPI() { | 502 PreferenceAPI::~PreferenceAPI() { |
| 456 } | 503 } |
| 457 | 504 |
| 458 void PreferenceAPI::Shutdown() { | 505 void PreferenceAPI::Shutdown() { |
| 459 EventRouter::Get(profile_)->UnregisterObserver(this); | 506 EventRouter::Get(profile_)->UnregisterObserver(this); |
| 460 if (!extension_prefs()->extensions_disabled()) | 507 if (!extension_prefs()->extensions_disabled()) |
| 461 ClearIncognitoSessionOnlyContentSettings(); | 508 ClearIncognitoSessionOnlyContentSettings(); |
| 462 content_settings_store()->RemoveObserver(this); | 509 content_settings_store()->RemoveObserver(this); |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 740 pref_key, PreferenceFunction::PERMISSION_TYPE_WRITE, &browser_pref)) { | 787 pref_key, PreferenceFunction::PERMISSION_TYPE_WRITE, &browser_pref)) { |
| 741 return false; | 788 return false; |
| 742 } | 789 } |
| 743 | 790 |
| 744 PreferenceAPI::Get(GetProfile()) | 791 PreferenceAPI::Get(GetProfile()) |
| 745 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope); | 792 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope); |
| 746 return true; | 793 return true; |
| 747 } | 794 } |
| 748 | 795 |
| 749 } // namespace extensions | 796 } // namespace extensions |
| OLD | NEW |