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

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

Issue 14197014: Add TestBrowserThreadBundle into RenderViewHostTestHarness. Kill some unnecessary real threads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged ToT Created 7 years, 6 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 | Annotate | Revision Log
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/run_loop.h"
6 #include "chrome/browser/download/download_request_infobar_delegate.h" 7 #include "chrome/browser/download/download_request_infobar_delegate.h"
7 #include "chrome/browser/download/download_request_limiter.h" 8 #include "chrome/browser/download/download_request_limiter.h"
8 #include "chrome/browser/infobars/infobar_service.h" 9 #include "chrome/browser/infobars/infobar_service.h"
9 #include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h" 10 #include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h"
10 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 11 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
11 #include "chrome/test/base/testing_profile.h" 12 #include "chrome/test/base/testing_profile.h"
12 #include "content/public/browser/navigation_controller.h" 13 #include "content/public/browser/navigation_controller.h"
13 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
14 #include "content/public/test/test_browser_thread.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 using content::BrowserThread;
18 using content::WebContents; 17 using content::WebContents;
19 18
20 class DownloadRequestLimiterTest : public ChromeRenderViewHostTestHarness { 19 class DownloadRequestLimiterTest : public ChromeRenderViewHostTestHarness {
21 public: 20 public:
22 enum TestingAction { 21 enum TestingAction {
23 ACCEPT, 22 ACCEPT,
24 CANCEL, 23 CANCEL,
25 WAIT 24 WAIT
26 }; 25 };
27 26
28 DownloadRequestLimiterTest()
29 : ui_thread_(BrowserThread::UI, &message_loop_),
30 file_user_blocking_thread_(
31 BrowserThread::FILE_USER_BLOCKING, &message_loop_),
32 io_thread_(BrowserThread::IO, &message_loop_) {
33 }
34
35 virtual void SetUp() { 27 virtual void SetUp() {
36 ChromeRenderViewHostTestHarness::SetUp(); 28 ChromeRenderViewHostTestHarness::SetUp();
37 BlockedContentTabHelper::CreateForWebContents(web_contents()); 29 BlockedContentTabHelper::CreateForWebContents(web_contents());
38 InfoBarService::CreateForWebContents(web_contents()); 30 InfoBarService::CreateForWebContents(web_contents());
39 testing_action_ = ACCEPT; 31 testing_action_ = ACCEPT;
40 ask_allow_count_ = cancel_count_ = continue_count_ = 0; 32 ask_allow_count_ = cancel_count_ = continue_count_ = 0;
41 download_request_limiter_ = new DownloadRequestLimiter(); 33 download_request_limiter_ = new DownloadRequestLimiter();
42 fake_create_callback_ = base::Bind( 34 fake_create_callback_ = base::Bind(
43 &DownloadRequestLimiterTest::FakeCreate, base::Unretained(this)); 35 &DownloadRequestLimiterTest::FakeCreate, base::Unretained(this));
44 DownloadRequestInfoBarDelegate::SetCallbackForTesting( 36 DownloadRequestInfoBarDelegate::SetCallbackForTesting(
(...skipping 29 matching lines...) Expand all
74 CanDownloadFor(web_contents()); 66 CanDownloadFor(web_contents());
75 } 67 }
76 68
77 void CanDownloadFor(WebContents* web_contents) { 69 void CanDownloadFor(WebContents* web_contents) {
78 download_request_limiter_->CanDownloadImpl( 70 download_request_limiter_->CanDownloadImpl(
79 web_contents, 71 web_contents,
80 -1, // request id 72 -1, // request id
81 "GET", // request method 73 "GET", // request method
82 base::Bind(&DownloadRequestLimiterTest::ContinueDownload, 74 base::Bind(&DownloadRequestLimiterTest::ContinueDownload,
83 base::Unretained(this))); 75 base::Unretained(this)));
84 message_loop_.RunUntilIdle(); 76 base::RunLoop().RunUntilIdle();
85 } 77 }
86 78
87 void OnUserGesture() { 79 void OnUserGesture() {
88 OnUserGestureFor(web_contents()); 80 OnUserGestureFor(web_contents());
89 } 81 }
90 82
91 void OnUserGestureFor(WebContents* web_contents) { 83 void OnUserGestureFor(WebContents* web_contents) {
92 DownloadRequestLimiter::TabDownloadState* state = 84 DownloadRequestLimiter::TabDownloadState* state =
93 download_request_limiter_->GetDownloadState(web_contents, NULL, false); 85 download_request_limiter_->GetDownloadState(web_contents, NULL, false);
94 if (state) 86 if (state)
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 121
130 // Number of times ContinueDownload was invoked. 122 // Number of times ContinueDownload was invoked.
131 int continue_count_; 123 int continue_count_;
132 124
133 // Number of times CancelDownload was invoked. 125 // Number of times CancelDownload was invoked.
134 int cancel_count_; 126 int cancel_count_;
135 127
136 // Number of times ShouldAllowDownload was invoked. 128 // Number of times ShouldAllowDownload was invoked.
137 int ask_allow_count_; 129 int ask_allow_count_;
138 130
139 content::TestBrowserThread ui_thread_;
140 content::TestBrowserThread file_user_blocking_thread_;
141 content::TestBrowserThread io_thread_;
142
143 private: 131 private:
144 DownloadRequestInfoBarDelegate::FakeCreateCallback fake_create_callback_; 132 DownloadRequestInfoBarDelegate::FakeCreateCallback fake_create_callback_;
145 }; 133 };
146 134
147 TEST_F(DownloadRequestLimiterTest, 135 TEST_F(DownloadRequestLimiterTest,
148 DownloadRequestLimiter_Allow) { 136 DownloadRequestLimiter_Allow) {
149 // All tabs should initially start at ALLOW_ONE_DOWNLOAD. 137 // All tabs should initially start at ALLOW_ONE_DOWNLOAD.
150 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 138 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
151 download_request_limiter_->GetDownloadStatus(web_contents())); 139 download_request_limiter_->GetDownloadStatus(web_contents()));
152 140
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 ExpectAndResetCounts(1, 0, 0, __LINE__); 275 ExpectAndResetCounts(1, 0, 0, __LINE__);
288 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 276 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
289 download_request_limiter_->GetDownloadStatus(web_contents())); 277 download_request_limiter_->GetDownloadStatus(web_contents()));
290 278
291 CanDownload(); 279 CanDownload();
292 ExpectAndResetCounts(0, 0, 1, __LINE__); 280 ExpectAndResetCounts(0, 0, 1, __LINE__);
293 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 281 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
294 download_request_limiter_->GetDownloadStatus(web_contents())); 282 download_request_limiter_->GetDownloadStatus(web_contents()));
295 283
296 AboutToNavigateRenderView(); 284 AboutToNavigateRenderView();
297 message_loop_.RunUntilIdle(); 285 base::RunLoop().RunUntilIdle();
298 ExpectAndResetCounts(0, 1, 0, __LINE__); 286 ExpectAndResetCounts(0, 1, 0, __LINE__);
299 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 287 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
300 download_request_limiter_->GetDownloadStatus(web_contents())); 288 download_request_limiter_->GetDownloadStatus(web_contents()));
301 289
302 CanDownload(); 290 CanDownload();
303 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 291 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
304 download_request_limiter_->GetDownloadStatus(web_contents())); 292 download_request_limiter_->GetDownloadStatus(web_contents()));
305 ExpectAndResetCounts(1, 0, 0, __LINE__); 293 ExpectAndResetCounts(1, 0, 0, __LINE__);
306 294
307 testing_action_ = CANCEL; 295 testing_action_ = CANCEL;
308 CanDownload(); 296 CanDownload();
309 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 297 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
310 download_request_limiter_->GetDownloadStatus(web_contents())); 298 download_request_limiter_->GetDownloadStatus(web_contents()));
311 ExpectAndResetCounts(0, 1, 1, __LINE__); 299 ExpectAndResetCounts(0, 1, 1, __LINE__);
312 300
313 AboutToNavigateRenderView(); 301 AboutToNavigateRenderView();
314 message_loop_.RunUntilIdle(); 302 base::RunLoop().RunUntilIdle();
315 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 303 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
316 download_request_limiter_->GetDownloadStatus(web_contents())); 304 download_request_limiter_->GetDownloadStatus(web_contents()));
317 CanDownload(); 305 CanDownload();
318 ExpectAndResetCounts(0, 1, 0, __LINE__); 306 ExpectAndResetCounts(0, 1, 0, __LINE__);
319 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 307 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
320 download_request_limiter_->GetDownloadStatus(web_contents())); 308 download_request_limiter_->GetDownloadStatus(web_contents()));
321 } 309 }
322 310
323 TEST_F(DownloadRequestLimiterTest, 311 TEST_F(DownloadRequestLimiterTest,
324 DownloadRequestLimiter_RawWebContents) { 312 DownloadRequestLimiter_RawWebContents) {
(...skipping 22 matching lines...) Expand all
347 EXPECT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 335 EXPECT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
348 download_request_limiter_->GetDownloadStatus(web_contents.get())); 336 download_request_limiter_->GetDownloadStatus(web_contents.get()));
349 OnUserGestureFor(web_contents.get()); 337 OnUserGestureFor(web_contents.get());
350 EXPECT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 338 EXPECT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
351 download_request_limiter_->GetDownloadStatus(web_contents.get())); 339 download_request_limiter_->GetDownloadStatus(web_contents.get()));
352 CanDownloadFor(web_contents.get()); 340 CanDownloadFor(web_contents.get());
353 ExpectAndResetCounts(1, 0, 0, __LINE__); 341 ExpectAndResetCounts(1, 0, 0, __LINE__);
354 EXPECT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 342 EXPECT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
355 download_request_limiter_->GetDownloadStatus(web_contents.get())); 343 download_request_limiter_->GetDownloadStatus(web_contents.get()));
356 } 344 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698