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

Side by Side Diff: chrome/browser/extensions/api/preference/preference_api.cc

Issue 785723002: Add new extension APIs related to animation policy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary code Created 6 years 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 unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/preference/preference_api.h ('k') | chrome/browser/profiles/profile.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698