Index: chrome/common/safe_browsing/file_type_policies_unittest.cc |
diff --git a/chrome/common/safe_browsing/file_type_policies_unittest.cc b/chrome/common/safe_browsing/file_type_policies_unittest.cc |
index e77f5993edfa8859435950fc05efe439b7562fa0..7ab64baa4ef11bf751d7bd54887246d58d25b841 100644 |
--- a/chrome/common/safe_browsing/file_type_policies_unittest.cc |
+++ b/chrome/common/safe_browsing/file_type_policies_unittest.cc |
@@ -42,35 +42,134 @@ TEST_F(FileTypePoliciesTest, UnpackResourceBundle) { |
"ResourceBundle")); |
policies_.PopulateFromResourceBundle(); |
- // Look up a well known type to ensure it's present. |
+ // Look up a few well known types to ensure they're present. |
+ // Some types vary by OS, and we check one per OS to validate |
+ // that gen_file_type_proto.py does its job. |
+ // |
+ // NOTE: If the settings for these change in download_file_types.asciipb, |
+ // then you'll need to change them here as well. |
+ |
+ // Lookup .exe that varies on OS_WIN. |
base::FilePath exe_file(FILE_PATH_LITERAL("a/foo.exe")); |
DownloadFileType file_type = policies_.PolicyForFile(exe_file); |
EXPECT_EQ("exe", file_type.extension()); |
EXPECT_EQ(0l, file_type.uma_value()); |
EXPECT_EQ(false, file_type.is_archive()); |
+ EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); |
+#if defined(OS_WIN) |
EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
file_type.platform_settings(0).danger_level()); |
EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, |
file_type.platform_settings(0).auto_open_hint()); |
- EXPECT_EQ(DownloadFileType::FULL_PING, |
- file_type.platform_settings(0).ping_setting()); |
+#else |
+ EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#endif |
+ |
+ // Lookup .class that varies on OS_CHROMEOS, and also has a |
+ // default setting set. |
+ base::FilePath class_file(FILE_PATH_LITERAL("foo.class")); |
+ file_type = policies_.PolicyForFile(class_file); |
+ EXPECT_EQ("class", file_type.extension()); |
+ EXPECT_EQ(13l, file_type.uma_value()); |
+ EXPECT_EQ(false, file_type.is_archive()); |
+ EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); |
+#if defined(OS_CHROMEOS) |
+ EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#else |
+ EXPECT_EQ(DownloadFileType::DANGEROUS, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#endif |
+ |
+ // Lookup .dmg that varies on OS_MACOS |
+ base::FilePath dmg_file(FILE_PATH_LITERAL("foo.dmg")); |
+ file_type = policies_.PolicyForFile(dmg_file); |
+ EXPECT_EQ("dmg", file_type.extension()); |
+ EXPECT_EQ(21, file_type.uma_value()); |
+ EXPECT_EQ(false, file_type.is_archive()); |
+ EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); |
+#if defined(OS_MACOSX) |
+ EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#else |
+ EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#endif |
+ |
+ // Lookup .dex that varies on OS_ANDROID |
+ base::FilePath dex_file(FILE_PATH_LITERAL("foo.dex")); |
+ file_type = policies_.PolicyForFile(dex_file); |
+ EXPECT_EQ("dex", file_type.extension()); |
+ EXPECT_EQ(143, file_type.uma_value()); |
+ EXPECT_EQ(false, file_type.is_archive()); |
+ EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); |
+#if defined(OS_ANDROID) |
+ EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#else |
+ EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#endif |
+ |
+ // Lookup .rpm that varies on OS_LINUX |
+ base::FilePath rpm_file(FILE_PATH_LITERAL("foo.rpm")); |
+ file_type = policies_.PolicyForFile(rpm_file); |
+ EXPECT_EQ("rpm", file_type.extension()); |
+ EXPECT_EQ(142, file_type.uma_value()); |
+ EXPECT_EQ(false, file_type.is_archive()); |
+ EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); |
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
+ EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#else |
+ EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, |
+ file_type.platform_settings(0).danger_level()); |
+ EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, |
+ file_type.platform_settings(0).auto_open_hint()); |
+#endif |
+ |
+ // Look .zip, an archive. The same on all platforms. |
+ base::FilePath zip_file(FILE_PATH_LITERAL("b/bar.txt.zip")); |
+ file_type = policies_.PolicyForFile(zip_file); |
+ EXPECT_EQ("zip", file_type.extension()); |
+ EXPECT_EQ(7l, file_type.uma_value()); |
+ EXPECT_EQ(true, file_type.is_archive()); |
+ EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); |
+ EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, |
+ file_type.platform_settings(0).danger_level()); |
// Check other accessors |
- EXPECT_EQ(0l, policies_.UmaValueForFile(exe_file)); |
- EXPECT_EQ(false, policies_.IsFileAnArchive(exe_file)); |
+ EXPECT_EQ(7l, policies_.UmaValueForFile(zip_file)); |
+ EXPECT_EQ(true, policies_.IsFileAnArchive(zip_file)); |
- // Verify settings on default type. |
+ // Verify settings on the default type. |
file_type = policies_.PolicyForFile( |
base::FilePath(FILE_PATH_LITERAL("a/foo.fooobar"))); |
EXPECT_EQ("", file_type.extension()); |
EXPECT_EQ(18l, file_type.uma_value()); |
EXPECT_EQ(false, file_type.is_archive()); |
- EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
+ EXPECT_EQ(DownloadFileType::SAMPLED_PING, file_type.ping_setting()); |
+ EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, |
file_type.platform_settings(0).danger_level()); |
- EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, |
+ EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, |
file_type.platform_settings(0).auto_open_hint()); |
- EXPECT_EQ(DownloadFileType::SAMPLED_PING, |
- file_type.platform_settings(0).ping_setting()); |
} |
TEST_F(FileTypePoliciesTest, BadProto) { |