Index: chrome/browser/download/download_target_determiner_unittest.cc |
diff --git a/chrome/browser/download/download_target_determiner_unittest.cc b/chrome/browser/download/download_target_determiner_unittest.cc |
index 53812ab44cd80554c8380d329f82789700d6c961..e62dbc66e569415d733be05fa7cab754bf1f83e4 100644 |
--- a/chrome/browser/download/download_target_determiner_unittest.cc |
+++ b/chrome/browser/download/download_target_determiner_unittest.cc |
@@ -47,6 +47,10 @@ |
#include "extensions/common/extension.h" |
#endif |
+#if defined(OS_ANDROID) |
+#include "chrome/browser/android/download/mock_download_controller_android.h" |
+#endif |
+ |
using ::testing::AnyNumber; |
using ::testing::Invoke; |
using ::testing::Ref; |
@@ -257,12 +261,21 @@ class DownloadTargetDeterminerTest : public ChromeRenderViewHostTestHarness { |
return download_prefs_.get(); |
} |
+#if defined(OS_ANDROID) |
+ chrome::android::MockDownloadControllerAndroid* download_controller() { |
+ return &download_controller_; |
+ } |
+#endif |
+ |
private: |
scoped_ptr<DownloadPrefs> download_prefs_; |
::testing::NiceMock<MockDownloadTargetDeterminerDelegate> delegate_; |
NullWebContentsDelegate web_contents_delegate_; |
base::ScopedTempDir test_download_dir_; |
base::FilePath test_virtual_dir_; |
+#if defined(OS_ANDROID) |
+ chrome::android::MockDownloadControllerAndroid download_controller_; |
+#endif |
}; |
void DownloadTargetDeterminerTest::SetUp() { |
@@ -274,10 +287,17 @@ void DownloadTargetDeterminerTest::SetUp() { |
test_virtual_dir_ = test_download_dir().Append(FILE_PATH_LITERAL("virtual")); |
download_prefs_->SetDownloadPath(test_download_dir()); |
delegate_.SetupDefaults(); |
+#if defined(OS_ANDROID) |
+ content::DownloadControllerAndroid::SetDownloadControllerAndroid( |
+ &download_controller_); |
+#endif |
} |
void DownloadTargetDeterminerTest::TearDown() { |
download_prefs_.reset(); |
+#if defined(OS_ANDROID) |
+ content::DownloadControllerAndroid::SetDownloadControllerAndroid(nullptr); |
+#endif |
ChromeRenderViewHostTestHarness::TearDown(); |
} |
@@ -1154,6 +1174,30 @@ TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways) { |
arraysize(kPromptingTestCases)); |
} |
+#if defined(OS_ANDROID) |
+TEST_F(DownloadTargetDeterminerTest, |
+ TargetDeterminer_DisapprovePromptForUserPermission) { |
+ const DownloadTestCase kUserPermissionTestCases[] = { |
+ { |
+ // 0: Automatic Safe |
+ AUTOMATIC, |
+ content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
+ "http://example.com/foo.txt", "text/plain", |
+ FILE_PATH_LITERAL(""), |
+ |
+ FILE_PATH_LITERAL(""), |
+ DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
+ |
+ EXPECT_LOCAL_PATH |
+ }, |
+ }; |
+ content::DownloadControllerAndroid::Get()-> |
+ SetApproveFileAccessRequestForTesting(false); |
+ RunTestCasesWithActiveItem(kUserPermissionTestCases, |
+ arraysize(kUserPermissionTestCases)); |
+} |
+#endif |
+ |
#if defined(ENABLE_EXTENSIONS) |
// These test cases are run with "Prompt for download" user preference set to |
// true. Automatic extension downloads shouldn't cause prompting. |