• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/test/automation/browser_proxy.h"
6 #include "chrome/test/automation/tab_proxy.h"
7 #include "chrome/test/ui/ui_test.h"
8 #include "net/base/net_util.h"
9 #include "net/test/test_server.h"
10 
11 class NotificationsPermissionTest : public UITest {
12  public:
NotificationsPermissionTest()13   NotificationsPermissionTest() {
14     dom_automation_enabled_ = true;
15     show_window_ = true;
16   }
17 };
18 
19 // Flaky, http://crbug.com/62311 and http://crbug.com/74428.
TEST_F(NotificationsPermissionTest,DISABLED_TestUserGestureInfobar)20 TEST_F(NotificationsPermissionTest, DISABLED_TestUserGestureInfobar) {
21   net::TestServer test_server(net::TestServer::TYPE_HTTP,
22                               FilePath(FILE_PATH_LITERAL("chrome/test/data")));
23   ASSERT_TRUE(test_server.Start());
24 
25   scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
26   ASSERT_TRUE(browser.get());
27   scoped_refptr<TabProxy> tab(browser->GetActiveTab());
28   ASSERT_TRUE(tab.get());
29   ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
30             tab->NavigateToURL(test_server.GetURL(
31                 "files/notifications/notifications_request_function.html")));
32   WaitUntilTabCount(1);
33 
34   // Request permission by calling request() while eval'ing an inline script;
35   // That's considered a user gesture to webkit, and should produce an infobar.
36   bool result;
37   ASSERT_TRUE(tab->ExecuteAndExtractBool(
38       L"",
39       L"window.domAutomationController.send(request());",
40       &result));
41   EXPECT_TRUE(result);
42 
43   EXPECT_TRUE(tab->WaitForInfoBarCount(1));
44 }
45 
46 // Flaky, http://crbug.com/62311.
TEST_F(NotificationsPermissionTest,FLAKY_TestNoUserGestureInfobar)47 TEST_F(NotificationsPermissionTest, FLAKY_TestNoUserGestureInfobar) {
48   net::TestServer test_server(net::TestServer::TYPE_HTTP,
49                               FilePath(FILE_PATH_LITERAL("chrome/test/data")));
50   ASSERT_TRUE(test_server.Start());
51 
52   scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
53   ASSERT_TRUE(browser.get());
54   scoped_refptr<TabProxy> tab(browser->GetActiveTab());
55   ASSERT_TRUE(tab.get());
56 
57   // Load a page which just does a request; no user gesture should result
58   // in no infobar.
59   ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
60             tab->NavigateToURL(test_server.GetURL(
61                 "files/notifications/notifications_request_inline.html")));
62   WaitUntilTabCount(1);
63 
64   size_t info_bar_count;
65   ASSERT_TRUE(tab->GetInfoBarCount(&info_bar_count));
66   EXPECT_EQ(0U, info_bar_count);
67 }
68