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

Side by Side Diff: chrome/browser/extensions/extension_prefs.cc

Issue 7432006: Add an experimental permissions API for extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/extension_prefs.h" 5 #include "chrome/browser/extensions/extension_prefs.h"
6 6
7 #include "base/string_number_conversions.h" 7 #include "base/string_number_conversions.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/extensions/extension_pref_store.h" 10 #include "chrome/browser/extensions/extension_pref_store.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 const char kPrefGrantedAPIs[] = "granted_permissions.api"; 106 const char kPrefGrantedAPIs[] = "granted_permissions.api";
107 const char kPrefGrantedExplicitHosts[] = "granted_permissions.explicit_host"; 107 const char kPrefGrantedExplicitHosts[] = "granted_permissions.explicit_host";
108 const char kPrefGrantedScriptableHosts[] = 108 const char kPrefGrantedScriptableHosts[] =
109 "granted_permissions.scriptable_host"; 109 "granted_permissions.scriptable_host";
110 110
111 // The preference names for the old granted permissions scheme. 111 // The preference names for the old granted permissions scheme.
112 const char kPrefOldGrantedFullAccess[] = "granted_permissions.full"; 112 const char kPrefOldGrantedFullAccess[] = "granted_permissions.full";
113 const char kPrefOldGrantedHosts[] = "granted_permissions.host"; 113 const char kPrefOldGrantedHosts[] = "granted_permissions.host";
114 const char kPrefOldGrantedAPIs[] = "granted_permissions.api"; 114 const char kPrefOldGrantedAPIs[] = "granted_permissions.api";
115 115
116 const char kPrefActiveAPIs[] = "active_permissions.api";
117 const char kPrefActiveExplicitHosts[] = "active_permissions.explicit_host";
118 const char kPrefActiveScriptableHosts[] =
119 "active_permissions.scriptable_host";
120
116 // A preference that indicates when an extension was installed. 121 // A preference that indicates when an extension was installed.
117 const char kPrefInstallTime[] = "install_time"; 122 const char kPrefInstallTime[] = "install_time";
118 123
119 // A preference that indicates whether the extension was installed from the 124 // A preference that indicates whether the extension was installed from the
120 // Chrome Web Store. 125 // Chrome Web Store.
121 const char kPrefFromWebStore[] = "from_webstore"; 126 const char kPrefFromWebStore[] = "from_webstore";
122 127
123 // A preference that contains any extension-controlled preferences. 128 // A preference that contains any extension-controlled preferences.
124 const char kPrefPreferences[] = "preferences"; 129 const char kPrefPreferences[] = "preferences";
125 130
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 } 739 }
735 740
736 // Set the scriptable host permissions. 741 // Set the scriptable host permissions.
737 if (!new_perms->scriptable_hosts().is_empty()) { 742 if (!new_perms->scriptable_hosts().is_empty()) {
738 SetExtensionPrefURLPatternSet(extension_id, 743 SetExtensionPrefURLPatternSet(extension_id,
739 kPrefGrantedScriptableHosts, 744 kPrefGrantedScriptableHosts,
740 new_perms->scriptable_hosts()); 745 new_perms->scriptable_hosts());
741 } 746 }
742 } 747 }
743 748
749 ExtensionPermissionSet* ExtensionPrefs::GetActivePermissions(
Mihai Parparita -not on Chrome 2011/07/20 22:03:43 This seems pretty similar to the granted permissio
jstritar 2011/07/22 19:21:55 I factored these out into {Set,Read}ExtensionPrefP
750 const std::string& extension_id) {
751 CHECK(Extension::IdIsValid(extension_id));
752
753 const DictionaryValue* ext = GetExtensionPref(extension_id);
754 if (!ext)
755 return NULL;
756
757 // Retrieve the API permissions.
758 ExtensionAPIPermissionSet apis;
759 const ListValue* api_values = NULL;
760 if (ReadExtensionPrefList(extension_id, kPrefActiveAPIs, &api_values)) {
761 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance();
762 for (size_t i = 0; i < api_values->GetSize(); ++i) {
763 std::string permission_name;
764 if (api_values->GetString(i, &permission_name)) {
765 ExtensionAPIPermission *permission = info->GetByName(permission_name);
766 if (permission)
767 apis.insert(permission->id());
768 }
769 }
770 }
771
772 // Retrieve the explicit host permissions.
773 URLPatternSet explicit_hosts;
774 ReadExtensionPrefURLPatternSet(
775 extension_id, kPrefActiveExplicitHosts,
776 &explicit_hosts, Extension::kValidHostPermissionSchemes);
777
778 // Retrieve the scriptable host permissions.
779 URLPatternSet scriptable_hosts;
780 ReadExtensionPrefURLPatternSet(
781 extension_id, kPrefActiveScriptableHosts,
782 &scriptable_hosts, UserScript::kValidUserScriptSchemes);
783
784 return new ExtensionPermissionSet(apis, explicit_hosts, scriptable_hosts);
785 }
786
787 void ExtensionPrefs::SetActivePermissions(
788 const std::string& extension_id,
789 const ExtensionPermissionSet* permissions) {
790 // Set the API permissions.
791 ListValue* api_values = new ListValue();
792 ExtensionAPIPermissionSet apis = permissions->apis();
793 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance();
794 for (ExtensionAPIPermissionSet::const_iterator i = apis.begin();
795 i != apis.end(); ++i) {
796 ExtensionAPIPermission* perm = info->GetByID(*i);
797 if (perm)
798 api_values->Append(Value::CreateStringValue(perm->name()));
799 }
800 UpdateExtensionPref(extension_id, kPrefActiveAPIs, api_values);
801
802 // Set the explicit host permissions.
803 if (!permissions->explicit_hosts().is_empty()) {
804 SetExtensionPrefURLPatternSet(extension_id,
805 kPrefActiveExplicitHosts,
806 permissions->explicit_hosts());
807 }
808
809 // Set the scriptable host permissions.
810 if (!permissions->scriptable_hosts().is_empty()) {
811 SetExtensionPrefURLPatternSet(extension_id,
812 kPrefActiveScriptableHosts,
813 permissions->scriptable_hosts());
814 }
815 }
816
744 bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) { 817 bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) {
745 return ReadExtensionPrefBoolean(extension_id, kPrefIncognitoEnabled); 818 return ReadExtensionPrefBoolean(extension_id, kPrefIncognitoEnabled);
746 } 819 }
747 820
748 void ExtensionPrefs::SetIsIncognitoEnabled(const std::string& extension_id, 821 void ExtensionPrefs::SetIsIncognitoEnabled(const std::string& extension_id,
749 bool enabled) { 822 bool enabled) {
750 UpdateExtensionPref(extension_id, kPrefIncognitoEnabled, 823 UpdateExtensionPref(extension_id, kPrefIncognitoEnabled,
751 Value::CreateBooleanValue(enabled)); 824 Value::CreateBooleanValue(enabled));
752 } 825 }
753 826
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after
1610 prefs->RegisterListPref(prefs::kExtensionInstallAllowList, 1683 prefs->RegisterListPref(prefs::kExtensionInstallAllowList,
1611 PrefService::UNSYNCABLE_PREF); 1684 PrefService::UNSYNCABLE_PREF);
1612 prefs->RegisterListPref(prefs::kExtensionInstallDenyList, 1685 prefs->RegisterListPref(prefs::kExtensionInstallDenyList,
1613 PrefService::UNSYNCABLE_PREF); 1686 PrefService::UNSYNCABLE_PREF);
1614 prefs->RegisterListPref(prefs::kExtensionInstallForceList, 1687 prefs->RegisterListPref(prefs::kExtensionInstallForceList,
1615 PrefService::UNSYNCABLE_PREF); 1688 PrefService::UNSYNCABLE_PREF);
1616 prefs->RegisterStringPref(kWebStoreLogin, 1689 prefs->RegisterStringPref(kWebStoreLogin,
1617 std::string() /* default_value */, 1690 std::string() /* default_value */,
1618 PrefService::UNSYNCABLE_PREF); 1691 PrefService::UNSYNCABLE_PREF);
1619 } 1692 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698