| OLD | NEW |
| 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 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 return true; | 423 return true; |
| 424 } | 424 } |
| 425 | 425 |
| 426 void ExtensionPrefs::SetExtensionPrefURLPatternSet( | 426 void ExtensionPrefs::SetExtensionPrefURLPatternSet( |
| 427 const std::string& extension_id, | 427 const std::string& extension_id, |
| 428 const std::string& pref_key, | 428 const std::string& pref_key, |
| 429 const URLPatternSet& new_value) { | 429 const URLPatternSet& new_value) { |
| 430 ListValue* value = new ListValue(); | 430 ListValue* value = new ListValue(); |
| 431 for (URLPatternSet::const_iterator i = new_value.begin(); | 431 for (URLPatternSet::const_iterator i = new_value.begin(); |
| 432 i != new_value.end(); ++i) | 432 i != new_value.end(); ++i) |
| 433 value->AppendIfNotPresent(Value::CreateStringValue(i->GetAsString())); | 433 value->AppendIfNotPresent(base::StringValue::New(i->GetAsString())); |
| 434 | 434 |
| 435 UpdateExtensionPref(extension_id, pref_key, value); | 435 UpdateExtensionPref(extension_id, pref_key, value); |
| 436 } | 436 } |
| 437 | 437 |
| 438 ExtensionPermissionSet* ExtensionPrefs::ReadExtensionPrefPermissionSet( | 438 ExtensionPermissionSet* ExtensionPrefs::ReadExtensionPrefPermissionSet( |
| 439 const std::string& extension_id, | 439 const std::string& extension_id, |
| 440 const std::string& pref_key) { | 440 const std::string& pref_key) { |
| 441 if (!GetExtensionPref(extension_id)) | 441 if (!GetExtensionPref(extension_id)) |
| 442 return NULL; | 442 return NULL; |
| 443 | 443 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 const ExtensionPermissionSet* new_value) { | 478 const ExtensionPermissionSet* new_value) { |
| 479 // Set the API permissions. | 479 // Set the API permissions. |
| 480 ListValue* api_values = new ListValue(); | 480 ListValue* api_values = new ListValue(); |
| 481 ExtensionAPIPermissionSet apis = new_value->apis(); | 481 ExtensionAPIPermissionSet apis = new_value->apis(); |
| 482 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); | 482 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
| 483 std::string api_pref = JoinPrefs(pref_key, kPrefAPIs); | 483 std::string api_pref = JoinPrefs(pref_key, kPrefAPIs); |
| 484 for (ExtensionAPIPermissionSet::const_iterator i = apis.begin(); | 484 for (ExtensionAPIPermissionSet::const_iterator i = apis.begin(); |
| 485 i != apis.end(); ++i) { | 485 i != apis.end(); ++i) { |
| 486 ExtensionAPIPermission* perm = info->GetByID(*i); | 486 ExtensionAPIPermission* perm = info->GetByID(*i); |
| 487 if (perm) | 487 if (perm) |
| 488 api_values->Append(Value::CreateStringValue(perm->name())); | 488 api_values->Append(base::StringValue::New(perm->name())); |
| 489 } | 489 } |
| 490 UpdateExtensionPref(extension_id, api_pref, api_values); | 490 UpdateExtensionPref(extension_id, api_pref, api_values); |
| 491 | 491 |
| 492 // Set the explicit host permissions. | 492 // Set the explicit host permissions. |
| 493 if (!new_value->explicit_hosts().is_empty()) { | 493 if (!new_value->explicit_hosts().is_empty()) { |
| 494 SetExtensionPrefURLPatternSet(extension_id, | 494 SetExtensionPrefURLPatternSet(extension_id, |
| 495 JoinPrefs(pref_key, kPrefExplicitHosts), | 495 JoinPrefs(pref_key, kPrefExplicitHosts), |
| 496 new_value->explicit_hosts()); | 496 new_value->explicit_hosts()); |
| 497 } | 497 } |
| 498 | 498 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 | 559 |
| 560 bool ExtensionPrefs::DidExtensionEscalatePermissions( | 560 bool ExtensionPrefs::DidExtensionEscalatePermissions( |
| 561 const std::string& extension_id) { | 561 const std::string& extension_id) { |
| 562 return ReadExtensionPrefBoolean(extension_id, | 562 return ReadExtensionPrefBoolean(extension_id, |
| 563 kExtensionDidEscalatePermissions); | 563 kExtensionDidEscalatePermissions); |
| 564 } | 564 } |
| 565 | 565 |
| 566 void ExtensionPrefs::SetDidExtensionEscalatePermissions( | 566 void ExtensionPrefs::SetDidExtensionEscalatePermissions( |
| 567 const Extension* extension, bool did_escalate) { | 567 const Extension* extension, bool did_escalate) { |
| 568 UpdateExtensionPref(extension->id(), kExtensionDidEscalatePermissions, | 568 UpdateExtensionPref(extension->id(), kExtensionDidEscalatePermissions, |
| 569 Value::CreateBooleanValue(did_escalate)); | 569 base::BooleanValue::New(did_escalate)); |
| 570 } | 570 } |
| 571 | 571 |
| 572 void ExtensionPrefs::UpdateBlacklist( | 572 void ExtensionPrefs::UpdateBlacklist( |
| 573 const std::set<std::string>& blacklist_set) { | 573 const std::set<std::string>& blacklist_set) { |
| 574 std::vector<std::string> remove_pref_ids; | 574 std::vector<std::string> remove_pref_ids; |
| 575 std::set<std::string> used_id_set; | 575 std::set<std::string> used_id_set; |
| 576 const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref); | 576 const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref); |
| 577 | 577 |
| 578 if (extensions) { | 578 if (extensions) { |
| 579 for (DictionaryValue::key_iterator extension_id = extensions->begin_keys(); | 579 for (DictionaryValue::key_iterator extension_id = extensions->begin_keys(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 606 // Keep the record if this extension is already processed. | 606 // Keep the record if this extension is already processed. |
| 607 used_id_set.insert(id); | 607 used_id_set.insert(id); |
| 608 } | 608 } |
| 609 } | 609 } |
| 610 } | 610 } |
| 611 | 611 |
| 612 // Iterate the leftovers to set blacklist in pref | 612 // Iterate the leftovers to set blacklist in pref |
| 613 std::set<std::string>::const_iterator set_itr = blacklist_set.begin(); | 613 std::set<std::string>::const_iterator set_itr = blacklist_set.begin(); |
| 614 for (; set_itr != blacklist_set.end(); ++set_itr) { | 614 for (; set_itr != blacklist_set.end(); ++set_itr) { |
| 615 if (used_id_set.find(*set_itr) == used_id_set.end()) { | 615 if (used_id_set.find(*set_itr) == used_id_set.end()) { |
| 616 UpdateExtensionPref(*set_itr, kPrefBlacklist, | 616 UpdateExtensionPref(*set_itr, kPrefBlacklist, base::TrueValue()); |
| 617 Value::CreateBooleanValue(true)); | |
| 618 } | 617 } |
| 619 } | 618 } |
| 620 for (unsigned int i = 0; i < remove_pref_ids.size(); ++i) { | 619 for (unsigned int i = 0; i < remove_pref_ids.size(); ++i) { |
| 621 DeleteExtensionPrefs(remove_pref_ids[i]); | 620 DeleteExtensionPrefs(remove_pref_ids[i]); |
| 622 } | 621 } |
| 623 } | 622 } |
| 624 | 623 |
| 625 namespace { | 624 namespace { |
| 626 | 625 |
| 627 // Serializes |time| as a string value mapped to |key| in |dictionary|. | 626 // Serializes |time| as a string value mapped to |key| in |dictionary|. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 687 const DictionaryValue* dictionary = GetExtensionPref(extension_id); | 686 const DictionaryValue* dictionary = GetExtensionPref(extension_id); |
| 688 bool result = false; | 687 bool result = false; |
| 689 if (dictionary && dictionary->GetBoolean(kActiveBit, &result)) | 688 if (dictionary && dictionary->GetBoolean(kActiveBit, &result)) |
| 690 return result; | 689 return result; |
| 691 return false; | 690 return false; |
| 692 } | 691 } |
| 693 | 692 |
| 694 void ExtensionPrefs::SetActiveBit(const std::string& extension_id, | 693 void ExtensionPrefs::SetActiveBit(const std::string& extension_id, |
| 695 bool active) { | 694 bool active) { |
| 696 UpdateExtensionPref(extension_id, kActiveBit, | 695 UpdateExtensionPref(extension_id, kActiveBit, |
| 697 Value::CreateBooleanValue(active)); | 696 base::BooleanValue::New(active)); |
| 698 } | 697 } |
| 699 | 698 |
| 700 void ExtensionPrefs::MigratePermissions(const ExtensionIdSet& extension_ids) { | 699 void ExtensionPrefs::MigratePermissions(const ExtensionIdSet& extension_ids) { |
| 701 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); | 700 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
| 702 for (ExtensionIdSet::const_iterator ext_id = extension_ids.begin(); | 701 for (ExtensionIdSet::const_iterator ext_id = extension_ids.begin(); |
| 703 ext_id != extension_ids.end(); ++ext_id) { | 702 ext_id != extension_ids.end(); ++ext_id) { |
| 704 | 703 |
| 705 // An extension's granted permissions need to be migrated if the | 704 // An extension's granted permissions need to be migrated if the |
| 706 // full_access bit is present. This bit was always present in the previous | 705 // full_access bit is present. This bit was always present in the previous |
| 707 // scheme and is never present now. | 706 // scheme and is never present now. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 721 | 720 |
| 722 std::string granted_apis = | 721 std::string granted_apis = |
| 723 JoinPrefs(kPrefGrantedPermissions, kPrefAPIs); | 722 JoinPrefs(kPrefGrantedPermissions, kPrefAPIs); |
| 724 if (ext->GetList(kPrefOldGrantedAPIs, &apis)) | 723 if (ext->GetList(kPrefOldGrantedAPIs, &apis)) |
| 725 new_apis = apis->DeepCopy(); | 724 new_apis = apis->DeepCopy(); |
| 726 else | 725 else |
| 727 new_apis = new ListValue(); | 726 new_apis = new ListValue(); |
| 728 | 727 |
| 729 std::string plugin_name = info->GetByID( | 728 std::string plugin_name = info->GetByID( |
| 730 ExtensionAPIPermission::kPlugin)->name(); | 729 ExtensionAPIPermission::kPlugin)->name(); |
| 731 new_apis->Append(Value::CreateStringValue(plugin_name)); | 730 new_apis->Append(base::StringValue::New(plugin_name)); |
| 732 UpdateExtensionPref(*ext_id, granted_apis, new_apis); | 731 UpdateExtensionPref(*ext_id, granted_apis, new_apis); |
| 733 } | 732 } |
| 734 | 733 |
| 735 // The granted permissions originally only held the effective hosts, | 734 // The granted permissions originally only held the effective hosts, |
| 736 // which are a combination of host and user script host permissions. | 735 // which are a combination of host and user script host permissions. |
| 737 // We now maintain these lists separately. For migration purposes, it | 736 // We now maintain these lists separately. For migration purposes, it |
| 738 // does not matter how we treat the old effective hosts as long as the | 737 // does not matter how we treat the old effective hosts as long as the |
| 739 // new effective hosts will be the same, so we move them to explicit | 738 // new effective hosts will be the same, so we move them to explicit |
| 740 // host permissions. | 739 // host permissions. |
| 741 ListValue* hosts; | 740 ListValue* hosts; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 extension_id, kPrefActivePermissions, permissions); | 787 extension_id, kPrefActivePermissions, permissions); |
| 789 } | 788 } |
| 790 | 789 |
| 791 bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) { | 790 bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) { |
| 792 return ReadExtensionPrefBoolean(extension_id, kPrefIncognitoEnabled); | 791 return ReadExtensionPrefBoolean(extension_id, kPrefIncognitoEnabled); |
| 793 } | 792 } |
| 794 | 793 |
| 795 void ExtensionPrefs::SetIsIncognitoEnabled(const std::string& extension_id, | 794 void ExtensionPrefs::SetIsIncognitoEnabled(const std::string& extension_id, |
| 796 bool enabled) { | 795 bool enabled) { |
| 797 UpdateExtensionPref(extension_id, kPrefIncognitoEnabled, | 796 UpdateExtensionPref(extension_id, kPrefIncognitoEnabled, |
| 798 Value::CreateBooleanValue(enabled)); | 797 base::BooleanValue::New(enabled)); |
| 799 } | 798 } |
| 800 | 799 |
| 801 bool ExtensionPrefs::AllowFileAccess(const std::string& extension_id) { | 800 bool ExtensionPrefs::AllowFileAccess(const std::string& extension_id) { |
| 802 return ReadExtensionPrefBoolean(extension_id, kPrefAllowFileAccess); | 801 return ReadExtensionPrefBoolean(extension_id, kPrefAllowFileAccess); |
| 803 } | 802 } |
| 804 | 803 |
| 805 void ExtensionPrefs::SetAllowFileAccess(const std::string& extension_id, | 804 void ExtensionPrefs::SetAllowFileAccess(const std::string& extension_id, |
| 806 bool allow) { | 805 bool allow) { |
| 807 UpdateExtensionPref(extension_id, kPrefAllowFileAccess, | 806 UpdateExtensionPref(extension_id, kPrefAllowFileAccess, |
| 808 Value::CreateBooleanValue(allow)); | 807 base::BooleanValue::New(allow)); |
| 809 } | 808 } |
| 810 | 809 |
| 811 bool ExtensionPrefs::HasAllowFileAccessSetting( | 810 bool ExtensionPrefs::HasAllowFileAccessSetting( |
| 812 const std::string& extension_id) const { | 811 const std::string& extension_id) const { |
| 813 const DictionaryValue* ext = GetExtensionPref(extension_id); | 812 const DictionaryValue* ext = GetExtensionPref(extension_id); |
| 814 return ext && ext->HasKey(kPrefAllowFileAccess); | 813 return ext && ext->HasKey(kPrefAllowFileAccess); |
| 815 } | 814 } |
| 816 | 815 |
| 817 ExtensionPrefs::LaunchType ExtensionPrefs::GetLaunchType( | 816 ExtensionPrefs::LaunchType ExtensionPrefs::GetLaunchType( |
| 818 const std::string& extension_id, | 817 const std::string& extension_id, |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 886 DLOG(FATAL) << "Failed to set a launch container."; | 885 DLOG(FATAL) << "Failed to set a launch container."; |
| 887 result = extension_misc::LAUNCH_TAB; | 886 result = extension_misc::LAUNCH_TAB; |
| 888 } | 887 } |
| 889 | 888 |
| 890 return result; | 889 return result; |
| 891 } | 890 } |
| 892 | 891 |
| 893 void ExtensionPrefs::SetLaunchType(const std::string& extension_id, | 892 void ExtensionPrefs::SetLaunchType(const std::string& extension_id, |
| 894 LaunchType launch_type) { | 893 LaunchType launch_type) { |
| 895 UpdateExtensionPref(extension_id, kPrefLaunchType, | 894 UpdateExtensionPref(extension_id, kPrefLaunchType, |
| 896 Value::CreateIntegerValue(static_cast<int>(launch_type))); | 895 base::NumberValue::New(static_cast<int>(launch_type))); |
| 897 } | 896 } |
| 898 | 897 |
| 899 bool ExtensionPrefs::DoesExtensionHaveState( | 898 bool ExtensionPrefs::DoesExtensionHaveState( |
| 900 const std::string& id, Extension::State check_state) const { | 899 const std::string& id, Extension::State check_state) const { |
| 901 const DictionaryValue* extension = GetExtensionPref(id); | 900 const DictionaryValue* extension = GetExtensionPref(id); |
| 902 int state = -1; | 901 int state = -1; |
| 903 if (!extension || !extension->GetInteger(kPrefState, &state)) | 902 if (!extension || !extension->GetInteger(kPrefState, &state)) |
| 904 return false; | 903 return false; |
| 905 | 904 |
| 906 if (state < 0 || state >= Extension::NUM_STATES) { | 905 if (state < 0 || state >= Extension::NUM_STATES) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 934 return extension_ids; | 933 return extension_ids; |
| 935 } | 934 } |
| 936 | 935 |
| 937 void ExtensionPrefs::SetToolbarOrder( | 936 void ExtensionPrefs::SetToolbarOrder( |
| 938 const std::vector<std::string>& extension_ids) { | 937 const std::vector<std::string>& extension_ids) { |
| 939 ListPrefUpdate update(prefs_, kExtensionToolbar); | 938 ListPrefUpdate update(prefs_, kExtensionToolbar); |
| 940 ListValue* toolbar_order = update.Get(); | 939 ListValue* toolbar_order = update.Get(); |
| 941 toolbar_order->Clear(); | 940 toolbar_order->Clear(); |
| 942 for (std::vector<std::string>::const_iterator iter = extension_ids.begin(); | 941 for (std::vector<std::string>::const_iterator iter = extension_ids.begin(); |
| 943 iter != extension_ids.end(); ++iter) { | 942 iter != extension_ids.end(); ++iter) { |
| 944 toolbar_order->Append(new StringValue(*iter)); | 943 toolbar_order->Append(base::StringValue::New(*iter)); |
| 945 } | 944 } |
| 946 SavePrefs(); | 945 SavePrefs(); |
| 947 } | 946 } |
| 948 | 947 |
| 949 void ExtensionPrefs::OnExtensionInstalled( | 948 void ExtensionPrefs::OnExtensionInstalled( |
| 950 const Extension* extension, | 949 const Extension* extension, |
| 951 Extension::State initial_state, | 950 Extension::State initial_state, |
| 952 bool from_webstore) { | 951 bool from_webstore) { |
| 953 const std::string& id = extension->id(); | 952 const std::string& id = extension->id(); |
| 954 CHECK(Extension::IdIsValid(id)); | 953 CHECK(Extension::IdIsValid(id)); |
| 955 ScopedExtensionPrefUpdate update(prefs_, id); | 954 ScopedExtensionPrefUpdate update(prefs_, id); |
| 956 DictionaryValue* extension_dict = update.Get(); | 955 DictionaryValue* extension_dict = update.Get(); |
| 957 const base::Time install_time = GetCurrentTime(); | 956 const base::Time install_time = GetCurrentTime(); |
| 958 extension_dict->Set(kPrefState, Value::CreateIntegerValue(initial_state)); | 957 extension_dict->Set(kPrefState, base::NumberValue::New(initial_state)); |
| 959 extension_dict->Set(kPrefLocation, | 958 extension_dict->Set(kPrefLocation, |
| 960 Value::CreateIntegerValue(extension->location())); | 959 base::NumberValue::New(extension->location())); |
| 961 extension_dict->Set(kPrefFromWebStore, | 960 extension_dict->Set(kPrefFromWebStore, |
| 962 Value::CreateBooleanValue(from_webstore)); | 961 base::BooleanValue::New(from_webstore)); |
| 963 extension_dict->Set(kPrefFromBookmark, | 962 extension_dict->Set(kPrefFromBookmark, |
| 964 Value::CreateBooleanValue(extension->from_bookmark())); | 963 base::BooleanValue::New(extension->from_bookmark())); |
| 965 extension_dict->Set(kPrefInstallTime, | 964 extension_dict->Set(kPrefInstallTime, |
| 966 Value::CreateStringValue( | 965 base::StringValue::New( |
| 967 base::Int64ToString(install_time.ToInternalValue()))); | 966 base::Int64ToString(install_time.ToInternalValue()))); |
| 968 extension_dict->Set(kPrefPreferences, new DictionaryValue()); | 967 extension_dict->Set(kPrefPreferences, new DictionaryValue()); |
| 969 extension_dict->Set(kPrefIncognitoPreferences, new DictionaryValue()); | 968 extension_dict->Set(kPrefIncognitoPreferences, new DictionaryValue()); |
| 970 extension_dict->Set(kPrefContentSettings, new ListValue()); | 969 extension_dict->Set(kPrefContentSettings, new ListValue()); |
| 971 extension_dict->Set(kPrefIncognitoContentSettings, new ListValue()); | 970 extension_dict->Set(kPrefIncognitoContentSettings, new ListValue()); |
| 972 | 971 |
| 973 FilePath::StringType path = MakePathRelative(install_directory_, | 972 FilePath::StringType path = MakePathRelative(install_directory_, |
| 974 extension->path()); | 973 extension->path()); |
| 975 extension_dict->Set(kPrefPath, Value::CreateStringValue(path)); | 974 extension_dict->Set(kPrefPath, base::StringValue::New(path)); |
| 976 // We store prefs about LOAD extensions, but don't cache their manifest | 975 // We store prefs about LOAD extensions, but don't cache their manifest |
| 977 // since it may change on disk. | 976 // since it may change on disk. |
| 978 if (extension->location() != Extension::LOAD) { | 977 if (extension->location() != Extension::LOAD) { |
| 979 extension_dict->Set(kPrefManifest, | 978 extension_dict->Set(kPrefManifest, |
| 980 extension->manifest_value()->DeepCopy()); | 979 extension->manifest_value()->DeepCopy()); |
| 981 } | 980 } |
| 982 extension_dict->Set(kPrefAppLaunchIndex, | 981 extension_dict->Set(kPrefAppLaunchIndex, |
| 983 Value::CreateIntegerValue(GetNextAppLaunchIndex())); | 982 base::NumberValue::New(GetNextAppLaunchIndex())); |
| 984 extension_pref_value_map_->RegisterExtension( | 983 extension_pref_value_map_->RegisterExtension( |
| 985 id, install_time, initial_state == Extension::ENABLED); | 984 id, install_time, initial_state == Extension::ENABLED); |
| 986 content_settings_store_->RegisterExtension( | 985 content_settings_store_->RegisterExtension( |
| 987 id, install_time, initial_state == Extension::ENABLED); | 986 id, install_time, initial_state == Extension::ENABLED); |
| 988 } | 987 } |
| 989 | 988 |
| 990 void ExtensionPrefs::OnExtensionUninstalled(const std::string& extension_id, | 989 void ExtensionPrefs::OnExtensionUninstalled(const std::string& extension_id, |
| 991 const Extension::Location& location, | 990 const Extension::Location& location, |
| 992 bool external_uninstall) { | 991 bool external_uninstall) { |
| 993 // For external extensions, we save a preference reminding ourself not to try | 992 // For external extensions, we save a preference reminding ourself not to try |
| 994 // and install the extension anymore (except when |external_uninstall| is | 993 // and install the extension anymore (except when |external_uninstall| is |
| 995 // true, which signifies that the registry key was deleted or the pref file | 994 // true, which signifies that the registry key was deleted or the pref file |
| 996 // no longer lists the extension). | 995 // no longer lists the extension). |
| 997 if (!external_uninstall && Extension::IsExternalLocation(location)) { | 996 if (!external_uninstall && Extension::IsExternalLocation(location)) { |
| 998 UpdateExtensionPref(extension_id, kPrefState, | 997 UpdateExtensionPref(extension_id, kPrefState, |
| 999 Value::CreateIntegerValue( | 998 base::NumberValue::New( |
| 1000 Extension::EXTERNAL_EXTENSION_UNINSTALLED)); | 999 Extension::EXTERNAL_EXTENSION_UNINSTALLED)); |
| 1001 extension_pref_value_map_->SetExtensionState(extension_id, false); | 1000 extension_pref_value_map_->SetExtensionState(extension_id, false); |
| 1002 content_settings_store_->SetExtensionState(extension_id, false); | 1001 content_settings_store_->SetExtensionState(extension_id, false); |
| 1003 } else { | 1002 } else { |
| 1004 DeleteExtensionPrefs(extension_id); | 1003 DeleteExtensionPrefs(extension_id); |
| 1005 } | 1004 } |
| 1006 } | 1005 } |
| 1007 | 1006 |
| 1008 void ExtensionPrefs::SetExtensionState(const std::string& extension_id, | 1007 void ExtensionPrefs::SetExtensionState(const std::string& extension_id, |
| 1009 Extension::State state) { | 1008 Extension::State state) { |
| 1010 UpdateExtensionPref(extension_id, kPrefState, | 1009 UpdateExtensionPref(extension_id, kPrefState, |
| 1011 Value::CreateIntegerValue(state)); | 1010 base::NumberValue::New(state)); |
| 1012 bool enabled = (state == Extension::ENABLED); | 1011 bool enabled = (state == Extension::ENABLED); |
| 1013 extension_pref_value_map_->SetExtensionState(extension_id, enabled); | 1012 extension_pref_value_map_->SetExtensionState(extension_id, enabled); |
| 1014 content_settings_store_->SetExtensionState(extension_id, enabled); | 1013 content_settings_store_->SetExtensionState(extension_id, enabled); |
| 1015 } | 1014 } |
| 1016 | 1015 |
| 1017 bool ExtensionPrefs::GetBrowserActionVisibility(const Extension* extension) { | 1016 bool ExtensionPrefs::GetBrowserActionVisibility(const Extension* extension) { |
| 1018 const DictionaryValue* extension_prefs = GetExtensionPref(extension->id()); | 1017 const DictionaryValue* extension_prefs = GetExtensionPref(extension->id()); |
| 1019 if (!extension_prefs) | 1018 if (!extension_prefs) |
| 1020 return true; | 1019 return true; |
| 1021 bool visible = false; | 1020 bool visible = false; |
| 1022 if (!extension_prefs->GetBoolean(kBrowserActionVisible, &visible) || visible) | 1021 if (!extension_prefs->GetBoolean(kBrowserActionVisible, &visible) || visible) |
| 1023 return true; | 1022 return true; |
| 1024 | 1023 |
| 1025 return false; | 1024 return false; |
| 1026 } | 1025 } |
| 1027 | 1026 |
| 1028 void ExtensionPrefs::SetBrowserActionVisibility(const Extension* extension, | 1027 void ExtensionPrefs::SetBrowserActionVisibility(const Extension* extension, |
| 1029 bool visible) { | 1028 bool visible) { |
| 1030 if (GetBrowserActionVisibility(extension) == visible) | 1029 if (GetBrowserActionVisibility(extension) == visible) |
| 1031 return; | 1030 return; |
| 1032 | 1031 |
| 1033 UpdateExtensionPref(extension->id(), kBrowserActionVisible, | 1032 UpdateExtensionPref(extension->id(), kBrowserActionVisible, |
| 1034 Value::CreateBooleanValue(visible)); | 1033 base::BooleanValue::New(visible)); |
| 1035 NotificationService::current()->Notify( | 1034 NotificationService::current()->Notify( |
| 1036 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, | 1035 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, |
| 1037 Source<ExtensionPrefs>(this), | 1036 Source<ExtensionPrefs>(this), |
| 1038 Details<const Extension>(extension)); | 1037 Details<const Extension>(extension)); |
| 1039 } | 1038 } |
| 1040 | 1039 |
| 1041 std::string ExtensionPrefs::GetVersionString(const std::string& extension_id) { | 1040 std::string ExtensionPrefs::GetVersionString(const std::string& extension_id) { |
| 1042 const DictionaryValue* extension = GetExtensionPref(extension_id); | 1041 const DictionaryValue* extension = GetExtensionPref(extension_id); |
| 1043 if (!extension) | 1042 if (!extension) |
| 1044 return std::string(); | 1043 return std::string(); |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1314 if (ReadExtensionPrefInteger(extension_id, kPrefAppLaunchIndex, &value)) | 1313 if (ReadExtensionPrefInteger(extension_id, kPrefAppLaunchIndex, &value)) |
| 1315 return value; | 1314 return value; |
| 1316 | 1315 |
| 1317 return -1; | 1316 return -1; |
| 1318 } | 1317 } |
| 1319 | 1318 |
| 1320 void ExtensionPrefs::SetAppLaunchIndex(const std::string& extension_id, | 1319 void ExtensionPrefs::SetAppLaunchIndex(const std::string& extension_id, |
| 1321 int index) { | 1320 int index) { |
| 1322 DCHECK_GE(index, 0); | 1321 DCHECK_GE(index, 0); |
| 1323 UpdateExtensionPref(extension_id, kPrefAppLaunchIndex, | 1322 UpdateExtensionPref(extension_id, kPrefAppLaunchIndex, |
| 1324 Value::CreateIntegerValue(index)); | 1323 base::NumberValue::New(index)); |
| 1325 } | 1324 } |
| 1326 | 1325 |
| 1327 int ExtensionPrefs::GetNextAppLaunchIndex() { | 1326 int ExtensionPrefs::GetNextAppLaunchIndex() { |
| 1328 const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref); | 1327 const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref); |
| 1329 if (!extensions) | 1328 if (!extensions) |
| 1330 return 0; | 1329 return 0; |
| 1331 | 1330 |
| 1332 int max_value = -1; | 1331 int max_value = -1; |
| 1333 for (DictionaryValue::key_iterator extension_id = extensions->begin_keys(); | 1332 for (DictionaryValue::key_iterator extension_id = extensions->begin_keys(); |
| 1334 extension_id != extensions->end_keys(); ++extension_id) { | 1333 extension_id != extensions->end_keys(); ++extension_id) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1352 | 1351 |
| 1353 int ExtensionPrefs::GetPageIndex(const std::string& extension_id) { | 1352 int ExtensionPrefs::GetPageIndex(const std::string& extension_id) { |
| 1354 int value = -1; | 1353 int value = -1; |
| 1355 ReadExtensionPrefInteger(extension_id, kPrefPageIndex, &value); | 1354 ReadExtensionPrefInteger(extension_id, kPrefPageIndex, &value); |
| 1356 return value; | 1355 return value; |
| 1357 } | 1356 } |
| 1358 | 1357 |
| 1359 void ExtensionPrefs::SetPageIndex(const std::string& extension_id, int index) { | 1358 void ExtensionPrefs::SetPageIndex(const std::string& extension_id, int index) { |
| 1360 CHECK_GE(index, 0); | 1359 CHECK_GE(index, 0); |
| 1361 UpdateExtensionPref(extension_id, kPrefPageIndex, | 1360 UpdateExtensionPref(extension_id, kPrefPageIndex, |
| 1362 Value::CreateIntegerValue(index)); | 1361 base::NumberValue::New(index)); |
| 1363 } | 1362 } |
| 1364 | 1363 |
| 1365 bool ExtensionPrefs::WasAppDraggedByUser(const std::string& extension_id) { | 1364 bool ExtensionPrefs::WasAppDraggedByUser(const std::string& extension_id) { |
| 1366 return ReadExtensionPrefBoolean(extension_id, kPrefUserDraggedApp); | 1365 return ReadExtensionPrefBoolean(extension_id, kPrefUserDraggedApp); |
| 1367 } | 1366 } |
| 1368 | 1367 |
| 1369 void ExtensionPrefs::SetAppDraggedByUser(const std::string& extension_id) { | 1368 void ExtensionPrefs::SetAppDraggedByUser(const std::string& extension_id) { |
| 1370 UpdateExtensionPref(extension_id, kPrefUserDraggedApp, | 1369 UpdateExtensionPref(extension_id, kPrefUserDraggedApp, base::TrueValue()); |
| 1371 Value::CreateBooleanValue(true)); | |
| 1372 } | 1370 } |
| 1373 | 1371 |
| 1374 void ExtensionPrefs::SetUpdateUrlData(const std::string& extension_id, | 1372 void ExtensionPrefs::SetUpdateUrlData(const std::string& extension_id, |
| 1375 const std::string& data) { | 1373 const std::string& data) { |
| 1376 UpdateExtensionPref(extension_id, kUpdateUrlData, | 1374 UpdateExtensionPref(extension_id, kUpdateUrlData, |
| 1377 Value::CreateStringValue(data)); | 1375 base::StringValue::New(data)); |
| 1378 } | 1376 } |
| 1379 | 1377 |
| 1380 std::string ExtensionPrefs::GetUpdateUrlData(const std::string& extension_id) { | 1378 std::string ExtensionPrefs::GetUpdateUrlData(const std::string& extension_id) { |
| 1381 const DictionaryValue* dictionary = GetExtensionPref(extension_id); | 1379 const DictionaryValue* dictionary = GetExtensionPref(extension_id); |
| 1382 if (!dictionary) | 1380 if (!dictionary) |
| 1383 return std::string(); | 1381 return std::string(); |
| 1384 | 1382 |
| 1385 std::string data; | 1383 std::string data; |
| 1386 dictionary->GetString(kUpdateUrlData, &data); | 1384 dictionary->GetString(kUpdateUrlData, &data); |
| 1387 return data; | 1385 return data; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1456 // Fix old entries that did not get an installation time entry when they | 1454 // Fix old entries that did not get an installation time entry when they |
| 1457 // were installed or don't have a preferences field. | 1455 // were installed or don't have a preferences field. |
| 1458 for (ExtensionIdSet::const_iterator ext_id = extension_ids.begin(); | 1456 for (ExtensionIdSet::const_iterator ext_id = extension_ids.begin(); |
| 1459 ext_id != extension_ids.end(); ++ext_id) { | 1457 ext_id != extension_ids.end(); ++ext_id) { |
| 1460 if (GetInstallTime(*ext_id) == base::Time()) { | 1458 if (GetInstallTime(*ext_id) == base::Time()) { |
| 1461 LOG(INFO) << "Could not parse installation time of extension " | 1459 LOG(INFO) << "Could not parse installation time of extension " |
| 1462 << *ext_id << ". It was probably installed before setting " | 1460 << *ext_id << ". It was probably installed before setting " |
| 1463 << kPrefInstallTime << " was introduced. Updating " | 1461 << kPrefInstallTime << " was introduced. Updating " |
| 1464 << kPrefInstallTime << " to the current time."; | 1462 << kPrefInstallTime << " to the current time."; |
| 1465 const base::Time install_time = GetCurrentTime(); | 1463 const base::Time install_time = GetCurrentTime(); |
| 1466 UpdateExtensionPref(*ext_id, kPrefInstallTime, Value::CreateStringValue( | 1464 UpdateExtensionPref(*ext_id, kPrefInstallTime, base::StringValue::New( |
| 1467 base::Int64ToString(install_time.ToInternalValue()))); | 1465 base::Int64ToString(install_time.ToInternalValue()))); |
| 1468 } | 1466 } |
| 1469 } | 1467 } |
| 1470 } | 1468 } |
| 1471 | 1469 |
| 1472 const DictionaryValue* ExtensionPrefs::GetExtensionControlledPrefs( | 1470 const DictionaryValue* ExtensionPrefs::GetExtensionControlledPrefs( |
| 1473 const std::string& extension_id, | 1471 const std::string& extension_id, |
| 1474 bool incognito) const { | 1472 bool incognito) const { |
| 1475 std::string key = extension_id + std::string(".") + | 1473 std::string key = extension_id + std::string(".") + |
| 1476 (incognito ? kPrefIncognitoPreferences : kPrefPreferences); | 1474 (incognito ? kPrefIncognitoPreferences : kPrefPreferences); |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1669 prefs->RegisterListPref(prefs::kExtensionInstallAllowList, | 1667 prefs->RegisterListPref(prefs::kExtensionInstallAllowList, |
| 1670 PrefService::UNSYNCABLE_PREF); | 1668 PrefService::UNSYNCABLE_PREF); |
| 1671 prefs->RegisterListPref(prefs::kExtensionInstallDenyList, | 1669 prefs->RegisterListPref(prefs::kExtensionInstallDenyList, |
| 1672 PrefService::UNSYNCABLE_PREF); | 1670 PrefService::UNSYNCABLE_PREF); |
| 1673 prefs->RegisterListPref(prefs::kExtensionInstallForceList, | 1671 prefs->RegisterListPref(prefs::kExtensionInstallForceList, |
| 1674 PrefService::UNSYNCABLE_PREF); | 1672 PrefService::UNSYNCABLE_PREF); |
| 1675 prefs->RegisterStringPref(kWebStoreLogin, | 1673 prefs->RegisterStringPref(kWebStoreLogin, |
| 1676 std::string() /* default_value */, | 1674 std::string() /* default_value */, |
| 1677 PrefService::UNSYNCABLE_PREF); | 1675 PrefService::UNSYNCABLE_PREF); |
| 1678 } | 1676 } |
| OLD | NEW |