OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/permissions/permission_request_manager.h" | 5 #include "chrome/browser/permissions/permission_request_manager.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/field_trial.h" | 8 #include "base/metrics/field_trial.h" |
9 #include "base/test/scoped_feature_list.h" | 9 #include "base/test/scoped_feature_list.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 DISABLED_RequestsBeforeLoad) { | 298 DISABLED_RequestsBeforeLoad) { |
299 ASSERT_TRUE(embedded_test_server()->Start()); | 299 ASSERT_TRUE(embedded_test_server()->Start()); |
300 | 300 |
301 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 301 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
302 browser(), | 302 browser(), |
303 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), | 303 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), |
304 1); | 304 1); |
305 bubble_factory()->WaitForPermissionBubble(); | 305 bubble_factory()->WaitForPermissionBubble(); |
306 | 306 |
307 EXPECT_EQ(1, bubble_factory()->show_count()); | 307 EXPECT_EQ(1, bubble_factory()->show_count()); |
308 EXPECT_EQ(2, bubble_factory()->total_request_count()); | 308 EXPECT_EQ(2, bubble_factory()->TotalRequestCount()); |
309 } | 309 } |
310 | 310 |
311 // Requests before the load should not be bundled with a request after the load. | 311 // Requests before the load should not be bundled with a request after the load. |
312 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, | 312 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, |
313 RequestsBeforeAfterLoad) { | 313 RequestsBeforeAfterLoad) { |
314 ASSERT_TRUE(embedded_test_server()->Start()); | 314 ASSERT_TRUE(embedded_test_server()->Start()); |
315 | 315 |
316 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 316 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
317 browser(), | 317 browser(), |
318 embedded_test_server()->GetURL( | 318 embedded_test_server()->GetURL( |
319 "/permissions/requests-before-after-load.html"), | 319 "/permissions/requests-before-after-load.html"), |
320 1); | 320 1); |
321 bubble_factory()->WaitForPermissionBubble(); | 321 bubble_factory()->WaitForPermissionBubble(); |
322 | 322 |
323 EXPECT_EQ(1, bubble_factory()->show_count()); | 323 EXPECT_EQ(1, bubble_factory()->show_count()); |
324 EXPECT_EQ(1, bubble_factory()->total_request_count()); | 324 EXPECT_EQ(1, bubble_factory()->TotalRequestCount()); |
325 } | 325 } |
326 | 326 |
327 // Navigating twice to the same URL should be equivalent to refresh. This means | 327 // Navigating twice to the same URL should be equivalent to refresh. This means |
328 // showing the bubbles twice. | 328 // showing the bubbles twice. |
329 // http://crbug.com/512849 flaky | 329 // http://crbug.com/512849 flaky |
330 #if defined(OS_WIN) | 330 #if defined(OS_WIN) |
331 #define MAYBE_NavTwice DISABLED_NavTwice | 331 #define MAYBE_NavTwice DISABLED_NavTwice |
332 #else | 332 #else |
333 #define MAYBE_NavTwice NavTwice | 333 #define MAYBE_NavTwice NavTwice |
334 #endif | 334 #endif |
335 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, MAYBE_NavTwice) { | 335 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, MAYBE_NavTwice) { |
336 ASSERT_TRUE(embedded_test_server()->Start()); | 336 ASSERT_TRUE(embedded_test_server()->Start()); |
337 | 337 |
338 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 338 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
339 browser(), | 339 browser(), |
340 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), | 340 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), |
341 1); | 341 1); |
342 bubble_factory()->WaitForPermissionBubble(); | 342 bubble_factory()->WaitForPermissionBubble(); |
343 | 343 |
344 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 344 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
345 browser(), | 345 browser(), |
346 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), | 346 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), |
347 1); | 347 1); |
348 bubble_factory()->WaitForPermissionBubble(); | 348 bubble_factory()->WaitForPermissionBubble(); |
349 | 349 |
350 EXPECT_EQ(2, bubble_factory()->show_count()); | 350 EXPECT_EQ(2, bubble_factory()->show_count()); |
351 EXPECT_EQ(4, bubble_factory()->total_request_count()); | 351 EXPECT_EQ(4, bubble_factory()->TotalRequestCount()); |
352 } | 352 } |
353 | 353 |
354 // Navigating twice to the same URL with a hash should be navigation within the | 354 // Navigating twice to the same URL with a hash should be navigation within the |
355 // page. This means the bubble is only shown once. | 355 // page. This means the bubble is only shown once. |
356 // http://crbug.com/512849 flaky | 356 // http://crbug.com/512849 flaky |
357 #if defined(OS_WIN) | 357 #if defined(OS_WIN) |
358 #define MAYBE_NavTwiceWithHash DISABLED_NavTwiceWithHash | 358 #define MAYBE_NavTwiceWithHash DISABLED_NavTwiceWithHash |
359 #else | 359 #else |
360 #define MAYBE_NavTwiceWithHash NavTwiceWithHash | 360 #define MAYBE_NavTwiceWithHash NavTwiceWithHash |
361 #endif | 361 #endif |
362 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, | 362 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, |
363 MAYBE_NavTwiceWithHash) { | 363 MAYBE_NavTwiceWithHash) { |
364 ASSERT_TRUE(embedded_test_server()->Start()); | 364 ASSERT_TRUE(embedded_test_server()->Start()); |
365 | 365 |
366 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 366 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
367 browser(), | 367 browser(), |
368 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), | 368 embedded_test_server()->GetURL("/permissions/requests-before-load.html"), |
369 1); | 369 1); |
370 bubble_factory()->WaitForPermissionBubble(); | 370 bubble_factory()->WaitForPermissionBubble(); |
371 | 371 |
372 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 372 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
373 browser(), | 373 browser(), |
374 embedded_test_server()->GetURL( | 374 embedded_test_server()->GetURL( |
375 "/permissions/requests-before-load.html#0"), | 375 "/permissions/requests-before-load.html#0"), |
376 1); | 376 1); |
377 bubble_factory()->WaitForPermissionBubble(); | 377 bubble_factory()->WaitForPermissionBubble(); |
378 | 378 |
379 EXPECT_EQ(1, bubble_factory()->show_count()); | 379 EXPECT_EQ(1, bubble_factory()->show_count()); |
380 EXPECT_EQ(2, bubble_factory()->total_request_count()); | 380 EXPECT_EQ(2, bubble_factory()->TotalRequestCount()); |
381 } | 381 } |
382 | 382 |
383 // Bubble requests should be shown after in-page navigation. | 383 // Bubble requests should be shown after in-page navigation. |
384 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, InPageNavigation) { | 384 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, InPageNavigation) { |
385 ASSERT_TRUE(embedded_test_server()->Start()); | 385 ASSERT_TRUE(embedded_test_server()->Start()); |
386 | 386 |
387 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 387 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
388 browser(), | 388 browser(), |
389 embedded_test_server()->GetURL("/empty.html"), | 389 embedded_test_server()->GetURL("/empty.html"), |
390 1); | 390 1); |
391 | 391 |
392 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 392 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
393 browser(), | 393 browser(), |
394 embedded_test_server()->GetURL("/empty.html#0"), | 394 embedded_test_server()->GetURL("/empty.html#0"), |
395 1); | 395 1); |
396 | 396 |
397 // Request 'geolocation' permission. | 397 // Request 'geolocation' permission. |
398 ExecuteScriptAndGetValue( | 398 ExecuteScriptAndGetValue( |
399 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(), | 399 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(), |
400 "navigator.geolocation.getCurrentPosition(function(){});"); | 400 "navigator.geolocation.getCurrentPosition(function(){});"); |
401 bubble_factory()->WaitForPermissionBubble(); | 401 bubble_factory()->WaitForPermissionBubble(); |
402 | 402 |
403 EXPECT_EQ(1, bubble_factory()->show_count()); | 403 EXPECT_EQ(1, bubble_factory()->show_count()); |
404 EXPECT_EQ(1, bubble_factory()->total_request_count()); | 404 EXPECT_EQ(1, bubble_factory()->TotalRequestCount()); |
405 } | 405 } |
406 | 406 |
407 // Bubble requests should not be shown when the killswitch is on. | 407 // Bubble requests should not be shown when the killswitch is on. |
408 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, | 408 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, |
409 KillSwitchGeolocation) { | 409 KillSwitchGeolocation) { |
410 ASSERT_TRUE(embedded_test_server()->Start()); | 410 ASSERT_TRUE(embedded_test_server()->Start()); |
411 | 411 |
412 ui_test_utils::NavigateToURL( | 412 ui_test_utils::NavigateToURL( |
413 browser(), | 413 browser(), |
414 embedded_test_server()->GetURL("/permissions/killswitch_tester.html")); | 414 embedded_test_server()->GetURL("/permissions/killswitch_tester.html")); |
415 | 415 |
416 // Now enable the geolocation killswitch. | 416 // Now enable the geolocation killswitch. |
417 EnableKillSwitch(CONTENT_SETTINGS_TYPE_GEOLOCATION); | 417 EnableKillSwitch(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
418 content::WebContents* web_contents = | 418 content::WebContents* web_contents = |
419 browser()->tab_strip_model()->GetActiveWebContents(); | 419 browser()->tab_strip_model()->GetActiveWebContents(); |
420 | 420 |
421 std::string result; | 421 std::string result; |
422 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 422 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
423 web_contents, "requestGeolocation();", &result)); | 423 web_contents, "requestGeolocation();", &result)); |
424 EXPECT_EQ("denied", result); | 424 EXPECT_EQ("denied", result); |
425 EXPECT_EQ(0, bubble_factory()->show_count()); | 425 EXPECT_EQ(0, bubble_factory()->show_count()); |
426 EXPECT_EQ(0, bubble_factory()->total_request_count()); | 426 EXPECT_EQ(0, bubble_factory()->TotalRequestCount()); |
427 | 427 |
428 // Disable the trial. | 428 // Disable the trial. |
429 variations::testing::ClearAllVariationParams(); | 429 variations::testing::ClearAllVariationParams(); |
430 | 430 |
431 // Reload the page to get around blink layer caching for geolocation | 431 // Reload the page to get around blink layer caching for geolocation |
432 // requests. | 432 // requests. |
433 ui_test_utils::NavigateToURL( | 433 ui_test_utils::NavigateToURL( |
434 browser(), | 434 browser(), |
435 embedded_test_server()->GetURL("/permissions/killswitch_tester.html")); | 435 embedded_test_server()->GetURL("/permissions/killswitch_tester.html")); |
436 | 436 |
437 EXPECT_TRUE(content::ExecuteScript(web_contents, "requestGeolocation();")); | 437 EXPECT_TRUE(content::ExecuteScript(web_contents, "requestGeolocation();")); |
438 bubble_factory()->WaitForPermissionBubble(); | 438 bubble_factory()->WaitForPermissionBubble(); |
439 EXPECT_EQ(1, bubble_factory()->show_count()); | 439 EXPECT_EQ(1, bubble_factory()->show_count()); |
440 EXPECT_EQ(1, bubble_factory()->total_request_count()); | 440 EXPECT_EQ(1, bubble_factory()->TotalRequestCount()); |
441 } | 441 } |
442 | 442 |
443 // Bubble requests should not be shown when the killswitch is on. | 443 // Bubble requests should not be shown when the killswitch is on. |
444 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, | 444 IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, |
445 KillSwitchNotifications) { | 445 KillSwitchNotifications) { |
446 ASSERT_TRUE(embedded_test_server()->Start()); | 446 ASSERT_TRUE(embedded_test_server()->Start()); |
447 | 447 |
448 ui_test_utils::NavigateToURL( | 448 ui_test_utils::NavigateToURL( |
449 browser(), | 449 browser(), |
450 embedded_test_server()->GetURL("/permissions/killswitch_tester.html")); | 450 embedded_test_server()->GetURL("/permissions/killswitch_tester.html")); |
451 | 451 |
452 // Now enable the notifications killswitch. | 452 // Now enable the notifications killswitch. |
453 EnableKillSwitch(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 453 EnableKillSwitch(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
454 content::WebContents* web_contents = | 454 content::WebContents* web_contents = |
455 browser()->tab_strip_model()->GetActiveWebContents(); | 455 browser()->tab_strip_model()->GetActiveWebContents(); |
456 | 456 |
457 std::string result; | 457 std::string result; |
458 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 458 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
459 web_contents, "requestNotification();", &result)); | 459 web_contents, "requestNotification();", &result)); |
460 EXPECT_EQ("denied", result); | 460 EXPECT_EQ("denied", result); |
461 EXPECT_EQ(0, bubble_factory()->show_count()); | 461 EXPECT_EQ(0, bubble_factory()->show_count()); |
462 EXPECT_EQ(0, bubble_factory()->total_request_count()); | 462 EXPECT_EQ(0, bubble_factory()->TotalRequestCount()); |
463 | 463 |
464 // Disable the trial. | 464 // Disable the trial. |
465 variations::testing::ClearAllVariationParams(); | 465 variations::testing::ClearAllVariationParams(); |
466 | 466 |
467 EXPECT_TRUE(content::ExecuteScript(web_contents, "requestNotification();")); | 467 EXPECT_TRUE(content::ExecuteScript(web_contents, "requestNotification();")); |
468 bubble_factory()->WaitForPermissionBubble(); | 468 bubble_factory()->WaitForPermissionBubble(); |
469 EXPECT_EQ(1, bubble_factory()->show_count()); | 469 EXPECT_EQ(1, bubble_factory()->show_count()); |
470 EXPECT_EQ(1, bubble_factory()->total_request_count()); | 470 EXPECT_EQ(1, bubble_factory()->TotalRequestCount()); |
471 } | 471 } |
472 | 472 |
473 // Host wants to run flash. | 473 // Host wants to run flash. |
474 IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeDialog_flash) { | 474 IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeDialog_flash) { |
475 RunDialog(); | 475 RunDialog(); |
476 } | 476 } |
477 | 477 |
478 // Host wants to know your location. | 478 // Host wants to know your location. |
479 IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeDialog_geolocation) { | 479 IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeDialog_geolocation) { |
480 RunDialog(); | 480 RunDialog(); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
536 #define MAYBE_InvokeDialog_protected_media InvokeDialog_protected_media | 536 #define MAYBE_InvokeDialog_protected_media InvokeDialog_protected_media |
537 #else | 537 #else |
538 #define MAYBE_InvokeDialog_protected_media DISABLED_InvokeDialog_protected_media | 538 #define MAYBE_InvokeDialog_protected_media DISABLED_InvokeDialog_protected_media |
539 #endif | 539 #endif |
540 IN_PROC_BROWSER_TEST_F(PermissionDialogTest, | 540 IN_PROC_BROWSER_TEST_F(PermissionDialogTest, |
541 MAYBE_InvokeDialog_protected_media) { | 541 MAYBE_InvokeDialog_protected_media) { |
542 RunDialog(); | 542 RunDialog(); |
543 } | 543 } |
544 | 544 |
545 } // anonymous namespace | 545 } // anonymous namespace |
OLD | NEW |