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

Unified Diff: chrome/browser/notifications/notification_browsertest.cc

Issue 1919203002: Rename notification interactive_ui_tests to "*_interactive_uitest.cc" to avoid confusion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix rename Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/notifications/notification_interactive_uitest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/notifications/notification_browsertest.cc
diff --git a/chrome/browser/notifications/notification_browsertest.cc b/chrome/browser/notifications/notification_browsertest.cc
deleted file mode 100644
index 454830e484ab881e8e6a9ab8d9c5773ddda263f8..0000000000000000000000000000000000000000
--- a/chrome/browser/notifications/notification_browsertest.cc
+++ /dev/null
@@ -1,884 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <deque>
-#include <string>
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/command_line.h"
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/run_loop.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/simple_test_clock.h"
-#include "base/time/clock.h"
-#include "build/build_config.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
-#include "chrome/browser/infobars/infobar_service.h"
-#include "chrome/browser/notifications/desktop_notification_profile_util.h"
-#include "chrome/browser/notifications/notification.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_tabstrip.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "components/content_settings/core/browser/host_content_settings_map.h"
-#include "components/content_settings/core/common/content_settings.h"
-#include "components/content_settings/core/common/content_settings_pattern.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/base/window_open_disposition.h"
-#include "ui/message_center/message_center.h"
-#include "ui/message_center/message_center_observer.h"
-#include "ui/message_center/message_center_style.h"
-#include "ui/message_center/notification_blocker.h"
-#include "url/gurl.h"
-
-namespace {
-
-class ToggledNotificationBlocker : public message_center::NotificationBlocker {
- public:
- ToggledNotificationBlocker()
- : message_center::NotificationBlocker(
- message_center::MessageCenter::Get()),
- notifications_enabled_(true) {}
- ~ToggledNotificationBlocker() override {}
-
- void SetNotificationsEnabled(bool enabled) {
- if (notifications_enabled_ != enabled) {
- notifications_enabled_ = enabled;
- NotifyBlockingStateChanged();
- }
- }
-
- // NotificationBlocker overrides:
- bool ShouldShowNotificationAsPopup(
- const message_center::NotifierId& notifier_id) const override {
- return notifications_enabled_;
- }
-
- private:
- bool notifications_enabled_;
-
- DISALLOW_COPY_AND_ASSIGN(ToggledNotificationBlocker);
-};
-
-} // namespace
-
-namespace {
-
-const char kExpectedIconUrl[] = "/notifications/no_such_file.png";
-
-class NotificationChangeObserver {
-public:
- virtual ~NotificationChangeObserver() {}
- virtual bool Wait() = 0;
-};
-
-class MessageCenterChangeObserver
- : public message_center::MessageCenterObserver,
- public NotificationChangeObserver {
- public:
- MessageCenterChangeObserver()
- : notification_received_(false) {
- message_center::MessageCenter::Get()->AddObserver(this);
- }
-
- ~MessageCenterChangeObserver() override {
- message_center::MessageCenter::Get()->RemoveObserver(this);
- }
-
- // NotificationChangeObserver:
- bool Wait() override {
- if (notification_received_)
- return true;
-
- message_loop_runner_ = new content::MessageLoopRunner;
- message_loop_runner_->Run();
- return notification_received_;
- }
-
- // message_center::MessageCenterObserver:
- void OnNotificationAdded(const std::string& notification_id) override {
- OnMessageCenterChanged();
- }
-
- void OnNotificationRemoved(const std::string& notification_id,
- bool by_user) override {
- OnMessageCenterChanged();
- }
-
- void OnNotificationUpdated(const std::string& notification_id) override {
- OnMessageCenterChanged();
- }
-
- void OnMessageCenterChanged() {
- notification_received_ = true;
- if (message_loop_runner_.get())
- message_loop_runner_->Quit();
- }
-
- bool notification_received_;
- scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
-
- DISALLOW_COPY_AND_ASSIGN(MessageCenterChangeObserver);
-};
-
-// Used to observe the creation of permission prompt without responding.
-class PermissionRequestObserver : public PermissionBubbleManager::Observer {
- public:
- explicit PermissionRequestObserver(content::WebContents* web_contents)
- : bubble_manager_(PermissionBubbleManager::FromWebContents(web_contents)),
- request_shown_(false),
- message_loop_runner_(new content::MessageLoopRunner) {
- bubble_manager_->AddObserver(this);
- }
- ~PermissionRequestObserver() override {
- // Safe to remove twice if it happens.
- bubble_manager_->RemoveObserver(this);
- }
-
- void Wait() { message_loop_runner_->Run(); }
-
- bool request_shown() { return request_shown_; }
-
- private:
- // PermissionBubbleManager::Observer
- void OnBubbleAdded() override {
- request_shown_ = true;
- bubble_manager_->RemoveObserver(this);
- message_loop_runner_->Quit();
- }
-
- PermissionBubbleManager* bubble_manager_;
- bool request_shown_;
- scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
-
- DISALLOW_COPY_AND_ASSIGN(PermissionRequestObserver);
-};
-
-} // namespace
-
-class NotificationsTest : public InProcessBrowserTest {
- public:
- NotificationsTest() {}
-
- protected:
- int GetNotificationCount();
- int GetNotificationPopupCount();
-
- void CloseBrowserWindow(Browser* browser);
- void CrashTab(Browser* browser, int index);
-
- void DenyOrigin(const GURL& origin);
- void AllowOrigin(const GURL& origin);
- void AllowAllOrigins();
- void SetDefaultContentSetting(ContentSetting setting);
-
- std::string CreateNotification(Browser* browser,
- bool wait_for_new_balloon,
- const char* icon,
- const char* title,
- const char* body,
- const char* replace_id);
- std::string CreateSimpleNotification(Browser* browser,
- bool wait_for_new_balloon);
- bool RequestAndAcceptPermission(Browser* browser);
- bool RequestAndDenyPermission(Browser* browser);
- bool RequestAndDismissPermission(Browser* browser);
- bool RequestPermissionAndWait(Browser* browser);
- bool CancelNotification(const char* notification_id, Browser* browser);
- void GetPrefsByContentSetting(ContentSetting setting,
- ContentSettingsForOneType* settings);
- bool CheckOriginInSetting(const ContentSettingsForOneType& settings,
- const GURL& origin);
-
- GURL GetTestPageURLForFile(const std::string& file) const {
- return embedded_test_server()->GetURL(
- std::string("/notifications/") + file);
- }
-
- GURL GetTestPageURL() const {
- return GetTestPageURLForFile("notification_tester.html");
- }
-
- content::WebContents* GetActiveWebContents(Browser* browser) {
- return browser->tab_strip_model()->GetActiveWebContents();
- }
-
- private:
- void DropOriginPreference(const GURL& origin);
- std::string RequestAndRespondToPermission(
- Browser* browser,
- PermissionBubbleManager::AutoResponseType bubble_response);
-};
-
-int NotificationsTest::GetNotificationCount() {
- return message_center::MessageCenter::Get()->NotificationCount();
-}
-
-int NotificationsTest::GetNotificationPopupCount() {
- return message_center::MessageCenter::Get()->GetPopupNotifications().size();
-}
-
-void NotificationsTest::CloseBrowserWindow(Browser* browser) {
- content::WindowedNotificationObserver observer(
- chrome::NOTIFICATION_BROWSER_CLOSED,
- content::Source<Browser>(browser));
- browser->window()->Close();
- observer.Wait();
-}
-
-void NotificationsTest::CrashTab(Browser* browser, int index) {
- content::CrashTab(browser->tab_strip_model()->GetWebContentsAt(index));
-}
-
-void NotificationsTest::DenyOrigin(const GURL& origin) {
- DropOriginPreference(origin);
- DesktopNotificationProfileUtil::DenyPermission(browser()->profile(), origin);
-}
-
-void NotificationsTest::AllowOrigin(const GURL& origin) {
- DropOriginPreference(origin);
- DesktopNotificationProfileUtil::GrantPermission(browser()->profile(), origin);
-}
-
-void NotificationsTest::AllowAllOrigins() {
- // Reset all origins
- HostContentSettingsMapFactory::GetForProfile(browser()->profile())
- ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
- SetDefaultContentSetting(CONTENT_SETTING_ALLOW);
- }
-
-void NotificationsTest::SetDefaultContentSetting(ContentSetting setting) {
- HostContentSettingsMapFactory::GetForProfile(browser()->profile())
- ->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting);
-}
-
-std::string NotificationsTest::CreateNotification(
- Browser* browser,
- bool wait_for_new_balloon,
- const char* icon,
- const char* title,
- const char* body,
- const char* replace_id) {
- std::string script = base::StringPrintf(
- "createNotification('%s', '%s', '%s', '%s');",
- icon, title, body, replace_id);
-
- MessageCenterChangeObserver observer;
- std::string result;
- bool success = content::ExecuteScriptAndExtractString(
- GetActiveWebContents(browser), script, &result);
- if (success && result != "-1" && wait_for_new_balloon)
- success = observer.Wait();
- EXPECT_TRUE(success);
-
- return result;
-}
-
-std::string NotificationsTest::CreateSimpleNotification(
- Browser* browser,
- bool wait_for_new_balloon) {
- return CreateNotification(
- browser, wait_for_new_balloon,
- "no_such_file.png", "My Title", "My Body", "");
-}
-
-std::string NotificationsTest::RequestAndRespondToPermission(
- Browser* browser,
- PermissionBubbleManager::AutoResponseType bubble_response) {
- std::string result;
- content::WebContents* web_contents = GetActiveWebContents(browser);
- PermissionBubbleManager::FromWebContents(web_contents)
- ->set_auto_response_for_test(bubble_response);
- EXPECT_TRUE(content::ExecuteScriptAndExtractString(
- web_contents, "requestPermission();", &result));
- return result;
-}
-
-bool NotificationsTest::RequestAndAcceptPermission(Browser* browser) {
- std::string result = RequestAndRespondToPermission(
- browser, PermissionBubbleManager::ACCEPT_ALL);
- return "request-callback-granted" == result;
-}
-
-bool NotificationsTest::RequestAndDenyPermission(Browser* browser) {
- std::string result =
- RequestAndRespondToPermission(browser, PermissionBubbleManager::DENY_ALL);
- return "request-callback-denied" == result;
-}
-
-bool NotificationsTest::RequestAndDismissPermission(Browser* browser) {
- std::string result =
- RequestAndRespondToPermission(browser, PermissionBubbleManager::DISMISS);
- return "request-callback-default" == result;
-}
-
-bool NotificationsTest::RequestPermissionAndWait(Browser* browser) {
- content::WebContents* web_contents = GetActiveWebContents(browser);
- ui_test_utils::NavigateToURL(browser, GetTestPageURL());
- PermissionRequestObserver observer(web_contents);
- std::string result;
- EXPECT_TRUE(content::ExecuteScriptAndExtractString(
- web_contents, "requestPermissionAndRespond();", &result));
- EXPECT_EQ("requested", result);
- observer.Wait();
- return observer.request_shown();
-}
-
-bool NotificationsTest::CancelNotification(
- const char* notification_id,
- Browser* browser) {
- std::string script = base::StringPrintf(
- "cancelNotification('%s');",
- notification_id);
-
- MessageCenterChangeObserver observer;
- std::string result;
- bool success = content::ExecuteScriptAndExtractString(
- GetActiveWebContents(browser), script, &result);
- if (!success || result != "1")
- return false;
- return observer.Wait();
-}
-
-void NotificationsTest::GetPrefsByContentSetting(
- ContentSetting setting,
- ContentSettingsForOneType* settings) {
- DesktopNotificationProfileUtil::GetNotificationsSettings(
- browser()->profile(), settings);
- for (ContentSettingsForOneType::iterator it = settings->begin();
- it != settings->end(); ) {
- if (it->setting != setting || it->source.compare("preference") != 0)
- it = settings->erase(it);
- else
- ++it;
- }
-}
-
-bool NotificationsTest::CheckOriginInSetting(
- const ContentSettingsForOneType& settings,
- const GURL& origin) {
- ContentSettingsPattern pattern =
- ContentSettingsPattern::FromURLNoWildcard(origin);
- for (ContentSettingsForOneType::const_iterator it = settings.begin();
- it != settings.end(); ++it) {
- if (it->primary_pattern == pattern)
- return true;
- }
- return false;
-}
-
-void NotificationsTest::DropOriginPreference(const GURL& origin) {
- DesktopNotificationProfileUtil::ClearSetting(browser()->profile(), origin);
-}
-
-// Flaky on Windows, Mac, Linux: http://crbug.com/437414.
-IN_PROC_BROWSER_TEST_F(NotificationsTest, DISABLED_TestUserGestureInfobar) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- ui_test_utils::NavigateToURL(
- browser(),
- embedded_test_server()->GetURL(
- "/notifications/notifications_request_function.html"));
-
- // Request permission by calling request() while eval'ing an inline script;
- // That's considered a user gesture to webkit, and should produce an infobar.
- bool result;
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- GetActiveWebContents(browser()),
- "window.domAutomationController.send(request());", &result));
- EXPECT_TRUE(result);
-
- InfoBarService* infobar_service = InfoBarService::FromWebContents(
- browser()->tab_strip_model()->GetWebContentsAt(0));
- EXPECT_EQ(1U, infobar_service->infobar_count());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCreateSimpleNotification) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Creates a simple notification.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- GURL EXPECTED_ICON_URL = embedded_test_server()->GetURL(kExpectedIconUrl);
- ASSERT_EQ(1, GetNotificationCount());
- message_center::NotificationList::Notifications notifications =
- message_center::MessageCenter::Get()->GetVisibleNotifications();
- EXPECT_EQ(base::ASCIIToUTF16("My Title"),
- (*notifications.rbegin())->title());
- EXPECT_EQ(base::ASCIIToUTF16("My Body"),
- (*notifications.rbegin())->message());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, NotificationBlockerTest) {
- ToggledNotificationBlocker blocker;
-
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Creates a simple notification.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
- result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- blocker.SetNotificationsEnabled(false);
- EXPECT_EQ(0, GetNotificationPopupCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseNotification) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Creates a notification and closes it.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
- ASSERT_EQ(1, GetNotificationCount());
-
- message_center::NotificationList::Notifications notifications =
- message_center::MessageCenter::Get()->GetVisibleNotifications();
- message_center::MessageCenter::Get()->RemoveNotification(
- (*notifications.rbegin())->id(),
- true); // by_user
-
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCancelNotification) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Creates a notification and cancels it in the origin page.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string note_id = CreateSimpleNotification(browser(), true);
- EXPECT_NE(note_id, "-1");
-
- ASSERT_EQ(1, GetNotificationCount());
- ASSERT_TRUE(CancelNotification(note_id.c_str(), browser()));
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-// Requests notification privileges and verifies the prompt appears.
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestPermissionRequestUIAppears) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- EXPECT_TRUE(RequestPermissionAndWait(browser()));
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestAllowOnPermissionRequestUI) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Tries to create a notification & clicks 'allow' on the prompt.
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- // This notification should not be shown because we do not have permission.
- CreateSimpleNotification(browser(), false);
- ASSERT_EQ(0, GetNotificationCount());
-
- ASSERT_TRUE(RequestAndAcceptPermission(browser()));
-
- CreateSimpleNotification(browser(), true);
- EXPECT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyOnPermissionRequestUI) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Test that no notification is created when Deny is chosen from prompt.
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- ASSERT_TRUE(RequestAndDenyPermission(browser()));
- CreateSimpleNotification(browser(), false);
- ASSERT_EQ(0, GetNotificationCount());
- ContentSettingsForOneType settings;
- GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
- EXPECT_TRUE(CheckOriginInSetting(settings, GetTestPageURL()));
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestClosePermissionRequestUI) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Test that no notification is created when prompt is dismissed.
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- ASSERT_TRUE(RequestAndDismissPermission(browser()));
- CreateSimpleNotification(browser(), false);
- ASSERT_EQ(0, GetNotificationCount());
- ContentSettingsForOneType settings;
- GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
- EXPECT_EQ(0U, settings.size());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestAllowNotificationsFromAllSites) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Verify that all domains can be allowed to show notifications.
- SetDefaultContentSetting(CONTENT_SETTING_ALLOW);
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyNotificationsFromAllSites) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Verify that no domain can show notifications.
- SetDefaultContentSetting(CONTENT_SETTING_BLOCK);
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), false);
- EXPECT_EQ("-1", result);
-
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyDomainAndAllowAll) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Verify that denying a domain and allowing all shouldn't show
- // notifications from the denied domain.
- DenyOrigin(GetTestPageURL().GetOrigin());
- SetDefaultContentSetting(CONTENT_SETTING_ALLOW);
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), false);
- EXPECT_EQ("-1", result);
-
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestAllowDomainAndDenyAll) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Verify that allowing a domain and denying all others should show
- // notifications from the allowed domain.
- AllowOrigin(GetTestPageURL().GetOrigin());
- SetDefaultContentSetting(CONTENT_SETTING_BLOCK);
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyAndThenAllowDomain) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Verify that denying and again allowing should show notifications.
- DenyOrigin(GetTestPageURL().GetOrigin());
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), false);
- EXPECT_EQ("-1", result);
-
- ASSERT_EQ(0, GetNotificationCount());
-
- AllowOrigin(GetTestPageURL().GetOrigin());
- result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCreateDenyCloseNotifications) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Verify able to create, deny, and close the notification.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- CreateSimpleNotification(browser(), true);
- ASSERT_EQ(1, GetNotificationCount());
-
- DenyOrigin(GetTestPageURL().GetOrigin());
- ContentSettingsForOneType settings;
- GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
- ASSERT_TRUE(CheckOriginInSetting(settings, GetTestPageURL().GetOrigin()));
-
- EXPECT_EQ(1, GetNotificationCount());
- message_center::NotificationList::Notifications notifications =
- message_center::MessageCenter::Get()->GetVisibleNotifications();
- message_center::MessageCenter::Get()->RemoveNotification(
- (*notifications.rbegin())->id(),
- true); // by_user
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-// Crashes on Linux/Win. See http://crbug.com/160657.
-IN_PROC_BROWSER_TEST_F(
- NotificationsTest,
- DISABLED_TestOriginPrefsNotSavedInIncognito) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Verify that allow/deny origin preferences are not saved in incognito.
- Browser* incognito = CreateIncognitoBrowser();
- ui_test_utils::NavigateToURL(incognito, GetTestPageURL());
- ASSERT_TRUE(RequestAndDenyPermission(incognito));
- CloseBrowserWindow(incognito);
-
- incognito = CreateIncognitoBrowser();
- ui_test_utils::NavigateToURL(incognito, GetTestPageURL());
- ASSERT_TRUE(RequestAndAcceptPermission(incognito));
- CreateSimpleNotification(incognito, true);
- ASSERT_EQ(1, GetNotificationCount());
- CloseBrowserWindow(incognito);
-
- incognito = CreateIncognitoBrowser();
- ui_test_utils::NavigateToURL(incognito, GetTestPageURL());
- ASSERT_TRUE(RequestPermissionAndWait(incognito));
-
- ContentSettingsForOneType settings;
- GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
- EXPECT_EQ(0U, settings.size());
- GetPrefsByContentSetting(CONTENT_SETTING_ALLOW, &settings);
- EXPECT_EQ(0U, settings.size());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseTabWithPermissionRequestUI) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Test that user can close tab when bubble present.
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- EXPECT_TRUE(RequestPermissionAndWait(browser()));
- content::WebContentsDestroyedWatcher destroyed_watcher(
- browser()->tab_strip_model()->GetWebContentsAt(0));
- browser()->tab_strip_model()->CloseWebContentsAt(0,
- TabStripModel::CLOSE_NONE);
- destroyed_watcher.Wait();
-}
-
-// See crbug.com/248470
-#if defined(OS_LINUX)
-#define MAYBE_TestCrashRendererNotificationRemain \
- DISABLED_TestCrashRendererNotificationRemain
-#else
-#define MAYBE_TestCrashRendererNotificationRemain \
- TestCrashRendererNotificationRemain
-#endif
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest,
- MAYBE_TestCrashRendererNotificationRemain) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Test crashing renderer does not close or crash notification.
- AllowAllOrigins();
- ui_test_utils::NavigateToURLWithDisposition(
- browser(),
- GURL("about:blank"),
- NEW_BACKGROUND_TAB,
- ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
- browser()->tab_strip_model()->ActivateTabAt(0, true);
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- CreateSimpleNotification(browser(), true);
- ASSERT_EQ(1, GetNotificationCount());
- CrashTab(browser(), 0);
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNotificationReplacement) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Test that we can replace a notification using the replaceId.
- AllowAllOrigins();
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateNotification(
- browser(), true, "abc.png", "Title1", "Body1", "chat");
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
-
- result = CreateNotification(
- browser(), false, "no_such_file.png", "Title2", "Body2", "chat");
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
- message_center::NotificationList::Notifications notifications =
- message_center::MessageCenter::Get()->GetVisibleNotifications();
- EXPECT_EQ(base::ASCIIToUTF16("Title2"), (*notifications.rbegin())->title());
- EXPECT_EQ(base::ASCIIToUTF16("Body2"),
- (*notifications.rbegin())->message());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestLastUsage) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(browser()->profile());
- base::SimpleTestClock* clock = new base::SimpleTestClock();
- settings_map->SetPrefClockForTesting(std::unique_ptr<base::Clock>(clock));
- clock->SetNow(base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(10));
-
- // Creates a simple notification.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- EXPECT_EQ(settings_map->GetLastUsage(GetTestPageURL().GetOrigin(),
- GetTestPageURL().GetOrigin(),
- CONTENT_SETTINGS_TYPE_NOTIFICATIONS)
- .ToDoubleT(),
- 10);
-
- clock->Advance(base::TimeDelta::FromSeconds(3));
-
- result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- EXPECT_EQ(settings_map->GetLastUsage(GetTestPageURL().GetOrigin(),
- GetTestPageURL().GetOrigin(),
- CONTENT_SETTINGS_TYPE_NOTIFICATIONS)
- .ToDoubleT(),
- 13);
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest,
- TestNotificationReplacementReappearance) {
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // Test that we can replace a notification using the tag, and that it will
- // cause the notification to reappear as a popup again.
- AllowAllOrigins();
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
-
- ASSERT_EQ(0, GetNotificationPopupCount());
-
- std::string result = CreateNotification(
- browser(), true, "abc.png", "Title1", "Body1", "chat");
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationPopupCount());
-
- message_center::NotificationList::Notifications notifications =
- message_center::MessageCenter::Get()->GetVisibleNotifications();
- message_center::MessageCenter::Get()->ClickOnNotification(
- (*notifications.rbegin())->id());
-
-#if defined(OS_CHROMEOS)
- ASSERT_EQ(0, GetNotificationPopupCount());
-#else
- ASSERT_EQ(1, GetNotificationPopupCount());
-#endif
-
- result = CreateNotification(
- browser(), true, "abc.png", "Title2", "Body2", "chat");
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationPopupCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNotificationValidIcon) {
- ASSERT_TRUE(embedded_test_server()->Start());
- AllowAllOrigins();
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- ASSERT_EQ(0, GetNotificationPopupCount());
-
- std::string result = CreateNotification(
- browser(), true, "icon.png", "Title1", "Body1", "chat");
- EXPECT_NE("-1", result);
-
- message_center::NotificationList::PopupNotifications notifications =
- message_center::MessageCenter::Get()->GetPopupNotifications();
- ASSERT_EQ(1u, notifications.size());
-
- auto* notification = *notifications.rbegin();
-
- EXPECT_EQ(100, notification->icon().Width());
- EXPECT_EQ(100, notification->icon().Height());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNotificationInvalidIcon) {
- ASSERT_TRUE(embedded_test_server()->Start());
- AllowAllOrigins();
-
- ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
- ASSERT_EQ(0, GetNotificationPopupCount());
-
- // Not supplying an icon URL.
- std::string result = CreateNotification(
- browser(), true, "", "Title1", "Body1", "chat");
- EXPECT_NE("-1", result);
-
- message_center::NotificationList::PopupNotifications notifications =
- message_center::MessageCenter::Get()->GetPopupNotifications();
- ASSERT_EQ(1u, notifications.size());
-
- auto* notification = *notifications.rbegin();
- EXPECT_TRUE(notification->icon().IsEmpty());
-
- // Supplying an invalid icon URL.
- result = CreateNotification(
- browser(), true, "invalid.png", "Title1", "Body1", "chat");
- EXPECT_NE("-1", result);
-
- notifications = message_center::MessageCenter::Get()->GetPopupNotifications();
- ASSERT_EQ(1u, notifications.size());
-
- notification = *notifications.rbegin();
- EXPECT_TRUE(notification->icon().IsEmpty());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNotificationDoubleClose) {
- ASSERT_TRUE(embedded_test_server()->Start());
- AllowAllOrigins();
-
- ui_test_utils::NavigateToURL(
- browser(), GetTestPageURLForFile("notification-double-close.html"));
- ASSERT_EQ(0, GetNotificationPopupCount());
-
- std::string result = CreateNotification(
- browser(), true, "", "Title1", "Body1", "chat");
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
- message_center::NotificationList::Notifications notifications =
- message_center::MessageCenter::Get()->GetVisibleNotifications();
- message_center::MessageCenter::Get()->RemoveNotification(
- (*notifications.rbegin())->id(),
- true); // by_user
-
- ASSERT_EQ(0, GetNotificationCount());
-
- // Calling WebContents::IsCrashed() will return FALSE here, even if the WC did
- // crash. Work around this timing issue by creating another notification,
- // which requires interaction with the renderer process.
- result = CreateNotification(browser(), true, "", "Title1", "Body1", "chat");
- EXPECT_NE("-1", result);
-}
« no previous file with comments | « no previous file | chrome/browser/notifications/notification_interactive_uitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698