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/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/api/alarms/alarm_manager.h" | 10 #include "chrome/browser/extensions/api/alarms/alarm_manager.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 // permissions, for backwards compatibility reasons, and we can still prompt | 117 // permissions, for backwards compatibility reasons, and we can still prompt |
118 // the user to accept them once recognized. We store the active permission | 118 // the user to accept them once recognized. We store the active permission |
119 // permissions because they may differ from those defined in the manifest. | 119 // permissions because they may differ from those defined in the manifest. |
120 const char kPrefActivePermissions[] = "active_permissions"; | 120 const char kPrefActivePermissions[] = "active_permissions"; |
121 const char kPrefGrantedPermissions[] = "granted_permissions"; | 121 const char kPrefGrantedPermissions[] = "granted_permissions"; |
122 | 122 |
123 // The preference names for ExtensionPermissionSet values. | 123 // The preference names for ExtensionPermissionSet values. |
124 const char kPrefAPIs[] = "api"; | 124 const char kPrefAPIs[] = "api"; |
125 const char kPrefExplicitHosts[] = "explicit_host"; | 125 const char kPrefExplicitHosts[] = "explicit_host"; |
126 const char kPrefScriptableHosts[] = "scriptable_host"; | 126 const char kPrefScriptableHosts[] = "scriptable_host"; |
| 127 const char kPrefScopes[] = "scopes"; |
127 | 128 |
128 // The preference names for the old granted permissions scheme. | 129 // The preference names for the old granted permissions scheme. |
129 const char kPrefOldGrantedFullAccess[] = "granted_permissions.full"; | 130 const char kPrefOldGrantedFullAccess[] = "granted_permissions.full"; |
130 const char kPrefOldGrantedHosts[] = "granted_permissions.host"; | 131 const char kPrefOldGrantedHosts[] = "granted_permissions.host"; |
131 const char kPrefOldGrantedAPIs[] = "granted_permissions.api"; | 132 const char kPrefOldGrantedAPIs[] = "granted_permissions.api"; |
132 | 133 |
133 // A preference that indicates when an extension was installed. | 134 // A preference that indicates when an extension was installed. |
134 const char kPrefInstallTime[] = "install_time"; | 135 const char kPrefInstallTime[] = "install_time"; |
135 | 136 |
136 // A preference that indicates whether the extension was installed from the | 137 // A preference that indicates whether the extension was installed from the |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 ReadExtensionPrefURLPatternSet( | 489 ReadExtensionPrefURLPatternSet( |
489 extension_id, JoinPrefs(pref_key, kPrefExplicitHosts), | 490 extension_id, JoinPrefs(pref_key, kPrefExplicitHosts), |
490 &explicit_hosts, Extension::kValidHostPermissionSchemes); | 491 &explicit_hosts, Extension::kValidHostPermissionSchemes); |
491 | 492 |
492 // Retrieve the scriptable host permissions. | 493 // Retrieve the scriptable host permissions. |
493 URLPatternSet scriptable_hosts; | 494 URLPatternSet scriptable_hosts; |
494 ReadExtensionPrefURLPatternSet( | 495 ReadExtensionPrefURLPatternSet( |
495 extension_id, JoinPrefs(pref_key, kPrefScriptableHosts), | 496 extension_id, JoinPrefs(pref_key, kPrefScriptableHosts), |
496 &scriptable_hosts, UserScript::kValidUserScriptSchemes); | 497 &scriptable_hosts, UserScript::kValidUserScriptSchemes); |
497 | 498 |
498 return new ExtensionPermissionSet(apis, explicit_hosts, scriptable_hosts); | 499 // Retrieve the oauth2 scopes. |
| 500 ExtensionOAuth2Scopes scopes; |
| 501 const ListValue* scope_values = NULL; |
| 502 std::string scope_pref = JoinPrefs(pref_key, kPrefScopes); |
| 503 if (ReadExtensionPrefList(extension_id, scope_pref, &scope_values)) { |
| 504 for (size_t i = 0; i < scope_values->GetSize(); ++i) { |
| 505 std::string scope; |
| 506 if (scope_values->GetString(i, &scope)) |
| 507 scopes.insert(scope); |
| 508 } |
| 509 } |
| 510 |
| 511 return new ExtensionPermissionSet( |
| 512 apis, explicit_hosts, scriptable_hosts, scopes); |
499 } | 513 } |
500 | 514 |
501 void ExtensionPrefs::SetExtensionPrefPermissionSet( | 515 void ExtensionPrefs::SetExtensionPrefPermissionSet( |
502 const std::string& extension_id, | 516 const std::string& extension_id, |
503 const std::string& pref_key, | 517 const std::string& pref_key, |
504 const ExtensionPermissionSet* new_value) { | 518 const ExtensionPermissionSet* new_value) { |
505 // Set the API permissions. | 519 // Set the API permissions. |
506 ListValue* api_values = new ListValue(); | 520 ListValue* api_values = new ListValue(); |
507 ExtensionAPIPermissionSet apis = new_value->apis(); | 521 ExtensionAPIPermissionSet apis = new_value->apis(); |
508 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); | 522 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
(...skipping 12 matching lines...) Expand all Loading... |
521 JoinPrefs(pref_key, kPrefExplicitHosts), | 535 JoinPrefs(pref_key, kPrefExplicitHosts), |
522 new_value->explicit_hosts()); | 536 new_value->explicit_hosts()); |
523 } | 537 } |
524 | 538 |
525 // Set the scriptable host permissions. | 539 // Set the scriptable host permissions. |
526 if (!new_value->scriptable_hosts().is_empty()) { | 540 if (!new_value->scriptable_hosts().is_empty()) { |
527 SetExtensionPrefURLPatternSet(extension_id, | 541 SetExtensionPrefURLPatternSet(extension_id, |
528 JoinPrefs(pref_key, kPrefScriptableHosts), | 542 JoinPrefs(pref_key, kPrefScriptableHosts), |
529 new_value->scriptable_hosts()); | 543 new_value->scriptable_hosts()); |
530 } | 544 } |
| 545 |
| 546 // Set the oauth2 scopes. |
| 547 ExtensionOAuth2Scopes scopes = new_value->scopes(); |
| 548 if (!scopes.empty()) { |
| 549 ListValue* scope_values = new ListValue(); |
| 550 for (ExtensionOAuth2Scopes::iterator i = scopes.begin(); |
| 551 i != scopes.end(); ++i) { |
| 552 scope_values->Append(Value::CreateStringValue(*i)); |
| 553 } |
| 554 std::string scope_pref = JoinPrefs(pref_key, kPrefScopes); |
| 555 UpdateExtensionPref(extension_id, scope_pref, scope_values); |
| 556 } |
531 } | 557 } |
532 | 558 |
533 // static | 559 // static |
534 bool ExtensionPrefs::IsBlacklistBitSet(DictionaryValue* ext) { | 560 bool ExtensionPrefs::IsBlacklistBitSet(DictionaryValue* ext) { |
535 return ReadBooleanFromPref(ext, kPrefBlacklist); | 561 return ReadBooleanFromPref(ext, kPrefBlacklist); |
536 } | 562 } |
537 | 563 |
538 bool ExtensionPrefs::IsExtensionBlacklisted(const std::string& extension_id) { | 564 bool ExtensionPrefs::IsExtensionBlacklisted(const std::string& extension_id) { |
539 return ReadExtensionPrefBoolean(extension_id, kPrefBlacklist); | 565 return ReadExtensionPrefBoolean(extension_id, kPrefBlacklist); |
540 } | 566 } |
(...skipping 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1845 prefs->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, | 1871 prefs->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, |
1846 "0", // default value | 1872 "0", // default value |
1847 PrefService::UNSYNCABLE_PREF); | 1873 PrefService::UNSYNCABLE_PREF); |
1848 prefs->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, | 1874 prefs->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, |
1849 0, // default value | 1875 0, // default value |
1850 PrefService::UNSYNCABLE_PREF); | 1876 PrefService::UNSYNCABLE_PREF); |
1851 prefs->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, | 1877 prefs->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, |
1852 0, // default value | 1878 0, // default value |
1853 PrefService::UNSYNCABLE_PREF); | 1879 PrefService::UNSYNCABLE_PREF); |
1854 } | 1880 } |
OLD | NEW |