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