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 "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" |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 EXPECT_EQ(expect_asks, AskAllowCount()) << "line " << line; | 205 EXPECT_EQ(expect_asks, AskAllowCount()) << "line " << line; |
206 continue_count_ = cancel_count_ = 0; | 206 continue_count_ = cancel_count_ = 0; |
207 testing_delegate_.ResetCounts(); | 207 testing_delegate_.ResetCounts(); |
208 } | 208 } |
209 | 209 |
210 void UpdateContentSettings(WebContents* web_contents, | 210 void UpdateContentSettings(WebContents* web_contents, |
211 ContentSetting setting) { | 211 ContentSetting setting) { |
212 // Ensure a download state exists. | 212 // Ensure a download state exists. |
213 download_request_limiter_->GetDownloadState(web_contents, nullptr, true); | 213 download_request_limiter_->GetDownloadState(web_contents, nullptr, true); |
214 SetHostContentSetting(web_contents, setting); | 214 SetHostContentSetting(web_contents, setting); |
215 | |
216 // Manually send the update notification. In the browser, this is sent from | |
217 // ContentSettingRPHBubbleModel. | |
218 content::NotificationService::current()->Notify( | |
219 chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED, | |
220 content::Source<WebContents>(web_contents), | |
221 content::NotificationService::NoDetails()); | |
222 } | 215 } |
223 | 216 |
224 protected: | 217 protected: |
225 void ContinueDownload(bool allow) { | 218 void ContinueDownload(bool allow) { |
226 if (allow) { | 219 if (allow) { |
227 continue_count_++; | 220 continue_count_++; |
228 } else { | 221 } else { |
229 cancel_count_++; | 222 cancel_count_++; |
230 } | 223 } |
231 } | 224 } |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 LoadCompleted(); | 636 LoadCompleted(); |
644 SetHostContentSetting(web_contents(), CONTENT_SETTING_ALLOW); | 637 SetHostContentSetting(web_contents(), CONTENT_SETTING_ALLOW); |
645 | 638 |
646 CanDownload(); | 639 CanDownload(); |
647 ExpectAndResetCounts(1, 0, 0, __LINE__); | 640 ExpectAndResetCounts(1, 0, 0, __LINE__); |
648 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, | 641 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, |
649 download_request_limiter_->GetDownloadStatus(web_contents())); | 642 download_request_limiter_->GetDownloadStatus(web_contents())); |
650 | 643 |
651 CanDownload(); | 644 CanDownload(); |
652 ExpectAndResetCounts(1, 0, 0, __LINE__); | 645 ExpectAndResetCounts(1, 0, 0, __LINE__); |
653 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, | 646 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS, |
654 download_request_limiter_->GetDownloadStatus(web_contents())); | 647 download_request_limiter_->GetDownloadStatus(web_contents())); |
655 | 648 |
656 SetHostContentSetting(web_contents(), CONTENT_SETTING_BLOCK); | 649 SetHostContentSetting(web_contents(), CONTENT_SETTING_BLOCK); |
657 | 650 |
658 CanDownload(); | 651 CanDownload(); |
659 ExpectAndResetCounts(0, 1, 0, __LINE__); | 652 ExpectAndResetCounts(0, 1, 0, __LINE__); |
660 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, | 653 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, |
661 download_request_limiter_->GetDownloadStatus(web_contents())); | 654 download_request_limiter_->GetDownloadStatus(web_contents())); |
662 | 655 |
663 CanDownload(); | 656 CanDownload(); |
664 ExpectAndResetCounts(0, 1, 0, __LINE__); | 657 ExpectAndResetCounts(0, 1, 0, __LINE__); |
665 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, | 658 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, |
666 download_request_limiter_->GetDownloadStatus(web_contents())); | 659 download_request_limiter_->GetDownloadStatus(web_contents())); |
667 } | 660 } |
668 | 661 |
669 TEST_F(DownloadRequestLimiterTest, | 662 TEST_F(DownloadRequestLimiterTest, |
670 DownloadRequestLimiter_ContentSettingChanged) { | 663 DownloadRequestLimiter_ContentSettingChanged) { |
671 NavigateAndCommit(GURL("http://foo.com/bar")); | 664 NavigateAndCommit(GURL("http://foo.com/bar")); |
672 LoadCompleted(); | 665 LoadCompleted(); |
673 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, | 666 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, |
674 download_request_limiter_->GetDownloadStatus(web_contents())); | 667 download_request_limiter_->GetDownloadStatus(web_contents())); |
675 | 668 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 // changing the content setting). | 707 // changing the content setting). |
715 UpdateContentSettings(web_contents(), CONTENT_SETTING_ASK); | 708 UpdateContentSettings(web_contents(), CONTENT_SETTING_ASK); |
716 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, | 709 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, |
717 download_request_limiter_->GetDownloadStatus(web_contents())); | 710 download_request_limiter_->GetDownloadStatus(web_contents())); |
718 UpdateExpectations(WAIT); | 711 UpdateExpectations(WAIT); |
719 CanDownload(); | 712 CanDownload(); |
720 ExpectAndResetCounts(0, 0, 1, __LINE__); | 713 ExpectAndResetCounts(0, 0, 1, __LINE__); |
721 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, | 714 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, |
722 download_request_limiter_->GetDownloadStatus(web_contents())); | 715 download_request_limiter_->GetDownloadStatus(web_contents())); |
723 } | 716 } |
OLD | NEW |