| 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/prefs/pref_notifier.h" | 7 #include "base/prefs/pref_notifier.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 APIPermissionSet apis = new_value->apis(); | 574 APIPermissionSet apis = new_value->apis(); |
| 575 std::string api_pref = JoinPrefs(pref_key, kPrefAPIs); | 575 std::string api_pref = JoinPrefs(pref_key, kPrefAPIs); |
| 576 for (APIPermissionSet::const_iterator i = apis.begin(); | 576 for (APIPermissionSet::const_iterator i = apis.begin(); |
| 577 i != apis.end(); ++i) { | 577 i != apis.end(); ++i) { |
| 578 scoped_ptr<Value> detail(i->ToValue()); | 578 scoped_ptr<Value> detail(i->ToValue()); |
| 579 if (detail) { | 579 if (detail) { |
| 580 DictionaryValue* tmp = new DictionaryValue(); | 580 DictionaryValue* tmp = new DictionaryValue(); |
| 581 tmp->Set(i->name(), detail.release()); | 581 tmp->Set(i->name(), detail.release()); |
| 582 api_values->Append(tmp); | 582 api_values->Append(tmp); |
| 583 } else { | 583 } else { |
| 584 api_values->Append(Value::CreateStringValue(i->name())); | 584 api_values->Append(new base::StringValue(i->name())); |
| 585 } | 585 } |
| 586 } | 586 } |
| 587 UpdateExtensionPref(extension_id, api_pref, api_values); | 587 UpdateExtensionPref(extension_id, api_pref, api_values); |
| 588 | 588 |
| 589 // Set the explicit host permissions. | 589 // Set the explicit host permissions. |
| 590 if (!new_value->explicit_hosts().is_empty()) { | 590 if (!new_value->explicit_hosts().is_empty()) { |
| 591 SetExtensionPrefURLPatternSet(extension_id, | 591 SetExtensionPrefURLPatternSet(extension_id, |
| 592 JoinPrefs(pref_key, kPrefExplicitHosts), | 592 JoinPrefs(pref_key, kPrefExplicitHosts), |
| 593 new_value->explicit_hosts()); | 593 new_value->explicit_hosts()); |
| 594 } | 594 } |
| 595 | 595 |
| 596 // Set the scriptable host permissions. | 596 // Set the scriptable host permissions. |
| 597 if (!new_value->scriptable_hosts().is_empty()) { | 597 if (!new_value->scriptable_hosts().is_empty()) { |
| 598 SetExtensionPrefURLPatternSet(extension_id, | 598 SetExtensionPrefURLPatternSet(extension_id, |
| 599 JoinPrefs(pref_key, kPrefScriptableHosts), | 599 JoinPrefs(pref_key, kPrefScriptableHosts), |
| 600 new_value->scriptable_hosts()); | 600 new_value->scriptable_hosts()); |
| 601 } | 601 } |
| 602 } | 602 } |
| 603 | 603 |
| 604 int ExtensionPrefs::IncrementAcknowledgePromptCount( | 604 int ExtensionPrefs::IncrementAcknowledgePromptCount( |
| 605 const std::string& extension_id) { | 605 const std::string& extension_id) { |
| 606 int count = 0; | 606 int count = 0; |
| 607 ReadPrefAsInteger(extension_id, kPrefAcknowledgePromptCount, &count); | 607 ReadPrefAsInteger(extension_id, kPrefAcknowledgePromptCount, &count); |
| 608 ++count; | 608 ++count; |
| 609 UpdateExtensionPref(extension_id, kPrefAcknowledgePromptCount, | 609 UpdateExtensionPref(extension_id, kPrefAcknowledgePromptCount, |
| 610 Value::CreateIntegerValue(count)); | 610 new base::FundamentalValue(count)); |
| 611 return count; | 611 return count; |
| 612 } | 612 } |
| 613 | 613 |
| 614 bool ExtensionPrefs::IsExternalExtensionAcknowledged( | 614 bool ExtensionPrefs::IsExternalExtensionAcknowledged( |
| 615 const std::string& extension_id) { | 615 const std::string& extension_id) { |
| 616 return ReadPrefAsBooleanAndReturn(extension_id, kPrefExternalAcknowledged); | 616 return ReadPrefAsBooleanAndReturn(extension_id, kPrefExternalAcknowledged); |
| 617 } | 617 } |
| 618 | 618 |
| 619 void ExtensionPrefs::AcknowledgeExternalExtension( | 619 void ExtensionPrefs::AcknowledgeExternalExtension( |
| 620 const std::string& extension_id) { | 620 const std::string& extension_id) { |
| 621 DCHECK(Extension::IdIsValid(extension_id)); | 621 DCHECK(Extension::IdIsValid(extension_id)); |
| 622 UpdateExtensionPref(extension_id, kPrefExternalAcknowledged, | 622 UpdateExtensionPref(extension_id, kPrefExternalAcknowledged, |
| 623 Value::CreateBooleanValue(true)); | 623 new base::FundamentalValue(true)); |
| 624 UpdateExtensionPref(extension_id, kPrefAcknowledgePromptCount, NULL); | 624 UpdateExtensionPref(extension_id, kPrefAcknowledgePromptCount, NULL); |
| 625 } | 625 } |
| 626 | 626 |
| 627 bool ExtensionPrefs::IsBlacklistedExtensionAcknowledged( | 627 bool ExtensionPrefs::IsBlacklistedExtensionAcknowledged( |
| 628 const std::string& extension_id) { | 628 const std::string& extension_id) { |
| 629 return ReadPrefAsBooleanAndReturn(extension_id, kPrefBlacklistAcknowledged); | 629 return ReadPrefAsBooleanAndReturn(extension_id, kPrefBlacklistAcknowledged); |
| 630 } | 630 } |
| 631 | 631 |
| 632 void ExtensionPrefs::AcknowledgeBlacklistedExtension( | 632 void ExtensionPrefs::AcknowledgeBlacklistedExtension( |
| 633 const std::string& extension_id) { | 633 const std::string& extension_id) { |
| 634 DCHECK(Extension::IdIsValid(extension_id)); | 634 DCHECK(Extension::IdIsValid(extension_id)); |
| 635 UpdateExtensionPref(extension_id, kPrefBlacklistAcknowledged, | 635 UpdateExtensionPref(extension_id, kPrefBlacklistAcknowledged, |
| 636 Value::CreateBooleanValue(true)); | 636 new base::FundamentalValue(true)); |
| 637 UpdateExtensionPref(extension_id, kPrefAcknowledgePromptCount, NULL); | 637 UpdateExtensionPref(extension_id, kPrefAcknowledgePromptCount, NULL); |
| 638 } | 638 } |
| 639 | 639 |
| 640 bool ExtensionPrefs::IsExternalInstallFirstRun( | 640 bool ExtensionPrefs::IsExternalInstallFirstRun( |
| 641 const std::string& extension_id) { | 641 const std::string& extension_id) { |
| 642 return ReadPrefAsBooleanAndReturn(extension_id, kPrefExternalInstallFirstRun); | 642 return ReadPrefAsBooleanAndReturn(extension_id, kPrefExternalInstallFirstRun); |
| 643 } | 643 } |
| 644 | 644 |
| 645 void ExtensionPrefs::SetExternalInstallFirstRun( | 645 void ExtensionPrefs::SetExternalInstallFirstRun( |
| 646 const std::string& extension_id) { | 646 const std::string& extension_id) { |
| 647 DCHECK(Extension::IdIsValid(extension_id)); | 647 DCHECK(Extension::IdIsValid(extension_id)); |
| 648 UpdateExtensionPref(extension_id, kPrefExternalInstallFirstRun, | 648 UpdateExtensionPref(extension_id, kPrefExternalInstallFirstRun, |
| 649 Value::CreateBooleanValue(true)); | 649 new base::FundamentalValue(true)); |
| 650 } | 650 } |
| 651 | 651 |
| 652 bool ExtensionPrefs::SetAlertSystemFirstRun() { | 652 bool ExtensionPrefs::SetAlertSystemFirstRun() { |
| 653 if (prefs_->GetBoolean(prefs::kExtensionAlertsInitializedPref)) { | 653 if (prefs_->GetBoolean(prefs::kExtensionAlertsInitializedPref)) { |
| 654 return true; | 654 return true; |
| 655 } | 655 } |
| 656 prefs_->SetBoolean(prefs::kExtensionAlertsInitializedPref, true); | 656 prefs_->SetBoolean(prefs::kExtensionAlertsInitializedPref, true); |
| 657 return false; | 657 return false; |
| 658 } | 658 } |
| 659 | 659 |
| 660 bool ExtensionPrefs::ExtensionsBlacklistedByDefault() const { | 660 bool ExtensionPrefs::ExtensionsBlacklistedByDefault() const { |
| 661 return admin_policy::BlacklistedByDefault( | 661 return admin_policy::BlacklistedByDefault( |
| 662 prefs_->GetList(prefs::kExtensionInstallDenyList)); | 662 prefs_->GetList(prefs::kExtensionInstallDenyList)); |
| 663 } | 663 } |
| 664 | 664 |
| 665 bool ExtensionPrefs::DidExtensionEscalatePermissions( | 665 bool ExtensionPrefs::DidExtensionEscalatePermissions( |
| 666 const std::string& extension_id) { | 666 const std::string& extension_id) { |
| 667 return ReadPrefAsBooleanAndReturn(extension_id, | 667 return ReadPrefAsBooleanAndReturn(extension_id, |
| 668 kExtensionDidEscalatePermissions); | 668 kExtensionDidEscalatePermissions); |
| 669 } | 669 } |
| 670 | 670 |
| 671 void ExtensionPrefs::SetDidExtensionEscalatePermissions( | 671 void ExtensionPrefs::SetDidExtensionEscalatePermissions( |
| 672 const Extension* extension, bool did_escalate) { | 672 const Extension* extension, bool did_escalate) { |
| 673 UpdateExtensionPref(extension->id(), kExtensionDidEscalatePermissions, | 673 UpdateExtensionPref(extension->id(), kExtensionDidEscalatePermissions, |
| 674 Value::CreateBooleanValue(did_escalate)); | 674 new base::FundamentalValue(did_escalate)); |
| 675 } | 675 } |
| 676 | 676 |
| 677 int ExtensionPrefs::GetDisableReasons(const std::string& extension_id) { | 677 int ExtensionPrefs::GetDisableReasons(const std::string& extension_id) { |
| 678 int value = -1; | 678 int value = -1; |
| 679 if (ReadPrefAsInteger(extension_id, kPrefDisableReasons, &value) && | 679 if (ReadPrefAsInteger(extension_id, kPrefDisableReasons, &value) && |
| 680 value >= 0) { | 680 value >= 0) { |
| 681 return value; | 681 return value; |
| 682 } | 682 } |
| 683 return Extension::DISABLE_NONE; | 683 return Extension::DISABLE_NONE; |
| 684 } | 684 } |
| 685 | 685 |
| 686 void ExtensionPrefs::AddDisableReason(const std::string& extension_id, | 686 void ExtensionPrefs::AddDisableReason(const std::string& extension_id, |
| 687 Extension::DisableReason disable_reason) { | 687 Extension::DisableReason disable_reason) { |
| 688 int new_value = GetDisableReasons(extension_id) | | 688 int new_value = GetDisableReasons(extension_id) | |
| 689 static_cast<int>(disable_reason); | 689 static_cast<int>(disable_reason); |
| 690 UpdateExtensionPref(extension_id, kPrefDisableReasons, | 690 UpdateExtensionPref(extension_id, kPrefDisableReasons, |
| 691 Value::CreateIntegerValue(new_value)); | 691 new base::FundamentalValue(new_value)); |
| 692 } | 692 } |
| 693 | 693 |
| 694 void ExtensionPrefs::RemoveDisableReason( | 694 void ExtensionPrefs::RemoveDisableReason( |
| 695 const std::string& extension_id, | 695 const std::string& extension_id, |
| 696 Extension::DisableReason disable_reason) { | 696 Extension::DisableReason disable_reason) { |
| 697 int new_value = GetDisableReasons(extension_id) & | 697 int new_value = GetDisableReasons(extension_id) & |
| 698 ~static_cast<int>(disable_reason); | 698 ~static_cast<int>(disable_reason); |
| 699 if (new_value == Extension::DISABLE_NONE) { | 699 if (new_value == Extension::DISABLE_NONE) { |
| 700 UpdateExtensionPref(extension_id, kPrefDisableReasons, NULL); | 700 UpdateExtensionPref(extension_id, kPrefDisableReasons, NULL); |
| 701 } else { | 701 } else { |
| 702 UpdateExtensionPref(extension_id, kPrefDisableReasons, | 702 UpdateExtensionPref(extension_id, kPrefDisableReasons, |
| 703 Value::CreateIntegerValue(new_value)); | 703 new base::FundamentalValue(new_value)); |
| 704 } | 704 } |
| 705 } | 705 } |
| 706 | 706 |
| 707 void ExtensionPrefs::ClearDisableReasons(const std::string& extension_id) { | 707 void ExtensionPrefs::ClearDisableReasons(const std::string& extension_id) { |
| 708 UpdateExtensionPref(extension_id, kPrefDisableReasons, NULL); | 708 UpdateExtensionPref(extension_id, kPrefDisableReasons, NULL); |
| 709 } | 709 } |
| 710 | 710 |
| 711 std::set<std::string> ExtensionPrefs::GetBlacklistedExtensions() { | 711 std::set<std::string> ExtensionPrefs::GetBlacklistedExtensions() { |
| 712 std::set<std::string> ids; | 712 std::set<std::string> ids; |
| 713 | 713 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 const DictionaryValue* dictionary = GetExtensionPref(extension_id); | 825 const DictionaryValue* dictionary = GetExtensionPref(extension_id); |
| 826 bool result = false; | 826 bool result = false; |
| 827 if (dictionary && dictionary->GetBoolean(kActiveBit, &result)) | 827 if (dictionary && dictionary->GetBoolean(kActiveBit, &result)) |
| 828 return result; | 828 return result; |
| 829 return false; | 829 return false; |
| 830 } | 830 } |
| 831 | 831 |
| 832 void ExtensionPrefs::SetActiveBit(const std::string& extension_id, | 832 void ExtensionPrefs::SetActiveBit(const std::string& extension_id, |
| 833 bool active) { | 833 bool active) { |
| 834 UpdateExtensionPref(extension_id, kActiveBit, | 834 UpdateExtensionPref(extension_id, kActiveBit, |
| 835 Value::CreateBooleanValue(active)); | 835 new base::FundamentalValue(active)); |
| 836 } | 836 } |
| 837 | 837 |
| 838 void ExtensionPrefs::MigratePermissions(const ExtensionIdList& extension_ids) { | 838 void ExtensionPrefs::MigratePermissions(const ExtensionIdList& extension_ids) { |
| 839 PermissionsInfo* info = PermissionsInfo::GetInstance(); | 839 PermissionsInfo* info = PermissionsInfo::GetInstance(); |
| 840 for (ExtensionIdList::const_iterator ext_id = | 840 for (ExtensionIdList::const_iterator ext_id = |
| 841 extension_ids.begin(); ext_id != extension_ids.end(); ++ext_id) { | 841 extension_ids.begin(); ext_id != extension_ids.end(); ++ext_id) { |
| 842 | 842 |
| 843 // An extension's granted permissions need to be migrated if the | 843 // An extension's granted permissions need to be migrated if the |
| 844 // full_access bit is present. This bit was always present in the previous | 844 // full_access bit is present. This bit was always present in the previous |
| 845 // scheme and is never present now. | 845 // scheme and is never present now. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 859 | 859 |
| 860 std::string granted_apis = | 860 std::string granted_apis = |
| 861 JoinPrefs(kPrefGrantedPermissions, kPrefAPIs); | 861 JoinPrefs(kPrefGrantedPermissions, kPrefAPIs); |
| 862 if (ext->GetList(kPrefOldGrantedAPIs, &apis)) | 862 if (ext->GetList(kPrefOldGrantedAPIs, &apis)) |
| 863 new_apis = apis->DeepCopy(); | 863 new_apis = apis->DeepCopy(); |
| 864 else | 864 else |
| 865 new_apis = new ListValue(); | 865 new_apis = new ListValue(); |
| 866 | 866 |
| 867 std::string plugin_name = info->GetByID( | 867 std::string plugin_name = info->GetByID( |
| 868 APIPermission::kPlugin)->name(); | 868 APIPermission::kPlugin)->name(); |
| 869 new_apis->Append(Value::CreateStringValue(plugin_name)); | 869 new_apis->Append(new base::StringValue(plugin_name)); |
| 870 UpdateExtensionPref(*ext_id, granted_apis, new_apis); | 870 UpdateExtensionPref(*ext_id, granted_apis, new_apis); |
| 871 } | 871 } |
| 872 | 872 |
| 873 // The granted permissions originally only held the effective hosts, | 873 // The granted permissions originally only held the effective hosts, |
| 874 // which are a combination of host and user script host permissions. | 874 // which are a combination of host and user script host permissions. |
| 875 // We now maintain these lists separately. For migration purposes, it | 875 // We now maintain these lists separately. For migration purposes, it |
| 876 // does not matter how we treat the old effective hosts as long as the | 876 // does not matter how we treat the old effective hosts as long as the |
| 877 // new effective hosts will be the same, so we move them to explicit | 877 // new effective hosts will be the same, so we move them to explicit |
| 878 // host permissions. | 878 // host permissions. |
| 879 const ListValue* hosts = NULL; | 879 const ListValue* hosts = NULL; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 902 break; | 902 break; |
| 903 case Extension::DEPRECATED_DISABLE_PERMISSIONS_INCREASE: | 903 case Extension::DEPRECATED_DISABLE_PERMISSIONS_INCREASE: |
| 904 new_value = Extension::DISABLE_PERMISSIONS_INCREASE; | 904 new_value = Extension::DISABLE_PERMISSIONS_INCREASE; |
| 905 break; | 905 break; |
| 906 case Extension::DEPRECATED_DISABLE_RELOAD: | 906 case Extension::DEPRECATED_DISABLE_RELOAD: |
| 907 new_value = Extension::DISABLE_RELOAD; | 907 new_value = Extension::DISABLE_RELOAD; |
| 908 break; | 908 break; |
| 909 } | 909 } |
| 910 | 910 |
| 911 UpdateExtensionPref(*ext_id, kPrefDisableReasons, | 911 UpdateExtensionPref(*ext_id, kPrefDisableReasons, |
| 912 Value::CreateIntegerValue(new_value)); | 912 new base::FundamentalValue(new_value)); |
| 913 // Remove the old disable reason. | 913 // Remove the old disable reason. |
| 914 UpdateExtensionPref(*ext_id, kDeprecatedPrefDisableReason, NULL); | 914 UpdateExtensionPref(*ext_id, kDeprecatedPrefDisableReason, NULL); |
| 915 } | 915 } |
| 916 } | 916 } |
| 917 } | 917 } |
| 918 | 918 |
| 919 PermissionSet* ExtensionPrefs::GetGrantedPermissions( | 919 PermissionSet* ExtensionPrefs::GetGrantedPermissions( |
| 920 const std::string& extension_id) { | 920 const std::string& extension_id) { |
| 921 CHECK(Extension::IdIsValid(extension_id)); | 921 CHECK(Extension::IdIsValid(extension_id)); |
| 922 return ReadPrefAsPermissionSet(extension_id, kPrefGrantedPermissions); | 922 return ReadPrefAsPermissionSet(extension_id, kPrefGrantedPermissions); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 966 | 966 |
| 967 void ExtensionPrefs::SetActivePermissions( | 967 void ExtensionPrefs::SetActivePermissions( |
| 968 const std::string& extension_id, | 968 const std::string& extension_id, |
| 969 const PermissionSet* permissions) { | 969 const PermissionSet* permissions) { |
| 970 SetExtensionPrefPermissionSet( | 970 SetExtensionPrefPermissionSet( |
| 971 extension_id, kPrefActivePermissions, permissions); | 971 extension_id, kPrefActivePermissions, permissions); |
| 972 } | 972 } |
| 973 | 973 |
| 974 void ExtensionPrefs::SetExtensionRunning(const std::string& extension_id, | 974 void ExtensionPrefs::SetExtensionRunning(const std::string& extension_id, |
| 975 bool is_running) { | 975 bool is_running) { |
| 976 Value* value = Value::CreateBooleanValue(is_running); | 976 Value* value = new base::FundamentalValue(is_running); |
| 977 UpdateExtensionPref(extension_id, kPrefRunning, value); | 977 UpdateExtensionPref(extension_id, kPrefRunning, value); |
| 978 } | 978 } |
| 979 | 979 |
| 980 bool ExtensionPrefs::IsExtensionRunning(const std::string& extension_id) { | 980 bool ExtensionPrefs::IsExtensionRunning(const std::string& extension_id) { |
| 981 const DictionaryValue* extension = GetExtensionPref(extension_id); | 981 const DictionaryValue* extension = GetExtensionPref(extension_id); |
| 982 if (!extension) | 982 if (!extension) |
| 983 return false; | 983 return false; |
| 984 bool running = false; | 984 bool running = false; |
| 985 extension->GetBoolean(kPrefRunning, &running); | 985 extension->GetBoolean(kPrefRunning, &running); |
| 986 return running; | 986 return running; |
| 987 } | 987 } |
| 988 | 988 |
| 989 void ExtensionPrefs::SetIsActive(const std::string& extension_id, | 989 void ExtensionPrefs::SetIsActive(const std::string& extension_id, |
| 990 bool is_active) { | 990 bool is_active) { |
| 991 Value* value = Value::CreateBooleanValue(is_active); | 991 Value* value = new base::FundamentalValue(is_active); |
| 992 UpdateExtensionPref(extension_id, kIsActive, value); | 992 UpdateExtensionPref(extension_id, kIsActive, value); |
| 993 } | 993 } |
| 994 | 994 |
| 995 bool ExtensionPrefs::IsActive(const std::string& extension_id) { | 995 bool ExtensionPrefs::IsActive(const std::string& extension_id) { |
| 996 const DictionaryValue* extension = GetExtensionPref(extension_id); | 996 const DictionaryValue* extension = GetExtensionPref(extension_id); |
| 997 if (!extension) | 997 if (!extension) |
| 998 return false; | 998 return false; |
| 999 bool is_active = false; | 999 bool is_active = false; |
| 1000 extension->GetBoolean(kIsActive, &is_active); | 1000 extension->GetBoolean(kIsActive, &is_active); |
| 1001 return is_active; | 1001 return is_active; |
| 1002 } | 1002 } |
| 1003 | 1003 |
| 1004 bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) { | 1004 bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) { |
| 1005 return ReadPrefAsBooleanAndReturn(extension_id, kPrefIncognitoEnabled); | 1005 return ReadPrefAsBooleanAndReturn(extension_id, kPrefIncognitoEnabled); |
| 1006 } | 1006 } |
| 1007 | 1007 |
| 1008 void ExtensionPrefs::SetIsIncognitoEnabled(const std::string& extension_id, | 1008 void ExtensionPrefs::SetIsIncognitoEnabled(const std::string& extension_id, |
| 1009 bool enabled) { | 1009 bool enabled) { |
| 1010 UpdateExtensionPref(extension_id, kPrefIncognitoEnabled, | 1010 UpdateExtensionPref(extension_id, kPrefIncognitoEnabled, |
| 1011 Value::CreateBooleanValue(enabled)); | 1011 new base::FundamentalValue(enabled)); |
| 1012 } | 1012 } |
| 1013 | 1013 |
| 1014 bool ExtensionPrefs::AllowFileAccess(const std::string& extension_id) { | 1014 bool ExtensionPrefs::AllowFileAccess(const std::string& extension_id) { |
| 1015 return ReadPrefAsBooleanAndReturn(extension_id, kPrefAllowFileAccess); | 1015 return ReadPrefAsBooleanAndReturn(extension_id, kPrefAllowFileAccess); |
| 1016 } | 1016 } |
| 1017 | 1017 |
| 1018 void ExtensionPrefs::SetAllowFileAccess(const std::string& extension_id, | 1018 void ExtensionPrefs::SetAllowFileAccess(const std::string& extension_id, |
| 1019 bool allow) { | 1019 bool allow) { |
| 1020 UpdateExtensionPref(extension_id, kPrefAllowFileAccess, | 1020 UpdateExtensionPref(extension_id, kPrefAllowFileAccess, |
| 1021 Value::CreateBooleanValue(allow)); | 1021 new base::FundamentalValue(allow)); |
| 1022 } | 1022 } |
| 1023 | 1023 |
| 1024 bool ExtensionPrefs::HasAllowFileAccessSetting( | 1024 bool ExtensionPrefs::HasAllowFileAccessSetting( |
| 1025 const std::string& extension_id) const { | 1025 const std::string& extension_id) const { |
| 1026 const DictionaryValue* ext = GetExtensionPref(extension_id); | 1026 const DictionaryValue* ext = GetExtensionPref(extension_id); |
| 1027 return ext && ext->HasKey(kPrefAllowFileAccess); | 1027 return ext && ext->HasKey(kPrefAllowFileAccess); |
| 1028 } | 1028 } |
| 1029 | 1029 |
| 1030 ExtensionPrefs::LaunchType ExtensionPrefs::GetLaunchType( | 1030 ExtensionPrefs::LaunchType ExtensionPrefs::GetLaunchType( |
| 1031 const Extension* extension, | 1031 const Extension* extension, |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1117 DLOG(FATAL) << "Failed to set a launch container."; | 1117 DLOG(FATAL) << "Failed to set a launch container."; |
| 1118 result = extension_misc::LAUNCH_TAB; | 1118 result = extension_misc::LAUNCH_TAB; |
| 1119 } | 1119 } |
| 1120 | 1120 |
| 1121 return result; | 1121 return result; |
| 1122 } | 1122 } |
| 1123 | 1123 |
| 1124 void ExtensionPrefs::SetLaunchType(const std::string& extension_id, | 1124 void ExtensionPrefs::SetLaunchType(const std::string& extension_id, |
| 1125 LaunchType launch_type) { | 1125 LaunchType launch_type) { |
| 1126 UpdateExtensionPref(extension_id, kPrefLaunchType, | 1126 UpdateExtensionPref(extension_id, kPrefLaunchType, |
| 1127 Value::CreateIntegerValue(static_cast<int>(launch_type))); | 1127 new base::FundamentalValue(static_cast<int>(launch_type))); |
| 1128 } | 1128 } |
| 1129 | 1129 |
| 1130 bool ExtensionPrefs::DoesExtensionHaveState( | 1130 bool ExtensionPrefs::DoesExtensionHaveState( |
| 1131 const std::string& id, Extension::State check_state) const { | 1131 const std::string& id, Extension::State check_state) const { |
| 1132 const DictionaryValue* extension = GetExtensionPref(id); | 1132 const DictionaryValue* extension = GetExtensionPref(id); |
| 1133 int state = -1; | 1133 int state = -1; |
| 1134 if (!extension || !extension->GetInteger(kPrefState, &state)) | 1134 if (!extension || !extension->GetInteger(kPrefState, &state)) |
| 1135 return false; | 1135 return false; |
| 1136 | 1136 |
| 1137 if (state < 0 || state >= Extension::NUM_STATES) { | 1137 if (state < 0 || state >= Extension::NUM_STATES) { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1179 const Manifest::Location& location, | 1179 const Manifest::Location& location, |
| 1180 bool external_uninstall) { | 1180 bool external_uninstall) { |
| 1181 extension_sorting_->ClearOrdinals(extension_id); | 1181 extension_sorting_->ClearOrdinals(extension_id); |
| 1182 | 1182 |
| 1183 // For external extensions, we save a preference reminding ourself not to try | 1183 // For external extensions, we save a preference reminding ourself not to try |
| 1184 // and install the extension anymore (except when |external_uninstall| is | 1184 // and install the extension anymore (except when |external_uninstall| is |
| 1185 // true, which signifies that the registry key was deleted or the pref file | 1185 // true, which signifies that the registry key was deleted or the pref file |
| 1186 // no longer lists the extension). | 1186 // no longer lists the extension). |
| 1187 if (!external_uninstall && Manifest::IsExternalLocation(location)) { | 1187 if (!external_uninstall && Manifest::IsExternalLocation(location)) { |
| 1188 UpdateExtensionPref(extension_id, kPrefState, | 1188 UpdateExtensionPref(extension_id, kPrefState, |
| 1189 Value::CreateIntegerValue( | 1189 new base::FundamentalValue( |
| 1190 Extension::EXTERNAL_EXTENSION_UNINSTALLED)); | 1190 Extension::EXTERNAL_EXTENSION_UNINSTALLED)); |
| 1191 extension_pref_value_map_->SetExtensionState(extension_id, false); | 1191 extension_pref_value_map_->SetExtensionState(extension_id, false); |
| 1192 content_settings_store_->SetExtensionState(extension_id, false); | 1192 content_settings_store_->SetExtensionState(extension_id, false); |
| 1193 } else { | 1193 } else { |
| 1194 DeleteExtensionPrefs(extension_id); | 1194 DeleteExtensionPrefs(extension_id); |
| 1195 } | 1195 } |
| 1196 } | 1196 } |
| 1197 | 1197 |
| 1198 void ExtensionPrefs::SetExtensionState(const std::string& extension_id, | 1198 void ExtensionPrefs::SetExtensionState(const std::string& extension_id, |
| 1199 Extension::State state) { | 1199 Extension::State state) { |
| 1200 UpdateExtensionPref(extension_id, kPrefState, | 1200 UpdateExtensionPref(extension_id, kPrefState, |
| 1201 Value::CreateIntegerValue(state)); | 1201 new base::FundamentalValue(state)); |
| 1202 bool enabled = (state == Extension::ENABLED); | 1202 bool enabled = (state == Extension::ENABLED); |
| 1203 extension_pref_value_map_->SetExtensionState(extension_id, enabled); | 1203 extension_pref_value_map_->SetExtensionState(extension_id, enabled); |
| 1204 content_settings_store_->SetExtensionState(extension_id, enabled); | 1204 content_settings_store_->SetExtensionState(extension_id, enabled); |
| 1205 } | 1205 } |
| 1206 | 1206 |
| 1207 std::string ExtensionPrefs::GetVersionString(const std::string& extension_id) { | 1207 std::string ExtensionPrefs::GetVersionString(const std::string& extension_id) { |
| 1208 const DictionaryValue* extension = GetExtensionPref(extension_id); | 1208 const DictionaryValue* extension = GetExtensionPref(extension_id); |
| 1209 if (!extension) | 1209 if (!extension) |
| 1210 return std::string(); | 1210 return std::string(); |
| 1211 | 1211 |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1381 &serialized_ordinal)) { | 1381 &serialized_ordinal)) { |
| 1382 suggested_page_ordinal = syncer::StringOrdinal(serialized_ordinal); | 1382 suggested_page_ordinal = syncer::StringOrdinal(serialized_ordinal); |
| 1383 needs_sort_ordinal = true; | 1383 needs_sort_ordinal = true; |
| 1384 pending_install_dict->Remove(kPrefSuggestedPageOrdinal, NULL); | 1384 pending_install_dict->Remove(kPrefSuggestedPageOrdinal, NULL); |
| 1385 } | 1385 } |
| 1386 pending_install_dict->Remove(kDelayedInstallReason, NULL); | 1386 pending_install_dict->Remove(kDelayedInstallReason, NULL); |
| 1387 | 1387 |
| 1388 const base::Time install_time = time_provider_->GetCurrentTime(); | 1388 const base::Time install_time = time_provider_->GetCurrentTime(); |
| 1389 pending_install_dict->Set( | 1389 pending_install_dict->Set( |
| 1390 kPrefInstallTime, | 1390 kPrefInstallTime, |
| 1391 Value::CreateStringValue( | 1391 new base::StringValue( |
| 1392 base::Int64ToString(install_time.ToInternalValue()))); | 1392 base::Int64ToString(install_time.ToInternalValue()))); |
| 1393 | 1393 |
| 1394 // Commit the delayed install data. | 1394 // Commit the delayed install data. |
| 1395 extension_dict->MergeDictionary(pending_install_dict); | 1395 extension_dict->MergeDictionary(pending_install_dict); |
| 1396 FinishExtensionInfoPrefs(extension_id, install_time, needs_sort_ordinal, | 1396 FinishExtensionInfoPrefs(extension_id, install_time, needs_sort_ordinal, |
| 1397 suggested_page_ordinal, extension_dict); | 1397 suggested_page_ordinal, extension_dict); |
| 1398 return true; | 1398 return true; |
| 1399 } | 1399 } |
| 1400 | 1400 |
| 1401 scoped_ptr<ExtensionInfo> ExtensionPrefs::GetDelayedInstallInfo( | 1401 scoped_ptr<ExtensionInfo> ExtensionPrefs::GetDelayedInstallInfo( |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1447 | 1447 |
| 1448 return extensions_info.Pass(); | 1448 return extensions_info.Pass(); |
| 1449 } | 1449 } |
| 1450 | 1450 |
| 1451 bool ExtensionPrefs::WasAppDraggedByUser(const std::string& extension_id) { | 1451 bool ExtensionPrefs::WasAppDraggedByUser(const std::string& extension_id) { |
| 1452 return ReadPrefAsBooleanAndReturn(extension_id, kPrefUserDraggedApp); | 1452 return ReadPrefAsBooleanAndReturn(extension_id, kPrefUserDraggedApp); |
| 1453 } | 1453 } |
| 1454 | 1454 |
| 1455 void ExtensionPrefs::SetAppDraggedByUser(const std::string& extension_id) { | 1455 void ExtensionPrefs::SetAppDraggedByUser(const std::string& extension_id) { |
| 1456 UpdateExtensionPref(extension_id, kPrefUserDraggedApp, | 1456 UpdateExtensionPref(extension_id, kPrefUserDraggedApp, |
| 1457 Value::CreateBooleanValue(true)); | 1457 new base::FundamentalValue(true)); |
| 1458 } | 1458 } |
| 1459 | 1459 |
| 1460 bool ExtensionPrefs::IsFromWebStore( | 1460 bool ExtensionPrefs::IsFromWebStore( |
| 1461 const std::string& extension_id) const { | 1461 const std::string& extension_id) const { |
| 1462 const DictionaryValue* dictionary = GetExtensionPref(extension_id); | 1462 const DictionaryValue* dictionary = GetExtensionPref(extension_id); |
| 1463 bool result = false; | 1463 bool result = false; |
| 1464 if (dictionary && dictionary->GetBoolean(kPrefFromWebStore, &result)) | 1464 if (dictionary && dictionary->GetBoolean(kPrefFromWebStore, &result)) |
| 1465 return result; | 1465 return result; |
| 1466 return false; | 1466 return false; |
| 1467 } | 1467 } |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1569 for (ExtensionIdList::const_iterator ext_id = extension_ids.begin(); | 1569 for (ExtensionIdList::const_iterator ext_id = extension_ids.begin(); |
| 1570 ext_id != extension_ids.end(); ++ext_id) { | 1570 ext_id != extension_ids.end(); ++ext_id) { |
| 1571 if (GetInstallTime(*ext_id) == base::Time()) { | 1571 if (GetInstallTime(*ext_id) == base::Time()) { |
| 1572 LOG(INFO) << "Could not parse installation time of extension " | 1572 LOG(INFO) << "Could not parse installation time of extension " |
| 1573 << *ext_id << ". It was probably installed before setting " | 1573 << *ext_id << ". It was probably installed before setting " |
| 1574 << kPrefInstallTime << " was introduced. Updating " | 1574 << kPrefInstallTime << " was introduced. Updating " |
| 1575 << kPrefInstallTime << " to the current time."; | 1575 << kPrefInstallTime << " to the current time."; |
| 1576 const base::Time install_time = time_provider_->GetCurrentTime(); | 1576 const base::Time install_time = time_provider_->GetCurrentTime(); |
| 1577 UpdateExtensionPref(*ext_id, | 1577 UpdateExtensionPref(*ext_id, |
| 1578 kPrefInstallTime, | 1578 kPrefInstallTime, |
| 1579 Value::CreateStringValue(base::Int64ToString( | 1579 new base::StringValue(base::Int64ToString( |
| 1580 install_time.ToInternalValue()))); | 1580 install_time.ToInternalValue()))); |
| 1581 } | 1581 } |
| 1582 } | 1582 } |
| 1583 } | 1583 } |
| 1584 | 1584 |
| 1585 void ExtensionPrefs::InitPrefStore() { | 1585 void ExtensionPrefs::InitPrefStore() { |
| 1586 if (extensions_disabled_) { | 1586 if (extensions_disabled_) { |
| 1587 extension_pref_value_map_->NotifyInitializationCompleted(); | 1587 extension_pref_value_map_->NotifyInitializationCompleted(); |
| 1588 return; | 1588 return; |
| 1589 } | 1589 } |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1754 } | 1754 } |
| 1755 | 1755 |
| 1756 void ExtensionPrefs::SetExtensionPrefFromVector( | 1756 void ExtensionPrefs::SetExtensionPrefFromVector( |
| 1757 const char* pref, | 1757 const char* pref, |
| 1758 const ExtensionIdList& strings) { | 1758 const ExtensionIdList& strings) { |
| 1759 ListPrefUpdate update(prefs_, pref); | 1759 ListPrefUpdate update(prefs_, pref); |
| 1760 ListValue* list_of_values = update.Get(); | 1760 ListValue* list_of_values = update.Get(); |
| 1761 list_of_values->Clear(); | 1761 list_of_values->Clear(); |
| 1762 for (ExtensionIdList::const_iterator iter = strings.begin(); | 1762 for (ExtensionIdList::const_iterator iter = strings.begin(); |
| 1763 iter != strings.end(); ++iter) | 1763 iter != strings.end(); ++iter) |
| 1764 list_of_values->Append(new StringValue(*iter)); | 1764 list_of_values->Append(new base::StringValue(*iter)); |
| 1765 } | 1765 } |
| 1766 | 1766 |
| 1767 void ExtensionPrefs::PopulateExtensionInfoPrefs( | 1767 void ExtensionPrefs::PopulateExtensionInfoPrefs( |
| 1768 const Extension* extension, | 1768 const Extension* extension, |
| 1769 const base::Time install_time, | 1769 const base::Time install_time, |
| 1770 Extension::State initial_state, | 1770 Extension::State initial_state, |
| 1771 Blacklist::BlacklistState blacklist_state, | 1771 Blacklist::BlacklistState blacklist_state, |
| 1772 DictionaryValue* extension_dict) { | 1772 DictionaryValue* extension_dict) { |
| 1773 // Leave the state blank for component extensions so that old chrome versions | 1773 // Leave the state blank for component extensions so that old chrome versions |
| 1774 // loading new profiles do not fail in GetInstalledExtensionInfo. Older | 1774 // loading new profiles do not fail in GetInstalledExtensionInfo. Older |
| 1775 // Chrome versions would only check for an omitted state. | 1775 // Chrome versions would only check for an omitted state. |
| 1776 if (initial_state != Extension::ENABLED_COMPONENT) | 1776 if (initial_state != Extension::ENABLED_COMPONENT) |
| 1777 extension_dict->Set(kPrefState, Value::CreateIntegerValue(initial_state)); | 1777 extension_dict->Set(kPrefState, new base::FundamentalValue(initial_state)); |
| 1778 | 1778 |
| 1779 extension_dict->Set(kPrefLocation, | 1779 extension_dict->Set(kPrefLocation, |
| 1780 Value::CreateIntegerValue(extension->location())); | 1780 new base::FundamentalValue(extension->location())); |
| 1781 extension_dict->Set(kPrefCreationFlags, | 1781 extension_dict->Set(kPrefCreationFlags, |
| 1782 Value::CreateIntegerValue(extension->creation_flags())); | 1782 new base::FundamentalValue(extension->creation_flags())); |
| 1783 extension_dict->Set(kPrefFromWebStore, | 1783 extension_dict->Set(kPrefFromWebStore, |
| 1784 Value::CreateBooleanValue(extension->from_webstore())); | 1784 new base::FundamentalValue(extension->from_webstore())); |
| 1785 extension_dict->Set(kPrefFromBookmark, | 1785 extension_dict->Set(kPrefFromBookmark, |
| 1786 Value::CreateBooleanValue(extension->from_bookmark())); | 1786 new base::FundamentalValue(extension->from_bookmark())); |
| 1787 extension_dict->Set( | 1787 extension_dict->Set( |
| 1788 kPrefWasInstalledByDefault, | 1788 kPrefWasInstalledByDefault, |
| 1789 Value::CreateBooleanValue(extension->was_installed_by_default())); | 1789 new base::FundamentalValue(extension->was_installed_by_default())); |
| 1790 extension_dict->Set(kPrefInstallTime, | 1790 extension_dict->Set(kPrefInstallTime, |
| 1791 Value::CreateStringValue( | 1791 new base::StringValue( |
| 1792 base::Int64ToString(install_time.ToInternalValue()))); | 1792 base::Int64ToString(install_time.ToInternalValue()))); |
| 1793 if (blacklist_state == Blacklist::BLACKLISTED) | 1793 if (blacklist_state == Blacklist::BLACKLISTED) |
| 1794 extension_dict->Set(kPrefBlacklist, Value::CreateBooleanValue(true)); | 1794 extension_dict->Set(kPrefBlacklist, new base::FundamentalValue(true)); |
| 1795 | 1795 |
| 1796 base::FilePath::StringType path = MakePathRelative(install_directory_, | 1796 base::FilePath::StringType path = MakePathRelative(install_directory_, |
| 1797 extension->path()); | 1797 extension->path()); |
| 1798 extension_dict->Set(kPrefPath, Value::CreateStringValue(path)); | 1798 extension_dict->Set(kPrefPath, new base::StringValue(path)); |
| 1799 // We store prefs about LOAD extensions, but don't cache their manifest | 1799 // We store prefs about LOAD extensions, but don't cache their manifest |
| 1800 // since it may change on disk. | 1800 // since it may change on disk. |
| 1801 if (!Manifest::IsUnpackedLocation(extension->location())) { | 1801 if (!Manifest::IsUnpackedLocation(extension->location())) { |
| 1802 extension_dict->Set(kPrefManifest, | 1802 extension_dict->Set(kPrefManifest, |
| 1803 extension->manifest()->value()->DeepCopy()); | 1803 extension->manifest()->value()->DeepCopy()); |
| 1804 } | 1804 } |
| 1805 } | 1805 } |
| 1806 | 1806 |
| 1807 void ExtensionPrefs::FinishExtensionInfoPrefs( | 1807 void ExtensionPrefs::FinishExtensionInfoPrefs( |
| 1808 const std::string& extension_id, | 1808 const std::string& extension_id, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1842 is_enabled = initial_state == Extension::ENABLED; | 1842 is_enabled = initial_state == Extension::ENABLED; |
| 1843 } | 1843 } |
| 1844 | 1844 |
| 1845 extension_pref_value_map_->RegisterExtension(extension_id, install_time, | 1845 extension_pref_value_map_->RegisterExtension(extension_id, install_time, |
| 1846 is_enabled); | 1846 is_enabled); |
| 1847 content_settings_store_->RegisterExtension(extension_id, install_time, | 1847 content_settings_store_->RegisterExtension(extension_id, install_time, |
| 1848 is_enabled); | 1848 is_enabled); |
| 1849 } | 1849 } |
| 1850 | 1850 |
| 1851 } // namespace extensions | 1851 } // namespace extensions |
| OLD | NEW |