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

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

Issue 11434073: Revert r170623 "Convert HTML5 notification pyauto tests to browser_tests." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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/test/data/notifications/notification_tester.html » ('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
index 67792ad3ed7478aecad7c335d87648447e1f76a1..3a693da62ab1bc75aa4622195efb5b80c72b9247 100644
--- a/chrome/browser/notifications/notification_browsertest.cc
+++ b/chrome/browser/notifications/notification_browsertest.cc
@@ -2,408 +2,25 @@
// 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/compiler_specific.h"
-#include "base/memory/ref_counted.h"
-#include "base/run_loop.h"
-#include "base/stringprintf.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/api/infobars/confirm_infobar_delegate.h"
-#include "chrome/browser/api/infobars/infobar_delegate.h"
-#include "chrome/browser/browser_process.h"
#include "chrome/browser/infobars/infobar_tab_helper.h"
-#include "chrome/browser/notifications/balloon.h"
-#include "chrome/browser/notifications/balloon_collection.h"
-#include "chrome/browser/notifications/balloon_host.h"
-#include "chrome/browser/notifications/desktop_notification_service.h"
-#include "chrome/browser/notifications/desktop_notification_service_factory.h"
-#include "chrome/browser/notifications/notification.h"
-#include "chrome/browser/notifications/notification_ui_manager.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/tab_contents/tab_contents.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/content_settings.h"
-#include "chrome/common/content_settings_pattern.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.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 "googleurl/src/gurl.h"
#include "net/base/net_util.h"
#include "net/test/test_server.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/glue/window_open_disposition.h"
-
-namespace {
-
-const char kExpectedIconUrl[] = "files/notifications/no_such_file.png";
-
-enum InfobarAction {
- DISMISS = 0,
- ALLOW,
- DENY,
-};
-
-class NotificationBalloonChangeObserver : public content::NotificationObserver {
- public:
- NotificationBalloonChangeObserver()
- : collection_(
- g_browser_process->notification_ui_manager()->balloon_collection()),
- collection_changed_(false),
- notification_received_(false),
- running_(false),
- done_(false) {
- registrar_.Add(this, chrome::NOTIFICATION_NOTIFY_BALLOON_CONNECTED,
- content::NotificationService::AllSources());
- registrar_.Add(this, chrome::NOTIFICATION_NOTIFY_BALLOON_DISCONNECTED,
- content::NotificationService::AllSources());
- collection_->set_on_collection_changed_callback(
- base::Bind(&NotificationBalloonChangeObserver::OnCollectionChanged,
- base::Unretained(this)));
- }
-
- virtual ~NotificationBalloonChangeObserver() {
- collection_->set_on_collection_changed_callback(base::Closure());
- }
-
- bool Wait() {
- if (!Check()) {
- running_ = true;
- message_loop_runner_ = new content::MessageLoopRunner;
- message_loop_runner_->Run();
- EXPECT_TRUE(done_);
- }
- return done_;
- }
-
- bool Check() {
- if (done_)
- return true;
-
- if (collection_changed_ && notification_received_) {
- done_ = true;
- if (running_) {
- message_loop_runner_->Quit();
- running_ = false;
- }
- }
- return done_;
- }
- void OnCollectionChanged() {
- collection_changed_ = true;
- Check();
- }
-
- // Overridden from content::NotificationObserver:
- virtual void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE {
- DCHECK(type == chrome::NOTIFICATION_NOTIFY_BALLOON_DISCONNECTED ||
- type == chrome::NOTIFICATION_NOTIFY_BALLOON_CONNECTED);
- notification_received_ = true;
- Check();
- }
-
- private:
- content::NotificationRegistrar registrar_;
- BalloonCollection* collection_;
-
- bool collection_changed_;
- bool notification_received_;
- bool running_;
- bool done_;
- scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
-
- DISALLOW_COPY_AND_ASSIGN(NotificationBalloonChangeObserver);
-};
-
-} // namespace
-
-class NotificationsTest : public InProcessBrowserTest {
+class NotificationsPermissionTest : public InProcessBrowserTest {
public:
- NotificationsTest() {}
-
- protected:
- // Overriden from InProcessBrowserTest:
- virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
-
- const std::deque<Balloon*>& GetActiveBalloons();
- int GetNotificationCount();
-
- bool CloseNotificationAndWait(const Notification& notification);
- void CloseBrowserWindow(Browser* browser);
- void CrashTab(Browser* browser, int index);
- void CrashNotification(Balloon* balloon);
-
- void SetDefaultPermissionSetting(ContentSetting setting);
- void DenyOrigin(const GURL& origin);
- void AllowOrigin(const GURL& origin);
- void AllowAllOrigins();
-
- void VerifyInfobar(const Browser* browser, int index);
- 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 RequestPermissionAndWait(Browser* browser);
- bool CancelNotification(const char* notification_id, Browser* browser);
- bool PerformActionOnInfobar(Browser* browser,
- InfobarAction action,
- int infobar_index,
- int tab_index);
- void GetPrefsByContentSetting(ContentSetting setting,
- ContentSettingsForOneType* settings);
- bool CheckOriginInSetting(const ContentSettingsForOneType& settings,
- const GURL& origin);
-
- GURL empty_page_url_;
- GURL test_page_url_;
-
- private:
- void DropOriginPreference(const GURL& origin);
- DesktopNotificationService* GetDesktopNotificationService();
+ NotificationsPermissionTest() {}
};
-void NotificationsTest::SetUpInProcessBrowserTestFixture() {
- InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
-
+// If this flakes, use http://crbug.com/62311 and http://crbug.com/74428.
+IN_PROC_BROWSER_TEST_F(NotificationsPermissionTest, TestUserGestureInfobar) {
ASSERT_TRUE(test_server()->Start());
- empty_page_url_ = test_server()->GetURL("files/empty.html");
- test_page_url_ = test_server()->GetURL(
- "files/notifications/notification_tester.html");
-}
-
-const std::deque<Balloon*>& NotificationsTest::GetActiveBalloons() {
- return g_browser_process->notification_ui_manager()->
- balloon_collection()->GetActiveBalloons();
-}
-
-int NotificationsTest::GetNotificationCount() {
- return g_browser_process->notification_ui_manager()->
- balloon_collection()->GetActiveBalloons().size();
-}
-
-bool NotificationsTest::CloseNotificationAndWait(
- const Notification& notification) {
- NotificationBalloonChangeObserver observer;
- bool success = g_browser_process->notification_ui_manager()->
- CancelById(notification.notification_id());
- if (success)
- return observer.Wait();
- return false;
-}
-
-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(chrome::GetWebContentsAt(browser, index));
-}
-
-void NotificationsTest::CrashNotification(Balloon* balloon) {
- content::CrashTab(balloon->balloon_view()->GetHost()->web_contents());
-}
-
-void NotificationsTest::SetDefaultPermissionSetting(ContentSetting setting) {
- DesktopNotificationService* service = GetDesktopNotificationService();
- service->SetDefaultContentSetting(setting);
-}
-
-void NotificationsTest::DenyOrigin(const GURL& origin) {
- DropOriginPreference(origin);
- GetDesktopNotificationService()->DenyPermission(origin);
-}
-void NotificationsTest::AllowOrigin(const GURL& origin) {
- DropOriginPreference(origin);
- GetDesktopNotificationService()->GrantPermission(origin);
-}
-
-void NotificationsTest::AllowAllOrigins() {
- GetDesktopNotificationService()->ResetAllOrigins();
- GetDesktopNotificationService()->SetDefaultContentSetting(
- CONTENT_SETTING_ALLOW);
-}
-
-void NotificationsTest::VerifyInfobar(const Browser* browser, int index) {
- InfoBarTabHelper* infobar_helper = InfoBarTabHelper::FromWebContents(
- chrome::GetWebContentsAt(browser, index));
-
- ASSERT_EQ(1U, infobar_helper->GetInfoBarCount());
- InfoBarDelegate* infobar = infobar_helper->GetInfoBarDelegateAt(0);
- ConfirmInfoBarDelegate* confirm_infobar = infobar->AsConfirmInfoBarDelegate();
- ASSERT_TRUE(confirm_infobar);
- int buttons = confirm_infobar->GetButtons();
- EXPECT_TRUE(buttons & ConfirmInfoBarDelegate::BUTTON_OK);
- EXPECT_TRUE(buttons & ConfirmInfoBarDelegate::BUTTON_CANCEL);
-}
-
-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);
-
- NotificationBalloonChangeObserver observer;
- std::string result;
- bool success = content::ExecuteJavaScriptAndExtractString(
- chrome::GetActiveWebContents(browser)->GetRenderViewHost(),
- L"",
- UTF8ToWide(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", "");
-}
-
-bool NotificationsTest::RequestPermissionAndWait(Browser* browser) {
- InfoBarTabHelper* infobar_helper = InfoBarTabHelper::FromWebContents(
- chrome::GetActiveWebContents(browser));
- content::WindowedNotificationObserver observer(
- chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED,
- content::Source<InfoBarTabHelper>(infobar_helper));
- std::string result;
- bool success = content::ExecuteJavaScriptAndExtractString(
- chrome::GetActiveWebContents(browser)->GetRenderViewHost(),
- L"",
- L"requestPermission();",
- &result);
- if (!success || result != "1")
- return false;
- observer.Wait();
- return true;
-}
-
-bool NotificationsTest::CancelNotification(
- const char* notification_id,
- Browser* browser) {
- std::string script = base::StringPrintf(
- "cancelNotification('%s');",
- notification_id);
-
- NotificationBalloonChangeObserver observer;
- std::string result;
- bool success = content::ExecuteJavaScriptAndExtractString(
- chrome::GetActiveWebContents(browser)->GetRenderViewHost(),
- L"",
- UTF8ToWide(script),
- &result);
- if (!success || result != "1")
- return false;
- return observer.Wait();
-}
-
-bool NotificationsTest::PerformActionOnInfobar(
- Browser* browser,
- InfobarAction action,
- int infobar_index,
- int tab_index) {
- InfoBarTabHelper* infobar_helper = InfoBarTabHelper::FromWebContents(
- chrome::GetWebContentsAt(browser, tab_index));
-
- InfoBarDelegate* infobar = infobar_helper->GetInfoBarDelegateAt(
- infobar_index);
- switch (action) {
- case DISMISS: {
- infobar->InfoBarDismissed();
- infobar_helper->RemoveInfoBar(infobar);
- return true;
- }
- case ALLOW: {
- ConfirmInfoBarDelegate* confirm_bar = infobar->AsConfirmInfoBarDelegate();
- if (confirm_bar->Accept()) {
- infobar_helper->RemoveInfoBar(infobar);
- return true;
- }
- }
- case DENY: {
- ConfirmInfoBarDelegate* confirm_bar = infobar->AsConfirmInfoBarDelegate();
- if (confirm_bar->Cancel()) {
- infobar_helper->RemoveInfoBar(infobar);
- return true;
- }
- }
- }
-
- return false;
-}
-
-void NotificationsTest::GetPrefsByContentSetting(
- ContentSetting setting,
- ContentSettingsForOneType* settings) {
- DesktopNotificationService* service = GetDesktopNotificationService();
- service->GetNotificationsSettings(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) {
- GetDesktopNotificationService()->ClearSetting(
- ContentSettingsPattern::FromURLNoWildcard(origin));
-}
-
-DesktopNotificationService* NotificationsTest::GetDesktopNotificationService() {
- Profile* profile = browser()->profile();
- return DesktopNotificationServiceFactory::GetForProfile(profile);
-}
-
-// If this flakes, use http://crbug.com/62311 and http://crbug.com/74428.
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestUserGestureInfobar) {
ui_test_utils::NavigateToURL(
browser(),
test_server()->GetURL(
@@ -424,7 +41,9 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, TestUserGestureInfobar) {
}
// If this flakes, use http://crbug.com/62311.
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNoUserGestureInfobar) {
+IN_PROC_BROWSER_TEST_F(NotificationsPermissionTest, TestNoUserGestureInfobar) {
+ ASSERT_TRUE(test_server()->Start());
+
// Load a page which just does a request; no user gesture should result
// in no infobar.
ui_test_utils::NavigateToURL(
@@ -435,359 +54,3 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNoUserGestureInfobar) {
EXPECT_EQ(0U, InfoBarTabHelper::FromWebContents(
chrome::GetWebContentsAt(browser(), 0))->GetInfoBarCount());
}
-
-// Disable new testcases on Chrome OS due to failure on creating notification.
-#if !defined(OS_CHROMEOS)
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCreateSimpleNotification) {
- // Creates a simple notification.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- const std::deque<Balloon*>& balloons = GetActiveBalloons();
- ASSERT_EQ(1U, balloons.size());
- Balloon* balloon = balloons[0];
- const Notification& notification = balloon->notification();
- GURL EXPECTED_ICON_URL = test_server()->GetURL(kExpectedIconUrl);
- EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url());
- EXPECT_EQ(ASCIIToUTF16("My Title"), notification.title());
- EXPECT_EQ(ASCIIToUTF16("My Body"), notification.body());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseNotification) {
- // Creates a notification and closes it.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- const std::deque<Balloon*>& balloons = GetActiveBalloons();
- ASSERT_EQ(1U, balloons.size());
- EXPECT_TRUE(CloseNotificationAndWait(balloons[0]->notification()));
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCancelNotification) {
- // Creates a notification and cancels it in the origin page.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- 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());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestPermissionInfobarAppears) {
- // Requests notification privileges and verifies the infobar appears.
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
-
- ASSERT_EQ(0, GetNotificationCount());
- VerifyInfobar(browser(), 0);
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestAllowOnPermissionInfobar) {
- // Tries to create a notification and clicks allow on the infobar.
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- // This notification should not be shown because we do not have permission.
- CreateSimpleNotification(browser(), false);
- ASSERT_EQ(0, GetNotificationCount());
-
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
- ASSERT_TRUE(PerformActionOnInfobar(browser(), ALLOW, 0, 0));
-
- CreateSimpleNotification(browser(), true);
- EXPECT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyOnPermissionInfobar) {
- // Test that no notification is created
- // when Deny is chosen from permission infobar.
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
- PerformActionOnInfobar(browser(), DENY, 0, 0);
- CreateSimpleNotification(browser(), false);
- ASSERT_EQ(0, GetNotificationCount());
- ContentSettingsForOneType settings;
- GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
- EXPECT_TRUE(CheckOriginInSetting(settings, test_page_url_));
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestClosePermissionInfobar) {
- // Test that no notification is created when permission infobar is dismissed.
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
- PerformActionOnInfobar(browser(), DISMISS, 0, 0);
- 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, TestNotificationWithPropertyMissing) {
- // Test that a notification can be created if one property is missing.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- const std::deque<Balloon*>& balloons = GetActiveBalloons();
- ASSERT_EQ(1U, balloons.size());
- Balloon* balloon = balloons[0];
- const Notification& notification = balloon->notification();
- GURL EXPECTED_ICON_URL = test_server()->GetURL(kExpectedIconUrl);
- EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url());
- EXPECT_EQ(ASCIIToUTF16("My Title"), notification.title());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestAllowNotificationsFromAllSites) {
- // Verify that all domains can be allowed to show notifications.
- SetDefaultPermissionSetting(CONTENT_SETTING_ALLOW);
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
- EXPECT_EQ(0U, InfoBarTabHelper::FromWebContents(
- chrome::GetWebContentsAt(browser(), 0))->GetInfoBarCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyNotificationsFromAllSites) {
- // Verify that no domain can show notifications.
- SetDefaultPermissionSetting(CONTENT_SETTING_BLOCK);
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), false);
- EXPECT_EQ("-1", result);
-
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyDomainAndAllowAll) {
- // Verify that denying a domain and allowing all shouldn't show
- // notifications from the denied domain.
- DenyOrigin(test_page_url_.GetOrigin());
- SetDefaultPermissionSetting(CONTENT_SETTING_ALLOW);
-
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), false);
- EXPECT_EQ("-1", result);
-
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestAllowDomainAndDenyAll) {
- // Verify that allowing a domain and denying all others should show
- // notifications from the allowed domain.
- AllowOrigin(test_page_url_.GetOrigin());
- SetDefaultPermissionSetting(CONTENT_SETTING_BLOCK);
-
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestDenyAndThenAllowDomain) {
- // Verify that denying and again allowing should show notifications.
- DenyOrigin(test_page_url_.GetOrigin());
-
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- std::string result = CreateSimpleNotification(browser(), false);
- EXPECT_EQ("-1", result);
-
- ASSERT_EQ(0, GetNotificationCount());
-
- AllowOrigin(test_page_url_.GetOrigin());
- result = CreateSimpleNotification(browser(), true);
- EXPECT_NE("-1", result);
-
- ASSERT_EQ(1, GetNotificationCount());
- EXPECT_EQ(0U, InfoBarTabHelper::FromWebContents(
- chrome::GetWebContentsAt(browser(), 0))->GetInfoBarCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCreateDenyCloseNotifications) {
- // Verify able to create, deny, and close the notification.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- CreateSimpleNotification(browser(), true);
- ASSERT_EQ(1, GetNotificationCount());
-
- DenyOrigin(test_page_url_.GetOrigin());
- ContentSettingsForOneType settings;
- GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
- ASSERT_TRUE(CheckOriginInSetting(settings, test_page_url_.GetOrigin()));
-
- const std::deque<Balloon*>& balloons1 = GetActiveBalloons();
- EXPECT_EQ(1U, balloons1.size());
- ASSERT_TRUE(CloseNotificationAndWait(balloons1[0]->notification()));
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-// Crashes on Linux/Win. See http://crbug.com/160657.
-IN_PROC_BROWSER_TEST_F(
- NotificationsTest,
- DISABLED_TestOriginPrefsNotSavedInIncognito) {
- // Verify that allow/deny origin preferences are not saved in incognito.
- Browser* incognito = CreateIncognitoBrowser();
- ui_test_utils::NavigateToURL(incognito, test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(incognito));
- PerformActionOnInfobar(incognito, DENY, 0, 0);
- CloseBrowserWindow(incognito);
-
- incognito = CreateIncognitoBrowser();
- ui_test_utils::NavigateToURL(incognito, test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(incognito));
- PerformActionOnInfobar(incognito, ALLOW, 0, 0);
- CreateSimpleNotification(incognito, true);
- ASSERT_EQ(1, GetNotificationCount());
- CloseBrowserWindow(incognito);
-
- incognito = CreateIncognitoBrowser();
- ui_test_utils::NavigateToURL(incognito, test_page_url_);
- 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, TestExitBrowserWithInfobar) {
- // Exit the browser window, when the infobar appears.
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCrashTabWithPermissionInfobar) {
- // Test crashing the tab with permission infobar doesn't crash Chrome.
- ui_test_utils::NavigateToURLWithDisposition(
- browser(),
- empty_page_url_,
- NEW_BACKGROUND_TAB,
- ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
- chrome::ActivateTabAt(browser(), 0, true);
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
- CrashTab(browser(), 0);
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestKillNotificationProcess) {
- // Test killing a notification doesn't crash Chrome.
- AllowAllOrigins();
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- CreateSimpleNotification(browser(), true);
- ASSERT_EQ(1, GetNotificationCount());
-
- const std::deque<Balloon*>& balloons = GetActiveBalloons();
- ASSERT_EQ(1U, balloons.size());
- CrashNotification(balloons[0]);
- ASSERT_EQ(0, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestIncognitoNotification) {
- // Test notifications in incognito window.
- Browser* browser = CreateIncognitoBrowser();
- ui_test_utils::NavigateToURL(browser, test_page_url_);
- chrome::ActivateTabAt(browser, 0, true);
- ASSERT_TRUE(RequestPermissionAndWait(browser));
- PerformActionOnInfobar(browser, ALLOW, 0, 0);
- CreateSimpleNotification(browser, true);
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseTabWithPermissionInfobar) {
- // Test that user can close tab when infobar present.
- ui_test_utils::NavigateToURLWithDisposition(
- browser(),
- GURL("about:blank"),
- NEW_BACKGROUND_TAB,
- ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
- chrome::ActivateTabAt(browser(), 0, true);
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
- content::WindowedNotificationObserver observer(
- content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
- content::NotificationService::AllSources());
- chrome::CloseWebContents(browser(), chrome::GetWebContentsAt(browser(), 0));
- observer.Wait();
-}
-
-IN_PROC_BROWSER_TEST_F(
- NotificationsTest,
- TestNavigateAwayWithPermissionInfobar) {
- // Test navigating away when an infobar is present,
- // then trying to create a notification from the same page.
- ui_test_utils::NavigateToURLWithDisposition(
- browser(),
- GURL("about:blank"),
- NEW_BACKGROUND_TAB,
- ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
- chrome::ActivateTabAt(browser(), 0, true);
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- ASSERT_TRUE(RequestPermissionAndWait(browser()));
- PerformActionOnInfobar(browser(), ALLOW, 0, 0);
- CreateSimpleNotification(browser(), true);
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCrashRendererNotificationRemain) {
- // 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);
- chrome::ActivateTabAt(browser(), 0, true);
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
- CreateSimpleNotification(browser(), true);
- ASSERT_EQ(1, GetNotificationCount());
- CrashTab(browser(), 0);
- ASSERT_EQ(1, GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNotificationReplacement) {
- // Test that we can replace a notification using the replaceId.
- AllowAllOrigins();
-
- ui_test_utils::NavigateToURL(browser(), test_page_url_);
-
- 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);
-
- const std::deque<Balloon*>& balloons = GetActiveBalloons();
- EXPECT_EQ(1U, balloons.size());
- const Notification& notification = balloons[0]->notification();
- GURL EXPECTED_ICON_URL = test_server()->GetURL(kExpectedIconUrl);
- EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url());
- EXPECT_EQ(ASCIIToUTF16("Title2"), notification.title());
- EXPECT_EQ(ASCIIToUTF16("Body2"), notification.body());
-}
-
-#endif // !defined(OS_CHROMEOS)
« no previous file with comments | « no previous file | chrome/test/data/notifications/notification_tester.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698