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

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

Issue 12578008: Move CrxFile, FileReader, ExtensionResource to src/extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 9 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
« no previous file with comments | « chrome/common/extensions/extension_test_util.cc ('k') | chrome/common/extensions/unpacker.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
11 #include "base/json/json_file_value_serializer.h" 11 #include "base/json/json_file_value_serializer.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/stringprintf.h" 13 #include "base/stringprintf.h"
14 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
15 #include "base/utf_string_conversions.h" 15 #include "base/utf_string_conversions.h"
16 #include "chrome/common/chrome_paths.h" 16 #include "chrome/common/chrome_paths.h"
17 #include "chrome/common/chrome_switches.h" 17 #include "chrome/common/chrome_switches.h"
18 #include "chrome/common/extensions/api/commands/commands_handler.h" 18 #include "chrome/common/extensions/api/commands/commands_handler.h"
19 #include "chrome/common/extensions/api/plugins/plugins_handler.h" 19 #include "chrome/common/extensions/api/plugins/plugins_handler.h"
20 #include "chrome/common/extensions/background_info.h" 20 #include "chrome/common/extensions/background_info.h"
21 #include "chrome/common/extensions/command.h" 21 #include "chrome/common/extensions/command.h"
22 #include "chrome/common/extensions/extension_file_util.h" 22 #include "chrome/common/extensions/extension_file_util.h"
23 #include "chrome/common/extensions/extension_manifest_constants.h" 23 #include "chrome/common/extensions/extension_manifest_constants.h"
24 #include "chrome/common/extensions/extension_resource.h"
25 #include "chrome/common/extensions/features/feature.h" 24 #include "chrome/common/extensions/features/feature.h"
26 #include "chrome/common/extensions/manifest.h" 25 #include "chrome/common/extensions/manifest.h"
27 #include "chrome/common/extensions/manifest_handler.h" 26 #include "chrome/common/extensions/manifest_handler.h"
28 #include "chrome/common/extensions/permissions/api_permission.h" 27 #include "chrome/common/extensions/permissions/api_permission.h"
29 #include "chrome/common/extensions/permissions/permission_set.h" 28 #include "chrome/common/extensions/permissions/permission_set.h"
30 #include "chrome/common/extensions/permissions/socket_permission.h" 29 #include "chrome/common/extensions/permissions/socket_permission.h"
31 #include "chrome/common/extensions/permissions/usb_device_permission.h" 30 #include "chrome/common/extensions/permissions/usb_device_permission.h"
32 #include "chrome/common/url_constants.h" 31 #include "chrome/common/url_constants.h"
33 #include "extensions/common/error_utils.h" 32 #include "extensions/common/error_utils.h"
33 #include "extensions/common/extension_resource.h"
34 #include "extensions/common/id_util.h"
34 #include "googleurl/src/gurl.h" 35 #include "googleurl/src/gurl.h"
35 #include "net/base/mime_sniffer.h" 36 #include "net/base/mime_sniffer.h"
36 #include "net/dns/mock_host_resolver.h" 37 #include "net/dns/mock_host_resolver.h"
37 #include "skia/ext/image_operations.h" 38 #include "skia/ext/image_operations.h"
38 #include "testing/gtest/include/gtest/gtest.h" 39 #include "testing/gtest/include/gtest/gtest.h"
39 #include "third_party/skia/include/core/SkBitmap.h" 40 #include "third_party/skia/include/core/SkBitmap.h"
40 #include "ui/gfx/codec/png_codec.h" 41 #include "ui/gfx/codec/png_codec.h"
41 42
42 using content::SocketPermissionRequest; 43 using content::SocketPermissionRequest;
43 44
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 EXPECT_TRUE(Extension::IdIsValid("pppppppppppppppppppppppppppppppp")); 208 EXPECT_TRUE(Extension::IdIsValid("pppppppppppppppppppppppppppppppp"));
208 EXPECT_TRUE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnop")); 209 EXPECT_TRUE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnop"));
209 EXPECT_TRUE(Extension::IdIsValid("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")); 210 EXPECT_TRUE(Extension::IdIsValid("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"));
210 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno")); 211 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno"));
211 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnopa")); 212 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnopa"));
212 EXPECT_FALSE(Extension::IdIsValid("0123456789abcdef0123456789abcdef")); 213 EXPECT_FALSE(Extension::IdIsValid("0123456789abcdef0123456789abcdef"));
213 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnoq")); 214 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnoq"));
214 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno0")); 215 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno0"));
215 } 216 }
216 217
217 TEST_F(ExtensionTest, GenerateID) {
218 const uint8 public_key_info[] = {
219 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
220 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81,
221 0x89, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b, 0x20, 0xdc, 0x7c, 0x9b,
222 0x0c, 0xdc, 0x51, 0x61, 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08,
223 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64, 0x85, 0x7b, 0x0c, 0x04,
224 0x13, 0x3f, 0x8d, 0xf4, 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a,
225 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f, 0x9e, 0x36, 0x74, 0x30,
226 0xda, 0x8a, 0x31, 0x4f, 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17,
227 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5, 0xb2, 0x65, 0x7a, 0x89,
228 0x4e, 0xb6, 0x47, 0xff, 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85,
229 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9, 0x96, 0xd0, 0xd6, 0x14,
230 0x6f, 0x13, 0x8d, 0xc5, 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18,
231 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93, 0xe7, 0x1f, 0x0f, 0xe6,
232 0x0f, 0x02, 0x03, 0x01, 0x00, 0x01
233 };
234
235 std::string extension_id;
236 EXPECT_TRUE(
237 Extension::GenerateId(
238 std::string(reinterpret_cast<const char*>(&public_key_info[0]),
239 arraysize(public_key_info)),
240 &extension_id));
241 EXPECT_EQ("melddjfinppjdikinhbgehiennejpfhp", extension_id);
242 }
243 218
244 // This test ensures that the mimetype sniffing code stays in sync with the 219 // This test ensures that the mimetype sniffing code stays in sync with the
245 // actual crx files that we test other parts of the system with. 220 // actual crx files that we test other parts of the system with.
246 TEST_F(ExtensionTest, MimeTypeSniffing) { 221 TEST_F(ExtensionTest, MimeTypeSniffing) {
247 base::FilePath path; 222 base::FilePath path;
248 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &path)); 223 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &path));
249 path = path.AppendASCII("extensions").AppendASCII("good.crx"); 224 path = path.AppendASCII("extensions").AppendASCII("good.crx");
250 225
251 std::string data; 226 std::string data;
252 ASSERT_TRUE(file_util::ReadFileToString(path, &data)); 227 ASSERT_TRUE(file_util::ReadFileToString(path, &data));
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 // methods of Extension for extensions with various permissions. 539 // methods of Extension for extensions with various permissions.
565 class ExtensionScriptAndCaptureVisibleTest : public testing::Test { 540 class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
566 protected: 541 protected:
567 ExtensionScriptAndCaptureVisibleTest() 542 ExtensionScriptAndCaptureVisibleTest()
568 : http_url("http://www.google.com"), 543 : http_url("http://www.google.com"),
569 http_url_with_path("http://www.google.com/index.html"), 544 http_url_with_path("http://www.google.com/index.html"),
570 https_url("https://www.google.com"), 545 https_url("https://www.google.com"),
571 file_url("file:///foo/bar"), 546 file_url("file:///foo/bar"),
572 favicon_url("chrome://favicon/http://www.google.com"), 547 favicon_url("chrome://favicon/http://www.google.com"),
573 extension_url("chrome-extension://" + 548 extension_url("chrome-extension://" +
574 Extension::GenerateIdForPath( 549 id_util::GenerateIdForPath(
575 base::FilePath(FILE_PATH_LITERAL("foo")))), 550 base::FilePath(FILE_PATH_LITERAL("foo")))),
576 settings_url("chrome://settings"), 551 settings_url("chrome://settings"),
577 about_url("about:flags") { 552 about_url("about:flags") {
578 urls_.insert(http_url); 553 urls_.insert(http_url);
579 urls_.insert(http_url_with_path); 554 urls_.insert(http_url_with_path);
580 urls_.insert(https_url); 555 urls_.insert(https_url);
581 urls_.insert(file_url); 556 urls_.insert(file_url);
582 urls_.insert(favicon_url); 557 urls_.insert(favicon_url);
583 urls_.insert(extension_url); 558 urls_.insert(extension_url);
584 urls_.insert(settings_url); 559 urls_.insert(settings_url);
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 894 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
920 895
921 extension->ClearTabSpecificPermissions(1); 896 extension->ClearTabSpecificPermissions(1);
922 EXPECT_FALSE(extension->GetTabSpecificPermissions(1).get()); 897 EXPECT_FALSE(extension->GetTabSpecificPermissions(1).get());
923 898
924 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); 899 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0));
925 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); 900 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1));
926 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); 901 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
927 } 902 }
928 903
929 TEST_F(ExtensionTest, GenerateId) {
930 std::string result;
931 EXPECT_TRUE(Extension::GenerateId("", &result));
932
933 EXPECT_TRUE(Extension::GenerateId("test", &result));
934 EXPECT_EQ(result, "jpignaibiiemhngfjkcpokkamffknabf");
935
936 EXPECT_TRUE(Extension::GenerateId("_", &result));
937 EXPECT_EQ(result, "ncocknphbhhlhkikpnnlmbcnbgdempcd");
938
939 EXPECT_TRUE(Extension::GenerateId(
940 "this_string_is_longer_than_a_single_sha256_hash_digest", &result));
941 EXPECT_EQ(result, "jimneklojkjdibfkgiiophfhjhbdgcfi");
942 }
943
944 namespace { 904 namespace {
945 enum SyncTestExtensionType { 905 enum SyncTestExtensionType {
946 EXTENSION, 906 EXTENSION,
947 APP, 907 APP,
948 USER_SCRIPT, 908 USER_SCRIPT,
949 THEME 909 THEME
950 }; 910 };
951 911
952 static scoped_refptr<Extension> MakeSyncTestExtension( 912 static scoped_refptr<Extension> MakeSyncTestExtension(
953 SyncTestExtensionType type, 913 SyncTestExtensionType type,
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 scoped_refptr<Extension> extension( 1146 scoped_refptr<Extension> extension(
1187 MakeSyncTestExtension(EXTENSION, GURL(), GURL(), 1147 MakeSyncTestExtension(EXTENSION, GURL(), GURL(),
1188 Manifest::INTERNAL, 2, base::FilePath(), 1148 Manifest::INTERNAL, 2, base::FilePath(),
1189 Extension::NO_FLAGS)); 1149 Extension::NO_FLAGS));
1190 if (extension) 1150 if (extension)
1191 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); 1151 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE);
1192 } 1152 }
1193 #endif // !defined(OS_CHROMEOS) 1153 #endif // !defined(OS_CHROMEOS)
1194 1154
1195 } // namespace extensions 1155 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension_test_util.cc ('k') | chrome/common/extensions/unpacker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698