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

Side by Side Diff: chrome/browser/download/download_browsertest.cc

Issue 2439533002: Download Feedback Service should upload all eligible downloads (Closed)
Patch Set: make windows bots happy Created 4 years, 1 month 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
« no previous file with comments | « no previous file | chrome/browser/ntp_snippets/fake_download_item.h » ('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) 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/browser/download/download_browsertest.h" 5 #include "chrome/browser/download/download_browsertest.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <sstream> 8 #include <sstream>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 #include "chrome/grit/generated_resources.h" 68 #include "chrome/grit/generated_resources.h"
69 #include "chrome/test/base/in_process_browser_test.h" 69 #include "chrome/test/base/in_process_browser_test.h"
70 #include "chrome/test/base/ui_test_utils.h" 70 #include "chrome/test/base/ui_test_utils.h"
71 #include "components/history/content/browser/download_constants_utils.h" 71 #include "components/history/content/browser/download_constants_utils.h"
72 #include "components/history/core/browser/download_constants.h" 72 #include "components/history/core/browser/download_constants.h"
73 #include "components/history/core/browser/download_row.h" 73 #include "components/history/core/browser/download_row.h"
74 #include "components/history/core/browser/history_service.h" 74 #include "components/history/core/browser/history_service.h"
75 #include "components/infobars/core/confirm_infobar_delegate.h" 75 #include "components/infobars/core/confirm_infobar_delegate.h"
76 #include "components/infobars/core/infobar.h" 76 #include "components/infobars/core/infobar.h"
77 #include "components/prefs/pref_service.h" 77 #include "components/prefs/pref_service.h"
78 #include "components/safe_browsing_db/safe_browsing_prefs.h"
78 #include "content/public/browser/download_danger_type.h" 79 #include "content/public/browser/download_danger_type.h"
79 #include "content/public/browser/download_interrupt_reasons.h" 80 #include "content/public/browser/download_interrupt_reasons.h"
80 #include "content/public/browser/download_item.h" 81 #include "content/public/browser/download_item.h"
81 #include "content/public/browser/download_manager.h" 82 #include "content/public/browser/download_manager.h"
82 #include "content/public/browser/download_save_info.h" 83 #include "content/public/browser/download_save_info.h"
83 #include "content/public/browser/download_url_parameters.h" 84 #include "content/public/browser/download_url_parameters.h"
84 #include "content/public/browser/notification_source.h" 85 #include "content/public/browser/notification_source.h"
85 #include "content/public/browser/render_frame_host.h" 86 #include "content/public/browser/render_frame_host.h"
86 #include "content/public/browser/render_view_host.h" 87 #include "content/public/browser/render_view_host.h"
87 #include "content/public/browser/render_widget_host.h" 88 #include "content/public/browser/render_widget_host.h"
(...skipping 3215 matching lines...) Expand 10 before | Expand all | Expand 10 after
3303 ASSERT_EQ(1u, downloads.size()); 3304 ASSERT_EQ(1u, downloads.size());
3304 3305
3305 DownloadItem* download = downloads[0]; 3306 DownloadItem* download = downloads[0];
3306 EXPECT_FALSE(download->IsDangerous()); 3307 EXPECT_FALSE(download->IsDangerous());
3307 EXPECT_EQ(content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, 3308 EXPECT_EQ(content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
3308 download->GetDangerType()); 3309 download->GetDangerType());
3309 3310
3310 download->Cancel(true); 3311 download->Cancel(true);
3311 } 3312 }
3312 3313
3313 IN_PROC_BROWSER_TEST_F(DownloadTest, FeedbackService) { 3314 IN_PROC_BROWSER_TEST_F(DownloadTest, FeedbackServiceDiscardDownload) {
3315 PrefService* prefs = browser()->profile()->GetPrefs();
3316 prefs->SetBoolean(prefs::kSafeBrowsingEnabled, true);
3317 safe_browsing::SetExtendedReportingPref(prefs, true);
3318
3314 // Make a dangerous file. 3319 // Make a dangerous file.
3315 GURL download_url(net::URLRequestMockHTTPJob::GetMockUrl( 3320 GURL download_url(net::URLRequestMockHTTPJob::GetMockUrl(
3316 "downloads/dangerous/dangerous.swf")); 3321 "downloads/dangerous/dangerous.swf"));
3317 std::unique_ptr<content::DownloadTestObserverInterrupted> observer( 3322 std::unique_ptr<content::DownloadTestObserverInterrupted> observer(
3318 new content::DownloadTestObserverInterrupted( 3323 new content::DownloadTestObserverInterrupted(
3319 DownloadManagerForBrowser(browser()), 1, 3324 DownloadManagerForBrowser(browser()), 1,
3320 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_QUIT)); 3325 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_QUIT));
3321 ui_test_utils::NavigateToURLWithDisposition( 3326 ui_test_utils::NavigateToURLWithDisposition(
3322 browser(), GURL(download_url), WindowOpenDisposition::NEW_BACKGROUND_TAB, 3327 browser(), GURL(download_url), WindowOpenDisposition::NEW_BACKGROUND_TAB,
3323 ui_test_utils::BROWSER_TEST_NONE); 3328 ui_test_utils::BROWSER_TEST_NONE);
(...skipping 23 matching lines...) Expand all
3347 download_protection_service->feedback_service()->MaybeStorePingsForDownload( 3352 download_protection_service->feedback_service()->MaybeStorePingsForDownload(
3348 safe_browsing::DownloadProtectionService::UNCOMMON, 3353 safe_browsing::DownloadProtectionService::UNCOMMON,
3349 downloads[0], 3354 downloads[0],
3350 ping_request, 3355 ping_request,
3351 ping_response); 3356 ping_response);
3352 ASSERT_TRUE(safe_browsing::DownloadFeedbackService::IsEnabledForDownload( 3357 ASSERT_TRUE(safe_browsing::DownloadFeedbackService::IsEnabledForDownload(
3353 *(downloads[0]))); 3358 *(downloads[0])));
3354 3359
3355 // Begin feedback and check that the file is "stolen". 3360 // Begin feedback and check that the file is "stolen".
3356 download_protection_service->feedback_service()->BeginFeedbackForDownload( 3361 download_protection_service->feedback_service()->BeginFeedbackForDownload(
3357 downloads[0]); 3362 downloads[0], DownloadCommands::DISCARD);
3358 std::vector<DownloadItem*> updated_downloads; 3363 std::vector<DownloadItem*> updated_downloads;
3359 GetDownloads(browser(), &updated_downloads); 3364 GetDownloads(browser(), &updated_downloads);
3360 ASSERT_TRUE(updated_downloads.empty()); 3365 ASSERT_TRUE(updated_downloads.empty());
3361 } 3366 }
3362 3367
3363 IN_PROC_BROWSER_TEST_F( 3368 IN_PROC_BROWSER_TEST_F(DownloadTest, FeedbackServiceKeepDownload) {
3364 DownloadTestWithFakeSafeBrowsing, 3369 PrefService* prefs = browser()->profile()->GetPrefs();
3365 SendUncommonDownloadReportIfUserProceed) { 3370 prefs->SetBoolean(prefs::kSafeBrowsingEnabled, true);
3371 safe_browsing::SetExtendedReportingPref(prefs, true);
3372
3373 // Make a dangerous file.
3374 GURL download_url(net::URLRequestMockHTTPJob::GetMockUrl(
3375 "downloads/dangerous/dangerous.swf"));
3376 std::unique_ptr<content::DownloadTestObserverInterrupted>
3377 interruption_observer(new content::DownloadTestObserverInterrupted(
3378 DownloadManagerForBrowser(browser()), 1,
3379 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_QUIT));
3380 ui_test_utils::NavigateToURLWithDisposition(
3381 browser(), GURL(download_url), WindowOpenDisposition::NEW_BACKGROUND_TAB,
3382 ui_test_utils::BROWSER_TEST_NONE);
3383 interruption_observer->WaitForFinished();
3384
3385 // Get the download from the DownloadManager.
3386 std::vector<DownloadItem*> downloads;
3387 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads);
3388 ASSERT_EQ(1u, downloads.size());
3389 EXPECT_TRUE(downloads[0]->IsDangerous());
3390
3391 // Save fake pings for the download.
3392 safe_browsing::ClientDownloadReport fake_metadata;
3393 fake_metadata.mutable_download_request()->set_url("http://test");
3394 fake_metadata.mutable_download_request()->set_length(1);
3395 fake_metadata.mutable_download_request()->mutable_digests()->set_sha1("hi");
3396 fake_metadata.mutable_download_response()->set_verdict(
3397 safe_browsing::ClientDownloadResponse::UNCOMMON);
3398 std::string ping_request(
3399 fake_metadata.download_request().SerializeAsString());
3400 std::string ping_response(
3401 fake_metadata.download_response().SerializeAsString());
3402 safe_browsing::SafeBrowsingService* sb_service =
3403 g_browser_process->safe_browsing_service();
3404 safe_browsing::DownloadProtectionService* download_protection_service =
3405 sb_service->download_protection_service();
3406 download_protection_service->feedback_service()->MaybeStorePingsForDownload(
3407 safe_browsing::DownloadProtectionService::UNCOMMON, downloads[0],
3408 ping_request, ping_response);
3409 ASSERT_TRUE(safe_browsing::DownloadFeedbackService::IsEnabledForDownload(
3410 *(downloads[0])));
3411
3412 // Begin feedback and check that file is still there.
3413 download_protection_service->feedback_service()->BeginFeedbackForDownload(
3414 downloads[0], DownloadCommands::KEEP);
3415
3416 std::vector<DownloadItem*> updated_downloads;
3417 GetDownloads(browser(), &updated_downloads);
3418 ASSERT_EQ(std::size_t(1), updated_downloads.size());
3419 ASSERT_FALSE(updated_downloads[0]->IsDangerous());
3420 ASSERT_TRUE(PathExists(updated_downloads[0]->GetFullPath()));
3421 updated_downloads[0]->Cancel(true);
3422 }
3423
3424 IN_PROC_BROWSER_TEST_F(DownloadTestWithFakeSafeBrowsing,
3425 SendUncommonDownloadReportIfUserProceed) {
3366 browser()->profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, 3426 browser()->profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled,
3367 true); 3427 true);
3368 // Make a dangerous file. 3428 // Make a dangerous file.
3369 GURL download_url( 3429 GURL download_url(
3370 net::URLRequestMockHTTPJob::GetMockUrl(kDangerousMockFilePath)); 3430 net::URLRequestMockHTTPJob::GetMockUrl(kDangerousMockFilePath));
3371 std::unique_ptr<content::DownloadTestObserver> dangerous_observer( 3431 std::unique_ptr<content::DownloadTestObserver> dangerous_observer(
3372 DangerousDownloadWaiter( 3432 DangerousDownloadWaiter(
3373 browser(), 1, 3433 browser(), 1,
3374 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_QUIT)); 3434 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_QUIT));
3375 ui_test_utils::NavigateToURL(browser(), download_url); 3435 ui_test_utils::NavigateToURL(browser(), download_url);
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
3666 browser(), 1, 3726 browser(), 1,
3667 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); 3727 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY));
3668 ui_test_utils::NavigateToURL(browser(), extension_url); 3728 ui_test_utils::NavigateToURL(browser(), extension_url);
3669 3729
3670 observer->WaitForFinished(); 3730 observer->WaitForFinished();
3671 3731
3672 // Download shelf should close. 3732 // Download shelf should close.
3673 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); 3733 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible());
3674 } 3734 }
3675 #endif // defined(OS_CHROMEOS) 3735 #endif // defined(OS_CHROMEOS)
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ntp_snippets/fake_download_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698