| 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 "base/at_exit.h" | 5 #include "base/at_exit.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/observer_list.h" | 9 #include "base/observer_list.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 #if defined(ENABLE_PLUGINS) | 40 #if defined(ENABLE_PLUGINS) |
| 41 #include "content/public/browser/plugin_service.h" | 41 #include "content/public/browser/plugin_service.h" |
| 42 #include "content/public/browser/plugin_service_filter.h" | 42 #include "content/public/browser/plugin_service_filter.h" |
| 43 #include "content/public/common/webplugininfo.h" | 43 #include "content/public/common/webplugininfo.h" |
| 44 #endif | 44 #endif |
| 45 | 45 |
| 46 #if defined(ENABLE_EXTENSIONS) | 46 #if defined(ENABLE_EXTENSIONS) |
| 47 #include "extensions/common/extension.h" | 47 #include "extensions/common/extension.h" |
| 48 #endif | 48 #endif |
| 49 | 49 |
| 50 #if defined(OS_ANDROID) | |
| 51 #include "chrome/browser/android/download/mock_download_controller_android.h" | |
| 52 #endif | |
| 53 | |
| 54 using ::testing::AnyNumber; | 50 using ::testing::AnyNumber; |
| 55 using ::testing::Invoke; | 51 using ::testing::Invoke; |
| 56 using ::testing::Ref; | 52 using ::testing::Ref; |
| 57 using ::testing::Return; | 53 using ::testing::Return; |
| 58 using ::testing::ReturnRef; | 54 using ::testing::ReturnRef; |
| 59 using ::testing::ReturnRefOfCopy; | 55 using ::testing::ReturnRefOfCopy; |
| 60 using ::testing::Truly; | 56 using ::testing::Truly; |
| 61 using ::testing::WithArg; | 57 using ::testing::WithArg; |
| 62 using ::testing::_; | 58 using ::testing::_; |
| 63 using content::DownloadItem; | 59 using content::DownloadItem; |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 } | 250 } |
| 255 | 251 |
| 256 MockDownloadTargetDeterminerDelegate* delegate() { | 252 MockDownloadTargetDeterminerDelegate* delegate() { |
| 257 return &delegate_; | 253 return &delegate_; |
| 258 } | 254 } |
| 259 | 255 |
| 260 DownloadPrefs* download_prefs() { | 256 DownloadPrefs* download_prefs() { |
| 261 return download_prefs_.get(); | 257 return download_prefs_.get(); |
| 262 } | 258 } |
| 263 | 259 |
| 264 #if defined(OS_ANDROID) | |
| 265 chrome::android::MockDownloadControllerAndroid* download_controller() { | |
| 266 return &download_controller_; | |
| 267 } | |
| 268 #endif | |
| 269 | |
| 270 private: | 260 private: |
| 271 scoped_ptr<DownloadPrefs> download_prefs_; | 261 scoped_ptr<DownloadPrefs> download_prefs_; |
| 272 ::testing::NiceMock<MockDownloadTargetDeterminerDelegate> delegate_; | 262 ::testing::NiceMock<MockDownloadTargetDeterminerDelegate> delegate_; |
| 273 NullWebContentsDelegate web_contents_delegate_; | 263 NullWebContentsDelegate web_contents_delegate_; |
| 274 base::ScopedTempDir test_download_dir_; | 264 base::ScopedTempDir test_download_dir_; |
| 275 base::FilePath test_virtual_dir_; | 265 base::FilePath test_virtual_dir_; |
| 276 #if defined(OS_ANDROID) | |
| 277 chrome::android::MockDownloadControllerAndroid download_controller_; | |
| 278 #endif | |
| 279 }; | 266 }; |
| 280 | 267 |
| 281 void DownloadTargetDeterminerTest::SetUp() { | 268 void DownloadTargetDeterminerTest::SetUp() { |
| 282 ChromeRenderViewHostTestHarness::SetUp(); | 269 ChromeRenderViewHostTestHarness::SetUp(); |
| 283 CHECK(profile()); | 270 CHECK(profile()); |
| 284 download_prefs_.reset(new DownloadPrefs(profile())); | 271 download_prefs_.reset(new DownloadPrefs(profile())); |
| 285 web_contents()->SetDelegate(&web_contents_delegate_); | 272 web_contents()->SetDelegate(&web_contents_delegate_); |
| 286 ASSERT_TRUE(test_download_dir_.CreateUniqueTempDir()); | 273 ASSERT_TRUE(test_download_dir_.CreateUniqueTempDir()); |
| 287 test_virtual_dir_ = test_download_dir().Append(FILE_PATH_LITERAL("virtual")); | 274 test_virtual_dir_ = test_download_dir().Append(FILE_PATH_LITERAL("virtual")); |
| 288 download_prefs_->SetDownloadPath(test_download_dir()); | 275 download_prefs_->SetDownloadPath(test_download_dir()); |
| 289 delegate_.SetupDefaults(); | 276 delegate_.SetupDefaults(); |
| 290 #if defined(OS_ANDROID) | |
| 291 content::DownloadControllerAndroid::SetDownloadControllerAndroid( | |
| 292 &download_controller_); | |
| 293 #endif | |
| 294 } | 277 } |
| 295 | 278 |
| 296 void DownloadTargetDeterminerTest::TearDown() { | 279 void DownloadTargetDeterminerTest::TearDown() { |
| 297 download_prefs_.reset(); | 280 download_prefs_.reset(); |
| 298 #if defined(OS_ANDROID) | |
| 299 content::DownloadControllerAndroid::SetDownloadControllerAndroid(nullptr); | |
| 300 #endif | |
| 301 ChromeRenderViewHostTestHarness::TearDown(); | 281 ChromeRenderViewHostTestHarness::TearDown(); |
| 302 } | 282 } |
| 303 | 283 |
| 304 content::MockDownloadItem* | 284 content::MockDownloadItem* |
| 305 DownloadTargetDeterminerTest::CreateActiveDownloadItem( | 285 DownloadTargetDeterminerTest::CreateActiveDownloadItem( |
| 306 int32 id, | 286 int32 id, |
| 307 const DownloadTestCase& test_case) { | 287 const DownloadTestCase& test_case) { |
| 308 content::MockDownloadItem* item = | 288 content::MockDownloadItem* item = |
| 309 new ::testing::NiceMock<content::MockDownloadItem>(); | 289 new ::testing::NiceMock<content::MockDownloadItem>(); |
| 310 GURL download_url(test_case.url); | 290 GURL download_url(test_case.url); |
| (...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1167 }, | 1147 }, |
| 1168 }; | 1148 }; |
| 1169 | 1149 |
| 1170 SetPromptForDownload(true); | 1150 SetPromptForDownload(true); |
| 1171 EnableAutoOpenBasedOnExtension( | 1151 EnableAutoOpenBasedOnExtension( |
| 1172 base::FilePath(FILE_PATH_LITERAL("dummy.dummy"))); | 1152 base::FilePath(FILE_PATH_LITERAL("dummy.dummy"))); |
| 1173 RunTestCasesWithActiveItem(kPromptingTestCases, | 1153 RunTestCasesWithActiveItem(kPromptingTestCases, |
| 1174 arraysize(kPromptingTestCases)); | 1154 arraysize(kPromptingTestCases)); |
| 1175 } | 1155 } |
| 1176 | 1156 |
| 1177 #if defined(OS_ANDROID) | |
| 1178 TEST_F(DownloadTargetDeterminerTest, | |
| 1179 TargetDeterminer_DisapprovePromptForUserPermission) { | |
| 1180 const DownloadTestCase kUserPermissionTestCases[] = { | |
| 1181 { | |
| 1182 // 0: Automatic Safe | |
| 1183 AUTOMATIC, | |
| 1184 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | |
| 1185 "http://example.com/foo.txt", "text/plain", | |
| 1186 FILE_PATH_LITERAL(""), | |
| 1187 | |
| 1188 FILE_PATH_LITERAL(""), | |
| 1189 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | |
| 1190 | |
| 1191 EXPECT_LOCAL_PATH | |
| 1192 }, | |
| 1193 }; | |
| 1194 content::DownloadControllerAndroid::Get()-> | |
| 1195 SetApproveFileAccessRequestForTesting(false); | |
| 1196 RunTestCasesWithActiveItem(kUserPermissionTestCases, | |
| 1197 arraysize(kUserPermissionTestCases)); | |
| 1198 } | |
| 1199 #endif | |
| 1200 | |
| 1201 #if defined(ENABLE_EXTENSIONS) | 1157 #if defined(ENABLE_EXTENSIONS) |
| 1202 // These test cases are run with "Prompt for download" user preference set to | 1158 // These test cases are run with "Prompt for download" user preference set to |
| 1203 // true. Automatic extension downloads shouldn't cause prompting. | 1159 // true. Automatic extension downloads shouldn't cause prompting. |
| 1204 // Android doesn't support extensions. | 1160 // Android doesn't support extensions. |
| 1205 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways_Extension) { | 1161 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways_Extension) { |
| 1206 const DownloadTestCase kPromptingTestCases[] = { | 1162 const DownloadTestCase kPromptingTestCases[] = { |
| 1207 { | 1163 { |
| 1208 // 0: Automatic Browser Extension download. - Shouldn't prompt for browser | 1164 // 0: Automatic Browser Extension download. - Shouldn't prompt for browser |
| 1209 // extension downloads even if "Prompt for download" preference is set. | 1165 // extension downloads even if "Prompt for download" preference is set. |
| 1210 AUTOMATIC, | 1166 AUTOMATIC, |
| (...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2283 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(npapi_plugin.path())) | 2239 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(npapi_plugin.path())) |
| 2284 .WillRepeatedly(Return(true)); | 2240 .WillRepeatedly(Return(true)); |
| 2285 | 2241 |
| 2286 target_info = RunDownloadTargetDeterminer( | 2242 target_info = RunDownloadTargetDeterminer( |
| 2287 GetPathInDownloadDir(kInitialPath), item.get()); | 2243 GetPathInDownloadDir(kInitialPath), item.get()); |
| 2288 EXPECT_FALSE(target_info->is_filetype_handled_safely); | 2244 EXPECT_FALSE(target_info->is_filetype_handled_safely); |
| 2289 } | 2245 } |
| 2290 #endif // defined(ENABLE_PLUGINS) | 2246 #endif // defined(ENABLE_PLUGINS) |
| 2291 | 2247 |
| 2292 } // namespace | 2248 } // namespace |
| OLD | NEW |