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

Side by Side Diff: chrome/common/extensions/extension_unittest.cc

Issue 10815028: Make ActiveTabPermissionManager also grant the tabs permission. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 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) 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/common/extensions/extension.h" 5 #include "chrome/common/extensions/extension.h"
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/json/json_file_value_serializer.h" 10 #include "base/json/json_file_value_serializer.h"
11 #include "base/path_service.h" 11 #include "base/path_service.h"
12 #include "base/stringprintf.h" 12 #include "base/stringprintf.h"
13 #include "base/string_number_conversions.h" 13 #include "base/string_number_conversions.h"
14 #include "base/utf_string_conversions.h" 14 #include "base/utf_string_conversions.h"
15 #include "chrome/common/chrome_paths.h" 15 #include "chrome/common/chrome_paths.h"
16 #include "chrome/common/extensions/command.h" 16 #include "chrome/common/extensions/command.h"
17 #include "chrome/common/extensions/extension_action.h" 17 #include "chrome/common/extensions/extension_action.h"
18 #include "chrome/common/extensions/extension_error_utils.h" 18 #include "chrome/common/extensions/extension_error_utils.h"
19 #include "chrome/common/extensions/extension_file_util.h" 19 #include "chrome/common/extensions/extension_file_util.h"
20 #include "chrome/common/extensions/extension_manifest_constants.h" 20 #include "chrome/common/extensions/extension_manifest_constants.h"
21 #include "chrome/common/extensions/extension_resource.h" 21 #include "chrome/common/extensions/extension_resource.h"
22 #include "chrome/common/extensions/permissions/permission_set.h"
23 #include "chrome/common/extensions/permissions/api_permission.h"
22 #include "chrome/common/url_constants.h" 24 #include "chrome/common/url_constants.h"
23 #include "googleurl/src/gurl.h" 25 #include "googleurl/src/gurl.h"
24 #include "net/base/mime_sniffer.h" 26 #include "net/base/mime_sniffer.h"
25 #include "skia/ext/image_operations.h" 27 #include "skia/ext/image_operations.h"
26 #include "net/base/mock_host_resolver.h" 28 #include "net/base/mock_host_resolver.h"
27 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
28 #include "third_party/skia/include/core/SkBitmap.h" 30 #include "third_party/skia/include/core/SkBitmap.h"
29 #include "ui/gfx/codec/png_codec.h" 31 #include "ui/gfx/codec/png_codec.h"
30 32
31 using extensions::Extension; 33 using extensions::Extension;
34 using extensions::PermissionSet;
35 using extensions::APIPermissionSet;
32 36
33 namespace keys = extension_manifest_keys; 37 namespace keys = extension_manifest_keys;
34 namespace values = extension_manifest_values; 38 namespace values = extension_manifest_values;
35 namespace errors = extension_manifest_errors; 39 namespace errors = extension_manifest_errors;
36 40
37 namespace { 41 namespace {
38 42
39 void CompareLists(const std::vector<std::string>& expected, 43 void CompareLists(const std::vector<std::string>& expected,
40 const std::vector<std::string>& actual) { 44 const std::vector<std::string>& actual) {
41 ASSERT_EQ(expected.size(), actual.size()); 45 ASSERT_EQ(expected.size(), actual.size());
(...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 EXPECT_TRUE(Blocked(extension, favicon_url)); 867 EXPECT_TRUE(Blocked(extension, favicon_url));
864 EXPECT_TRUE(Blocked(extension, about_url)); 868 EXPECT_TRUE(Blocked(extension, about_url));
865 EXPECT_TRUE(Blocked(extension, extension_url)); 869 EXPECT_TRUE(Blocked(extension, extension_url));
866 EXPECT_FALSE(extension->HasHostPermission(settings_url)); 870 EXPECT_FALSE(extension->HasHostPermission(settings_url));
867 } 871 }
868 872
869 TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) { 873 TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) {
870 scoped_refptr<Extension> extension = 874 scoped_refptr<Extension> extension =
871 LoadManifestStrict("script_and_capture", "tab_specific.json"); 875 LoadManifestStrict("script_and_capture", "tab_specific.json");
872 876
873 EXPECT_EQ(NULL, extension->GetTabSpecificHostPermissions(0)); 877 EXPECT_FALSE(extension->GetTabSpecificPermissions(0).get());
not at google - send to devlin 2012/07/25 07:03:46 I just did enough throughout here to make the test
874 EXPECT_EQ(NULL, extension->GetTabSpecificHostPermissions(1)); 878 EXPECT_FALSE(extension->GetTabSpecificPermissions(1).get());
875 EXPECT_EQ(NULL, extension->GetTabSpecificHostPermissions(2)); 879 EXPECT_FALSE(extension->GetTabSpecificPermissions(2).get());
876 880
877 std::set<GURL> no_urls; 881 std::set<GURL> no_urls;
878 882
879 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); 883 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0));
880 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); 884 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1));
881 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 885 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
882 886
883 URLPatternSet allowed_hosts; 887 URLPatternSet allowed_hosts;
884 allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, 888 allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL,
885 http_url.spec())); 889 http_url.spec()));
886 std::set<GURL> allowed_urls; 890 std::set<GURL> allowed_urls;
887 allowed_urls.insert(http_url); 891 allowed_urls.insert(http_url);
888 // http_url_with_path() will also be allowed, because Extension should be 892 // http_url_with_path() will also be allowed, because Extension should be
889 // considering the security origin of the URL not the URL itself, and 893 // considering the security origin of the URL not the URL itself, and
890 // http_url is in allowed_hosts. 894 // http_url is in allowed_hosts.
891 allowed_urls.insert(http_url_with_path); 895 allowed_urls.insert(http_url_with_path);
892 896
893 extension->SetTabSpecificHostPermissions(0, allowed_hosts); 897 {
894 EXPECT_EQ(allowed_hosts, *extension->GetTabSpecificHostPermissions(0)); 898 scoped_refptr<PermissionSet> permissions(
899 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet()));
900 extension->UpdateTabSpecificPermissions(0, permissions);
901 EXPECT_EQ(permissions->explicit_hosts(),
902 extension->GetTabSpecificPermissions(0)->explicit_hosts());
903 }
895 904
896 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, allowed_urls, 0)); 905 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, allowed_urls, 0));
897 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); 906 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1));
898 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 907 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
899 908
900 extension->ClearTabSpecificHostPermissions(0); 909 extension->ClearTabSpecificPermissions(0);
901 EXPECT_EQ(NULL, extension->GetTabSpecificHostPermissions(0)); 910 EXPECT_FALSE(extension->GetTabSpecificPermissions(0).get());
902 911
903 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); 912 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0));
904 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); 913 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1));
905 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 914 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
906 915
907 std::set<GURL> more_allowed_urls = allowed_urls; 916 std::set<GURL> more_allowed_urls = allowed_urls;
908 more_allowed_urls.insert(https_url); 917 more_allowed_urls.insert(https_url);
909 URLPatternSet more_allowed_hosts = allowed_hosts; 918 URLPatternSet more_allowed_hosts = allowed_hosts;
910 more_allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, 919 more_allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL,
911 https_url.spec())); 920 https_url.spec()));
912 921
913 extension->SetTabSpecificHostPermissions(0, allowed_hosts); 922 {
914 EXPECT_EQ(allowed_hosts, *extension->GetTabSpecificHostPermissions(0)); 923 scoped_refptr<PermissionSet> permissions(
915 extension->SetTabSpecificHostPermissions(1, more_allowed_hosts); 924 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet()));
916 EXPECT_EQ(more_allowed_hosts, *extension->GetTabSpecificHostPermissions(1)); 925 extension->UpdateTabSpecificPermissions(0, permissions);
926 EXPECT_EQ(permissions->explicit_hosts(),
927 extension->GetTabSpecificPermissions(0)->explicit_hosts());
928
929 permissions = new PermissionSet(APIPermissionSet(),
930 more_allowed_hosts,
931 URLPatternSet());
932 extension->UpdateTabSpecificPermissions(1, permissions);
933 EXPECT_EQ(permissions->explicit_hosts(),
934 extension->GetTabSpecificPermissions(1)->explicit_hosts());
935 }
917 936
918 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, allowed_urls, 0)); 937 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, allowed_urls, 0));
919 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, more_allowed_urls, 1)); 938 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, more_allowed_urls, 1));
920 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 939 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
921 940
922 extension->ClearTabSpecificHostPermissions(0); 941 extension->ClearTabSpecificPermissions(0);
923 EXPECT_EQ(NULL, extension->GetTabSpecificHostPermissions(0)); 942 EXPECT_FALSE(extension->GetTabSpecificPermissions(0).get());
924 943
925 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); 944 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0));
926 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, more_allowed_urls, 1)); 945 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, more_allowed_urls, 1));
927 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 946 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
928 947
929 extension->ClearTabSpecificHostPermissions(1); 948 extension->ClearTabSpecificPermissions(1);
930 EXPECT_EQ(NULL, extension->GetTabSpecificHostPermissions(1)); 949 EXPECT_FALSE(extension->GetTabSpecificPermissions(1).get());
931 950
932 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); 951 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0));
933 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); 952 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1));
934 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 953 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
935 } 954 }
936 955
937 TEST(ExtensionTest, GenerateId) { 956 TEST(ExtensionTest, GenerateId) {
938 std::string result; 957 std::string result;
939 EXPECT_TRUE(Extension::GenerateId("", &result)); 958 EXPECT_TRUE(Extension::GenerateId("", &result));
940 959
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 } 1111 }
1093 1112
1094 TEST(ExtensionTest, GetSyncTypeExtensionWithTwoPlugins) { 1113 TEST(ExtensionTest, GetSyncTypeExtensionWithTwoPlugins) {
1095 scoped_refptr<Extension> extension( 1114 scoped_refptr<Extension> extension(
1096 MakeSyncTestExtension(EXTENSION, GURL(), GURL(), 1115 MakeSyncTestExtension(EXTENSION, GURL(), GURL(),
1097 Extension::INTERNAL, 2, FilePath())); 1116 Extension::INTERNAL, 2, FilePath()));
1098 if (extension) 1117 if (extension)
1099 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); 1118 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE);
1100 } 1119 }
1101 #endif // !defined(OS_CHROMEOS) 1120 #endif // !defined(OS_CHROMEOS)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698