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

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

Issue 1675533002: Make the download request limiter listen to content settings changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 10 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
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_request_limiter.h" 5 #include "chrome/browser/download/download_request_limiter.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
11 #include "chrome/browser/chrome_notification_types.h"
11 #include "chrome/common/chrome_switches.h" 12 #include "chrome/common/chrome_switches.h"
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 13 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
13 #include "chrome/test/base/testing_profile.h" 14 #include "chrome/test/base/testing_profile.h"
14 #include "components/content_settings/core/browser/host_content_settings_map.h" 15 #include "components/content_settings/core/browser/host_content_settings_map.h"
15 #include "content/public/browser/navigation_controller.h" 16 #include "content/public/browser/navigation_controller.h"
16 #include "content/public/browser/navigation_details.h" 17 #include "content/public/browser/navigation_details.h"
18 #include "content/public/browser/notification_service.h"
19 #include "content/public/browser/notification_source.h"
17 #include "content/public/browser/web_contents.h" 20 #include "content/public/browser/web_contents.h"
18 #include "content/public/common/frame_navigate_params.h" 21 #include "content/public/common/frame_navigate_params.h"
19 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
20 23
21 #if defined(OS_ANDROID) 24 #if defined(OS_ANDROID)
22 #include "chrome/browser/download/download_request_infobar_delegate_android.h" 25 #include "chrome/browser/download/download_request_infobar_delegate_android.h"
23 #include "chrome/browser/infobars/infobar_service.h" 26 #include "chrome/browser/infobars/infobar_service.h"
24 #else 27 #else
25 #include "chrome/browser/download/download_permission_request.h" 28 #include "chrome/browser/download/download_permission_request.h"
26 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h" 29 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h"
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 int expect_cancels, 191 int expect_cancels,
189 int expect_asks, 192 int expect_asks,
190 int line) { 193 int line) {
191 EXPECT_EQ(expect_continues, continue_count_) << "line " << line; 194 EXPECT_EQ(expect_continues, continue_count_) << "line " << line;
192 EXPECT_EQ(expect_cancels, cancel_count_) << "line " << line; 195 EXPECT_EQ(expect_cancels, cancel_count_) << "line " << line;
193 EXPECT_EQ(expect_asks, AskAllowCount()) << "line " << line; 196 EXPECT_EQ(expect_asks, AskAllowCount()) << "line " << line;
194 continue_count_ = cancel_count_ = 0; 197 continue_count_ = cancel_count_ = 0;
195 testing_delegate_.ResetCounts(); 198 testing_delegate_.ResetCounts();
196 } 199 }
197 200
201 void UpdateContentSettings(WebContents* web_contents,
202 ContentSetting setting) {
203 // Ensure a download state exists.
204 download_request_limiter_->GetDownloadState(web_contents, NULL, true);
asanka 2016/02/08 15:02:14 NULL -> nullptr
dominickn 2016/02/11 01:25:53 Done. Also updated other uses in this file.
205 SetHostContentSetting(web_contents, setting);
206
207 content::NotificationService::current()->Notify(
208 chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED,
209 content::Source<WebContents>(web_contents),
210 content::NotificationService::NoDetails());
211 }
212
198 protected: 213 protected:
199 void ContinueDownload(bool allow) { 214 void ContinueDownload(bool allow) {
200 if (allow) { 215 if (allow) {
201 continue_count_++; 216 continue_count_++;
202 } else { 217 } else {
203 cancel_count_++; 218 cancel_count_++;
204 } 219 }
205 } 220 }
206 221
207 void SetHostContentSetting(WebContents* contents, ContentSetting setting) { 222 void SetHostContentSetting(WebContents* contents, ContentSetting setting) {
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 CanDownload(); 493 CanDownload();
479 ExpectAndResetCounts(0, 1, 0, __LINE__); 494 ExpectAndResetCounts(0, 1, 0, __LINE__);
480 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 495 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
481 download_request_limiter_->GetDownloadStatus(web_contents())); 496 download_request_limiter_->GetDownloadStatus(web_contents()));
482 497
483 CanDownload(); 498 CanDownload();
484 ExpectAndResetCounts(0, 1, 0, __LINE__); 499 ExpectAndResetCounts(0, 1, 0, __LINE__);
485 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 500 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
486 download_request_limiter_->GetDownloadStatus(web_contents())); 501 download_request_limiter_->GetDownloadStatus(web_contents()));
487 } 502 }
503
504 TEST_F(DownloadRequestLimiterTest,
505 DownloadRequestLimiter_ContentSettingChanged) {
asanka 2016/02/08 15:02:14 The current behavior doesn't reset the download co
dominickn 2016/02/11 01:25:53 Not sure I understood this 100%, but I added a bun
506 NavigateAndCommit(GURL("http://foo.com/bar"));
507 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
508 download_request_limiter_->GetDownloadStatus(web_contents()));
509
510 // Set the content setting to allow and send the notification. Ensure that the
511 // limiter states update to match.
512 UpdateContentSettings(web_contents(), CONTENT_SETTING_ALLOW);
513 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
514 download_request_limiter_->GetDownloadStatus(web_contents()));
515
516 // Ask to download and assert we are still in allow.
517 CanDownload();
518 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
519 download_request_limiter_->GetDownloadStatus(web_contents()));
520
521 // Set the content setting to block and send the notification. Ensure that the
522 // limiter states updates to match.
523 UpdateContentSettings(web_contents(), CONTENT_SETTING_BLOCK);
524 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
525 download_request_limiter_->GetDownloadStatus(web_contents()));
526
527 // Check that block to allow works as expected.
528 UpdateContentSettings(web_contents(), CONTENT_SETTING_ALLOW);
529 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
530 download_request_limiter_->GetDownloadStatus(web_contents()));
531
532 // Reset to ask.
533 UpdateContentSettings(web_contents(), CONTENT_SETTING_ASK);
534 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
535 download_request_limiter_->GetDownloadStatus(web_contents()));
536 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698