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_unittest.h" | 5 #include "chrome/browser/extensions/extension_prefs_unittest.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/prefs/mock_pref_change_callback.h" | 10 #include "base/prefs/mock_pref_change_callback.h" |
11 #include "base/prefs/pref_change_registrar.h" | 11 #include "base/prefs/pref_change_registrar.h" |
12 #include "base/prefs/scoped_user_pref_update.h" | 12 #include "base/prefs/scoped_user_pref_update.h" |
13 #include "base/stl_util.h" | 13 #include "base/stl_util.h" |
14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
15 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
16 #include "base/time/time.h" | 16 #include "base/time/time.h" |
17 #include "base/values.h" | 17 #include "base/values.h" |
18 #include "chrome/browser/prefs/pref_service_syncable.h" | 18 #include "chrome/browser/prefs/pref_service_syncable.h" |
19 #include "chrome/common/chrome_paths.h" | 19 #include "chrome/common/chrome_paths.h" |
20 #include "components/pref_registry/pref_registry_syncable.h" | 20 #include "components/pref_registry/pref_registry_syncable.h" |
21 #include "content/public/browser/notification_details.h" | 21 #include "content/public/browser/notification_details.h" |
22 #include "content/public/browser/notification_source.h" | 22 #include "content/public/browser/notification_source.h" |
23 #include "content/public/test/mock_notification_observer.h" | 23 #include "content/public/test/mock_notification_observer.h" |
24 #include "extensions/browser/extension_pref_value_map.h" | 24 #include "extensions/browser/extension_pref_value_map.h" |
25 #include "extensions/browser/extension_prefs.h" | 25 #include "extensions/browser/extension_prefs.h" |
26 #include "extensions/browser/install_flag.h" | 26 #include "extensions/browser/install_flag.h" |
27 #include "extensions/common/extension.h" | 27 #include "extensions/common/extension.h" |
28 #include "extensions/common/extension_builder.h" | |
28 #include "extensions/common/manifest_constants.h" | 29 #include "extensions/common/manifest_constants.h" |
29 #include "extensions/common/permissions/permission_set.h" | 30 #include "extensions/common/permissions/permission_set.h" |
30 #include "extensions/common/permissions/permissions_info.h" | 31 #include "extensions/common/permissions/permissions_info.h" |
31 #include "sync/api/string_ordinal.h" | 32 #include "sync/api/string_ordinal.h" |
32 | 33 |
33 using base::Time; | 34 using base::Time; |
34 using base::TimeDelta; | 35 using base::TimeDelta; |
35 using content::BrowserThread; | 36 using content::BrowserThread; |
36 | 37 |
37 namespace extensions { | 38 namespace extensions { |
(...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
906 // Other preferences should be untouched. | 907 // Other preferences should be untouched. |
907 EXPECT_TRUE(prefs()->AllowFileAccess(extension_a_->id())); | 908 EXPECT_TRUE(prefs()->AllowFileAccess(extension_a_->id())); |
908 } | 909 } |
909 | 910 |
910 private: | 911 private: |
911 scoped_refptr<const Extension> extension_a_; | 912 scoped_refptr<const Extension> extension_a_; |
912 scoped_refptr<const Extension> extension_b_; | 913 scoped_refptr<const Extension> extension_b_; |
913 }; | 914 }; |
914 TEST_F(ExtensionPrefsClearLastLaunched, ExtensionPrefsClearLastLaunched) {} | 915 TEST_F(ExtensionPrefsClearLastLaunched, ExtensionPrefsClearLastLaunched) {} |
915 | 916 |
917 class ExtensionPrefsComponentExtension : public ExtensionPrefsTest { | |
918 public: | |
919 ~ExtensionPrefsComponentExtension() override {} | |
920 void Initialize() override { | |
921 // Adding a component extension. | |
922 component_extension_ = | |
923 ExtensionBuilder() | |
924 .SetManifest(DictionaryBuilder() | |
925 .Set(manifest_keys::kName, "a") | |
926 .Set(manifest_keys::kVersion, "0.1")) | |
927 .SetLocation(Manifest::COMPONENT) | |
928 .SetPath(prefs_.extensions_dir().AppendASCII("a")) | |
929 .Build(); | |
930 prefs_.AddExtension(component_extension_.get()); | |
931 | |
932 // Adding a non component extension. | |
933 no_component_extension_ = | |
934 ExtensionBuilder() | |
935 .SetManifest(DictionaryBuilder() | |
936 .Set(manifest_keys::kName, "b") | |
937 .Set(manifest_keys::kVersion, "0.1")) | |
938 .SetLocation(Manifest::INTERNAL) | |
939 .SetPath(prefs_.extensions_dir().AppendASCII("b")) | |
940 .Build(); | |
941 prefs_.AddExtension(no_component_extension_.get()); | |
942 | |
943 APIPermissionSet api_perms; | |
944 api_perms.insert(APIPermission::kTab); | |
945 api_perms.insert(APIPermission::kBookmark); | |
946 api_perms.insert(APIPermission::kHistory); | |
947 | |
948 ManifestPermissionSet empty_manifest_permissions; | |
949 | |
950 URLPatternSet ehosts, shosts; | |
951 AddPattern(&shosts, "chrome://print/*"); | |
952 | |
953 active_perms_ = new PermissionSet(api_perms, empty_manifest_permissions, | |
954 ehosts, shosts); | |
955 // Set the active permissions. | |
956 prefs()->SetActivePermissions(component_extension_->id(), | |
957 active_perms_.get()); | |
958 prefs()->SetActivePermissions(no_component_extension_->id(), | |
959 active_perms_.get()); | |
960 } | |
961 | |
962 void Verify() override { | |
963 // Component extension can access chrome://print/*. | |
964 scoped_refptr<PermissionSet> component_permissions( | |
965 prefs()->GetActivePermissions(component_extension_->id())); | |
966 EXPECT_EQ(1u, component_permissions->scriptable_hosts().size()); | |
967 | |
968 // Non Component extension can not access chrome://print/*. | |
969 scoped_refptr<PermissionSet> no_component_permissions( | |
970 prefs()->GetActivePermissions(no_component_extension_->id())); | |
971 EXPECT_TRUE(no_component_permissions->scriptable_hosts().is_empty()); | |
not at google - send to devlin
2015/04/14 15:38:35
Btw I actually prefer (but often forget myself) to
Deepak
2015/04/15 04:42:41
Done.
| |
972 | |
973 // |URLPattern::SCHEME_CHROMEUI| scheme will be added in valid_schemes for | |
974 // component extensions. | |
975 URLPatternSet scriptable_hosts; | |
976 std::string pref_key = "active_permissions.scriptable_host"; | |
977 int valid_schemes = URLPattern::SCHEME_ALL & ~URLPattern::SCHEME_CHROMEUI; | |
978 | |
979 EXPECT_TRUE(prefs()->ReadPrefAsURLPatternSet(component_extension_->id(), | |
980 pref_key, &scriptable_hosts, | |
981 valid_schemes)); | |
982 | |
983 EXPECT_FALSE(prefs()->ReadPrefAsURLPatternSet(no_component_extension_->id(), | |
984 pref_key, &scriptable_hosts, | |
985 valid_schemes)); | |
986 } | |
987 | |
988 private: | |
989 scoped_refptr<PermissionSet> active_perms_; | |
990 scoped_refptr<Extension> component_extension_; | |
991 scoped_refptr<Extension> no_component_extension_; | |
992 }; | |
993 TEST_F(ExtensionPrefsComponentExtension, ExtensionPrefsComponentExtension) { | |
994 } | |
995 | |
916 } // namespace extensions | 996 } // namespace extensions |
OLD | NEW |