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

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

Issue 811163004: Update DownloadRequestLimiter tests for the permission bubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Made BubbleManagerDocumentLoadCompleted a no-op if bubbles not enabled Created 5 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
« no previous file with comments | « chrome/browser/download/download_permission_request.cc ('k') | no next file » | 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_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/run_loop.h" 9 #include "base/run_loop.h"
10 #include "chrome/browser/download/download_permission_request.h"
9 #include "chrome/browser/download/download_request_infobar_delegate.h" 11 #include "chrome/browser/download/download_request_infobar_delegate.h"
10 #include "chrome/browser/infobars/infobar_service.h" 12 #include "chrome/browser/infobars/infobar_service.h"
11 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" 13 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
14 #include "chrome/common/chrome_switches.h"
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 15 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
13 #include "chrome/test/base/testing_profile.h" 16 #include "chrome/test/base/testing_profile.h"
14 #include "components/content_settings/core/browser/host_content_settings_map.h" 17 #include "components/content_settings/core/browser/host_content_settings_map.h"
15 #include "content/public/browser/navigation_controller.h" 18 #include "content/public/browser/navigation_controller.h"
16 #include "content/public/browser/navigation_details.h" 19 #include "content/public/browser/navigation_details.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 using content::WebContents; 24 using content::WebContents;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 CANCEL, 64 CANCEL,
62 WAIT 65 WAIT
63 }; 66 };
64 67
65 void SetUp() override { 68 void SetUp() override {
66 ChromeRenderViewHostTestHarness::SetUp(); 69 ChromeRenderViewHostTestHarness::SetUp();
67 InfoBarService::CreateForWebContents(web_contents()); 70 InfoBarService::CreateForWebContents(web_contents());
68 71
69 PermissionBubbleManager::CreateForWebContents(web_contents()); 72 PermissionBubbleManager::CreateForWebContents(web_contents());
70 view_.reset(new FakePermissionBubbleView(this)); 73 view_.reset(new FakePermissionBubbleView(this));
71 PermissionBubbleManager* manager = 74 PermissionBubbleManager::FromWebContents(web_contents())->
72 PermissionBubbleManager::FromWebContents(web_contents()); 75 SetView(view_.get());
73 manager->SetView(view_.get());
74 76
75 testing_action_ = ACCEPT; 77 testing_action_ = ACCEPT;
76 ask_allow_count_ = cancel_count_ = continue_count_ = 0; 78 ask_allow_count_ = cancel_count_ = continue_count_ = 0;
77 download_request_limiter_ = new DownloadRequestLimiter(); 79 download_request_limiter_ = new DownloadRequestLimiter();
78 fake_create_callback_ = base::Bind( 80 fake_create_callback_ = base::Bind(
79 &DownloadRequestLimiterTest::FakeCreate, base::Unretained(this)); 81 &DownloadRequestLimiterTest::FakeCreate, base::Unretained(this));
80 DownloadRequestInfoBarDelegate::SetCallbackForTesting( 82 DownloadRequestInfoBarDelegate::SetCallbackForTesting(
81 &fake_create_callback_); 83 &fake_create_callback_);
82 content_settings_ = new HostContentSettingsMap(profile_.GetPrefs(), false); 84 content_settings_ = new HostContentSettingsMap(profile_.GetPrefs(), false);
83 DownloadRequestLimiter::SetContentSettingsForTesting( 85 DownloadRequestLimiter::SetContentSettingsForTesting(
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 177
176 void SetHostContentSetting(WebContents* contents, ContentSetting setting) { 178 void SetHostContentSetting(WebContents* contents, ContentSetting setting) {
177 content_settings_->SetContentSetting( 179 content_settings_->SetContentSetting(
178 ContentSettingsPattern::FromURL(contents->GetURL()), 180 ContentSettingsPattern::FromURL(contents->GetURL()),
179 ContentSettingsPattern::Wildcard(), 181 ContentSettingsPattern::Wildcard(),
180 CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, 182 CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS,
181 std::string(), 183 std::string(),
182 setting); 184 setting);
183 } 185 }
184 186
187 void BubbleManagerDocumentLoadCompleted(bool bubbles_enabled) {
188 if (!bubbles_enabled)
189 return;
190 PermissionBubbleManager::FromWebContents(web_contents())->
191 DocumentOnLoadCompletedInMainFrame();
192 }
193
185 scoped_refptr<DownloadRequestLimiter> download_request_limiter_; 194 scoped_refptr<DownloadRequestLimiter> download_request_limiter_;
186 195
187 // The action that FakeCreate() should take. 196 // The action that FakeCreate() should take.
188 TestingAction testing_action_; 197 TestingAction testing_action_;
189 198
190 // Number of times ContinueDownload was invoked. 199 // Number of times ContinueDownload was invoked.
191 int continue_count_; 200 int continue_count_;
192 201
193 // Number of times CancelDownload was invoked. 202 // Number of times CancelDownload was invoked.
194 int cancel_count_; 203 int cancel_count_;
(...skipping 19 matching lines...) Expand all
214 delegate_->Accept(); 223 delegate_->Accept();
215 } else if (action == DownloadRequestLimiterTest::CANCEL) { 224 } else if (action == DownloadRequestLimiterTest::CANCEL) {
216 delegate_->Deny(); 225 delegate_->Deny();
217 } else if (action == DownloadRequestLimiterTest::WAIT) { 226 } else if (action == DownloadRequestLimiterTest::WAIT) {
218 // do nothing. 227 // do nothing.
219 } else { 228 } else {
220 delegate_->Closing(); 229 delegate_->Closing();
221 } 230 }
222 } 231 }
223 232
224 TEST_F(DownloadRequestLimiterTest, 233 class DownloadRequestLimiterParamTests
234 : public DownloadRequestLimiterTest,
235 public ::testing::WithParamInterface<bool> {
236 protected:
237 DownloadRequestLimiterParamTests() {}
238 ~DownloadRequestLimiterParamTests() override {}
239
240 void SetUp() override {
241 DownloadRequestLimiterTest::SetUp();
242 #if !defined(OS_ANDROID)
243 if (GetParam()) {
244 base::CommandLine::ForCurrentProcess()->AppendSwitch(
245 switches::kEnablePermissionsBubbles);
246 EXPECT_TRUE(PermissionBubbleManager::Enabled());
247 } else {
248 base::CommandLine::ForCurrentProcess()->AppendSwitch(
249 switches::kDisablePermissionsBubbles);
250 }
251 #endif
252 }
253
254 void BubbleManagerDocumentLoadCompleted() {
255 #if defined(OS_ANDROID)
256 DownloadRequestLimiterTest::BubbleManagerDocumentLoadCompleted(false);
257 #else
258 DownloadRequestLimiterTest::BubbleManagerDocumentLoadCompleted(GetParam());
259 #endif
260 }
261 private:
262 DISALLOW_COPY_AND_ASSIGN(DownloadRequestLimiterParamTests);
263 };
264
265 TEST_P(DownloadRequestLimiterParamTests,
225 DownloadRequestLimiter_Allow) { 266 DownloadRequestLimiter_Allow) {
267 BubbleManagerDocumentLoadCompleted();
268
226 // All tabs should initially start at ALLOW_ONE_DOWNLOAD. 269 // All tabs should initially start at ALLOW_ONE_DOWNLOAD.
227 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 270 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
228 download_request_limiter_->GetDownloadStatus(web_contents())); 271 download_request_limiter_->GetDownloadStatus(web_contents()));
229 272
230 // Ask if the tab can do a download. This moves to PROMPT_BEFORE_DOWNLOAD. 273 // Ask if the tab can do a download. This moves to PROMPT_BEFORE_DOWNLOAD.
231 CanDownload(); 274 CanDownload();
232 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 275 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
233 download_request_limiter_->GetDownloadStatus(web_contents())); 276 download_request_limiter_->GetDownloadStatus(web_contents()));
234 // We should have been told we can download. 277 // We should have been told we can download.
235 ExpectAndResetCounts(1, 0, 0, __LINE__); 278 ExpectAndResetCounts(1, 0, 0, __LINE__);
236 279
237 // Ask again. This triggers asking the delegate for allow/disallow. 280 // Ask again. This triggers asking the delegate for allow/disallow.
238 testing_action_ = ACCEPT; 281 testing_action_ = ACCEPT;
239 CanDownload(); 282 CanDownload();
240 // This should ask us if the download is allowed. 283 // This should ask us if the download is allowed.
241 // We should have been told we can download. 284 // We should have been told we can download.
242 ExpectAndResetCounts(1, 0, 1, __LINE__); 285 ExpectAndResetCounts(1, 0, 1, __LINE__);
243 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS, 286 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
244 download_request_limiter_->GetDownloadStatus(web_contents())); 287 download_request_limiter_->GetDownloadStatus(web_contents()));
245 288
246 // Ask again and make sure continue is invoked. 289 // Ask again and make sure continue is invoked.
247 CanDownload(); 290 CanDownload();
248 // The state is at allow_all, which means the delegate shouldn't be asked. 291 // The state is at allow_all, which means the delegate shouldn't be asked.
249 // We should have been told we can download. 292 // We should have been told we can download.
250 ExpectAndResetCounts(1, 0, 0, __LINE__); 293 ExpectAndResetCounts(1, 0, 0, __LINE__);
251 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS, 294 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
252 download_request_limiter_->GetDownloadStatus(web_contents())); 295 download_request_limiter_->GetDownloadStatus(web_contents()));
253 } 296 }
254 297
255 TEST_F(DownloadRequestLimiterTest, 298 TEST_P(DownloadRequestLimiterParamTests,
256 DownloadRequestLimiter_ResetOnNavigation) { 299 DownloadRequestLimiter_ResetOnNavigation) {
257 NavigateAndCommit(GURL("http://foo.com/bar")); 300 NavigateAndCommit(GURL("http://foo.com/bar"));
301 BubbleManagerDocumentLoadCompleted();
258 302
259 // Do two downloads, allowing the second so that we end up with allow all. 303 // Do two downloads, allowing the second so that we end up with allow all.
260 CanDownload(); 304 CanDownload();
261 ExpectAndResetCounts(1, 0, 0, __LINE__); 305 ExpectAndResetCounts(1, 0, 0, __LINE__);
262 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 306 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
263 download_request_limiter_->GetDownloadStatus(web_contents())); 307 download_request_limiter_->GetDownloadStatus(web_contents()));
264 308
265 testing_action_ = ACCEPT; 309 testing_action_ = ACCEPT;
266 CanDownload(); 310 CanDownload();
267 ExpectAndResetCounts(1, 0, 1, __LINE__); 311 ExpectAndResetCounts(1, 0, 1, __LINE__);
268 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS, 312 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
269 download_request_limiter_->GetDownloadStatus(web_contents())); 313 download_request_limiter_->GetDownloadStatus(web_contents()));
270 314
271 // Navigate to a new URL with the same host, which shouldn't reset the allow 315 // Navigate to a new URL with the same host, which shouldn't reset the allow
272 // all state. 316 // all state.
273 NavigateAndCommit(GURL("http://foo.com/bar2")); 317 NavigateAndCommit(GURL("http://foo.com/bar2"));
318 BubbleManagerDocumentLoadCompleted();
274 CanDownload(); 319 CanDownload();
275 ExpectAndResetCounts(1, 0, 0, __LINE__); 320 ExpectAndResetCounts(1, 0, 0, __LINE__);
276 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS, 321 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
277 download_request_limiter_->GetDownloadStatus(web_contents())); 322 download_request_limiter_->GetDownloadStatus(web_contents()));
278 323
279 // Do a user gesture, because we're at allow all, this shouldn't change the 324 // Do a user gesture, because we're at allow all, this shouldn't change the
280 // state. 325 // state.
281 OnUserGesture(); 326 OnUserGesture();
282 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS, 327 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS,
283 download_request_limiter_->GetDownloadStatus(web_contents())); 328 download_request_limiter_->GetDownloadStatus(web_contents()));
284 329
285 // Navigate to a completely different host, which should reset the state. 330 // Navigate to a completely different host, which should reset the state.
286 NavigateAndCommit(GURL("http://fooey.com")); 331 NavigateAndCommit(GURL("http://fooey.com"));
332 BubbleManagerDocumentLoadCompleted();
287 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 333 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
288 download_request_limiter_->GetDownloadStatus(web_contents())); 334 download_request_limiter_->GetDownloadStatus(web_contents()));
289 335
290 // Do two downloads, allowing the second so that we end up with allow all. 336 // Do two downloads, allowing the second so that we end up with allow all.
291 CanDownload(); 337 CanDownload();
292 ExpectAndResetCounts(1, 0, 0, __LINE__); 338 ExpectAndResetCounts(1, 0, 0, __LINE__);
293 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 339 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
294 download_request_limiter_->GetDownloadStatus(web_contents())); 340 download_request_limiter_->GetDownloadStatus(web_contents()));
295 341
296 testing_action_ = CANCEL; 342 testing_action_ = CANCEL;
297 CanDownload(); 343 CanDownload();
298 ExpectAndResetCounts(0, 1, 1, __LINE__); 344 ExpectAndResetCounts(0, 1, 1, __LINE__);
299 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 345 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
300 download_request_limiter_->GetDownloadStatus(web_contents())); 346 download_request_limiter_->GetDownloadStatus(web_contents()));
301 347
302 // Navigate to a new URL with the same host, which shouldn't reset the allow 348 // Navigate to a new URL with the same host, which shouldn't reset the allow
303 // all state. 349 // all state.
304 NavigateAndCommit(GURL("http://fooey.com/bar2")); 350 NavigateAndCommit(GURL("http://fooey.com/bar2"));
351 BubbleManagerDocumentLoadCompleted();
305 CanDownload(); 352 CanDownload();
306 ExpectAndResetCounts(0, 1, 0, __LINE__); 353 ExpectAndResetCounts(0, 1, 0, __LINE__);
307 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 354 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
308 download_request_limiter_->GetDownloadStatus(web_contents())); 355 download_request_limiter_->GetDownloadStatus(web_contents()));
309 } 356 }
310 357
311 TEST_F(DownloadRequestLimiterTest, 358 TEST_P(DownloadRequestLimiterParamTests,
312 DownloadRequestLimiter_ResetOnUserGesture) { 359 DownloadRequestLimiter_ResetOnUserGesture) {
313 NavigateAndCommit(GURL("http://foo.com/bar")); 360 NavigateAndCommit(GURL("http://foo.com/bar"));
361 BubbleManagerDocumentLoadCompleted();
314 362
315 // Do one download, which should change to prompt before download. 363 // Do one download, which should change to prompt before download.
316 CanDownload(); 364 CanDownload();
317 ExpectAndResetCounts(1, 0, 0, __LINE__); 365 ExpectAndResetCounts(1, 0, 0, __LINE__);
318 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 366 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
319 download_request_limiter_->GetDownloadStatus(web_contents())); 367 download_request_limiter_->GetDownloadStatus(web_contents()));
320 368
321 // Do a user gesture, which should reset back to allow one. 369 // Do a user gesture, which should reset back to allow one.
322 OnUserGesture(); 370 OnUserGesture();
323 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 371 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
(...skipping 17 matching lines...) Expand all
341 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 389 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
342 download_request_limiter_->GetDownloadStatus(web_contents())); 390 download_request_limiter_->GetDownloadStatus(web_contents()));
343 // And make sure we really can't download. 391 // And make sure we really can't download.
344 CanDownload(); 392 CanDownload();
345 ExpectAndResetCounts(0, 1, 0, __LINE__); 393 ExpectAndResetCounts(0, 1, 0, __LINE__);
346 // And the state shouldn't have changed. 394 // And the state shouldn't have changed.
347 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 395 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
348 download_request_limiter_->GetDownloadStatus(web_contents())); 396 download_request_limiter_->GetDownloadStatus(web_contents()));
349 } 397 }
350 398
351 TEST_F(DownloadRequestLimiterTest, 399 TEST_P(DownloadRequestLimiterParamTests,
352 DownloadRequestLimiter_ResetOnReload) { 400 DownloadRequestLimiter_ResetOnReload) {
353 NavigateAndCommit(GURL("http://foo.com/bar")); 401 NavigateAndCommit(GURL("http://foo.com/bar"));
402 BubbleManagerDocumentLoadCompleted();
354 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 403 ASSERT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
355 download_request_limiter_->GetDownloadStatus(web_contents())); 404 download_request_limiter_->GetDownloadStatus(web_contents()));
356 405
357 // If the user refreshes the page without responding to the infobar, pretend 406 // If the user refreshes the page without responding to the infobar, pretend
358 // like the refresh is the initial load: they get 1 free download (probably 407 // like the refresh is the initial load: they get 1 free download (probably
359 // the same as the actual initial load), then an infobar. 408 // the same as the actual initial load), then an infobar.
360 testing_action_ = WAIT; 409 testing_action_ = WAIT;
361 410
362 CanDownload(); 411 CanDownload();
363 ExpectAndResetCounts(1, 0, 0, __LINE__); 412 ExpectAndResetCounts(1, 0, 0, __LINE__);
(...skipping 25 matching lines...) Expand all
389 DidNavigateMainFrame(); 438 DidNavigateMainFrame();
390 base::RunLoop().RunUntilIdle(); 439 base::RunLoop().RunUntilIdle();
391 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 440 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
392 download_request_limiter_->GetDownloadStatus(web_contents())); 441 download_request_limiter_->GetDownloadStatus(web_contents()));
393 CanDownload(); 442 CanDownload();
394 ExpectAndResetCounts(0, 1, 0, __LINE__); 443 ExpectAndResetCounts(0, 1, 0, __LINE__);
395 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED, 444 ASSERT_EQ(DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED,
396 download_request_limiter_->GetDownloadStatus(web_contents())); 445 download_request_limiter_->GetDownloadStatus(web_contents()));
397 } 446 }
398 447
399 TEST_F(DownloadRequestLimiterTest, 448 TEST_P(DownloadRequestLimiterParamTests,
400 DownloadRequestLimiter_RawWebContents) { 449 DownloadRequestLimiter_RawWebContents) {
401 scoped_ptr<WebContents> web_contents(CreateTestWebContents()); 450 scoped_ptr<WebContents> web_contents(CreateTestWebContents());
402 451
403 // DownloadRequestLimiter won't try to make a permission bubble if there's 452 // DownloadRequestLimiter won't try to make a permission bubble if there's
404 // no permission bubble manager, so don't put one on the test WebContents. 453 // no permission bubble manager, so don't put one on the test WebContents.
405 454
406 // DownloadRequestLimiter won't try to make an infobar if it doesn't have an 455 // DownloadRequestLimiter won't try to make an infobar if it doesn't have an
407 // InfoBarService, and we want to test that it will Cancel() instead of 456 // InfoBarService, and we want to test that it will Cancel() instead of
408 // prompting when it doesn't have a InfoBarService, so unset the delegate. 457 // prompting when it doesn't have a InfoBarService, so unset the delegate.
409 UnsetDelegate(); 458 UnsetDelegate();
(...skipping 18 matching lines...) Expand all
428 download_request_limiter_->GetDownloadStatus(web_contents.get())); 477 download_request_limiter_->GetDownloadStatus(web_contents.get()));
429 OnUserGestureFor(web_contents.get()); 478 OnUserGestureFor(web_contents.get());
430 EXPECT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD, 479 EXPECT_EQ(DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD,
431 download_request_limiter_->GetDownloadStatus(web_contents.get())); 480 download_request_limiter_->GetDownloadStatus(web_contents.get()));
432 CanDownloadFor(web_contents.get()); 481 CanDownloadFor(web_contents.get());
433 ExpectAndResetCounts(1, 0, 0, __LINE__); 482 ExpectAndResetCounts(1, 0, 0, __LINE__);
434 EXPECT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 483 EXPECT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
435 download_request_limiter_->GetDownloadStatus(web_contents.get())); 484 download_request_limiter_->GetDownloadStatus(web_contents.get()));
436 } 485 }
437 486
438 TEST_F(DownloadRequestLimiterTest, 487 TEST_P(DownloadRequestLimiterParamTests,
439 DownloadRequestLimiter_SetHostContentSetting) { 488 DownloadRequestLimiter_SetHostContentSetting) {
440 NavigateAndCommit(GURL("http://foo.com/bar")); 489 NavigateAndCommit(GURL("http://foo.com/bar"));
490 BubbleManagerDocumentLoadCompleted();
441 SetHostContentSetting(web_contents(), CONTENT_SETTING_ALLOW); 491 SetHostContentSetting(web_contents(), CONTENT_SETTING_ALLOW);
442 492
443 CanDownload(); 493 CanDownload();
444 ExpectAndResetCounts(1, 0, 0, __LINE__); 494 ExpectAndResetCounts(1, 0, 0, __LINE__);
445 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 495 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
446 download_request_limiter_->GetDownloadStatus(web_contents())); 496 download_request_limiter_->GetDownloadStatus(web_contents()));
447 497
448 CanDownload(); 498 CanDownload();
449 ExpectAndResetCounts(1, 0, 0, __LINE__); 499 ExpectAndResetCounts(1, 0, 0, __LINE__);
450 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 500 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
451 download_request_limiter_->GetDownloadStatus(web_contents())); 501 download_request_limiter_->GetDownloadStatus(web_contents()));
452 502
453 SetHostContentSetting(web_contents(), CONTENT_SETTING_BLOCK); 503 SetHostContentSetting(web_contents(), CONTENT_SETTING_BLOCK);
454 504
455 CanDownload(); 505 CanDownload();
456 ExpectAndResetCounts(0, 1, 0, __LINE__); 506 ExpectAndResetCounts(0, 1, 0, __LINE__);
457 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 507 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
458 download_request_limiter_->GetDownloadStatus(web_contents())); 508 download_request_limiter_->GetDownloadStatus(web_contents()));
459 509
460 CanDownload(); 510 CanDownload();
461 ExpectAndResetCounts(0, 1, 0, __LINE__); 511 ExpectAndResetCounts(0, 1, 0, __LINE__);
462 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD, 512 ASSERT_EQ(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD,
463 download_request_limiter_->GetDownloadStatus(web_contents())); 513 download_request_limiter_->GetDownloadStatus(web_contents()));
464 } 514 }
515
516 INSTANTIATE_TEST_CASE_P(DownloadRequestLimiterTestsWithAndWithoutBubbles,
517 DownloadRequestLimiterParamTests,
518 ::testing::Values(false, true));
OLDNEW
« no previous file with comments | « chrome/browser/download/download_permission_request.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698