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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 {"spokenFeedback", prefs::kAccessibilitySpokenFeedbackEnabled, | 112 {"spokenFeedback", prefs::kAccessibilitySpokenFeedbackEnabled, |
112 APIPermission::kAccessibilityFeaturesRead, | 113 APIPermission::kAccessibilityFeaturesRead, |
113 APIPermission::kAccessibilityFeaturesModify}, | 114 APIPermission::kAccessibilityFeaturesModify}, |
114 {"stickyKeys", prefs::kAccessibilityStickyKeysEnabled, | 115 {"stickyKeys", prefs::kAccessibilityStickyKeysEnabled, |
115 APIPermission::kAccessibilityFeaturesRead, | 116 APIPermission::kAccessibilityFeaturesRead, |
116 APIPermission::kAccessibilityFeaturesModify}, | 117 APIPermission::kAccessibilityFeaturesModify}, |
117 {"virtualKeyboard", prefs::kAccessibilityVirtualKeyboardEnabled, | 118 {"virtualKeyboard", prefs::kAccessibilityVirtualKeyboardEnabled, |
118 APIPermission::kAccessibilityFeaturesRead, | 119 APIPermission::kAccessibilityFeaturesRead, |
119 APIPermission::kAccessibilityFeaturesModify}, | 120 APIPermission::kAccessibilityFeaturesModify}, |
120 #endif | 121 #endif |
| 122 // accessibilityFeatures.animationPolicy is available for |
| 123 // all platforms but the others from accessibilityFeatures |
| 124 // is only avaiable for OS_CHROMEOS. |
| 125 {"animationPolicy", prefs::kAnimationPolicy, |
| 126 APIPermission::kAccessibilityFeaturesRead, |
| 127 APIPermission::kAccessibilityFeaturesModify} |
121 }; | 128 }; |
122 | 129 |
123 class IdentityPrefTransformer : public PrefTransformerInterface { | 130 class IdentityPrefTransformer : public PrefTransformerInterface { |
124 public: | 131 public: |
125 base::Value* ExtensionToBrowserPref(const base::Value* extension_pref, | 132 base::Value* ExtensionToBrowserPref(const base::Value* extension_pref, |
126 std::string* error, | 133 std::string* error, |
127 bool* bad_message) override { | 134 bool* bad_message) override { |
128 return extension_pref->DeepCopy(); | 135 return extension_pref->DeepCopy(); |
129 } | 136 } |
130 | 137 |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 : profile_(Profile::FromBrowserContext(context)) { | 450 : profile_(Profile::FromBrowserContext(context)) { |
444 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) { | 451 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) { |
445 std::string event_name; | 452 std::string event_name; |
446 APIPermission::ID permission = APIPermission::kInvalid; | 453 APIPermission::ID permission = APIPermission::kInvalid; |
447 bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref( | 454 bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref( |
448 kPrefMapping[i].browser_pref, &event_name, &permission); | 455 kPrefMapping[i].browser_pref, &event_name, &permission); |
449 DCHECK(rv); | 456 DCHECK(rv); |
450 EventRouter::Get(profile_)->RegisterObserver(this, event_name); | 457 EventRouter::Get(profile_)->RegisterObserver(this, event_name); |
451 } | 458 } |
452 content_settings_store()->AddObserver(this); | 459 content_settings_store()->AddObserver(this); |
| 460 |
| 461 PrefService* prefs = profile_->GetPrefs(); |
| 462 pref_change_registrar_.Init(prefs); |
| 463 base::Closure animation_callback = base::Bind( |
| 464 &PreferenceAPI::UpdateAnimationPolicy, base::Unretained(this)); |
| 465 pref_change_registrar_.Add(prefs::kAnimationPolicy, animation_callback); |
| 466 } |
| 467 |
| 468 void PreferenceAPI::UpdateAnimationPolicy() { |
| 469 content::BrowserAccessibilityState::GetInstance() |
| 470 ->UpdateAnimationPolicy(); |
453 } | 471 } |
454 | 472 |
455 PreferenceAPI::~PreferenceAPI() { | 473 PreferenceAPI::~PreferenceAPI() { |
456 } | 474 } |
457 | 475 |
458 void PreferenceAPI::Shutdown() { | 476 void PreferenceAPI::Shutdown() { |
459 EventRouter::Get(profile_)->UnregisterObserver(this); | 477 EventRouter::Get(profile_)->UnregisterObserver(this); |
460 if (!extension_prefs()->extensions_disabled()) | 478 if (!extension_prefs()->extensions_disabled()) |
461 ClearIncognitoSessionOnlyContentSettings(); | 479 ClearIncognitoSessionOnlyContentSettings(); |
462 content_settings_store()->RemoveObserver(this); | 480 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)) { | 758 pref_key, PreferenceFunction::PERMISSION_TYPE_WRITE, &browser_pref)) { |
741 return false; | 759 return false; |
742 } | 760 } |
743 | 761 |
744 PreferenceAPI::Get(GetProfile()) | 762 PreferenceAPI::Get(GetProfile()) |
745 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope); | 763 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope); |
746 return true; | 764 return true; |
747 } | 765 } |
748 | 766 |
749 } // namespace extensions | 767 } // namespace extensions |
OLD | NEW |