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 |