| Index: chrome/test/functional/notifications.py
|
| ===================================================================
|
| --- chrome/test/functional/notifications.py (revision 170658)
|
| +++ chrome/test/functional/notifications.py (working copy)
|
| @@ -1,546 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright (c) 2011 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.
|
| -
|
| -import os
|
| -import urllib
|
| -
|
| -import pyauto_functional
|
| -import pyauto
|
| -
|
| -
|
| -class NotificationsTest(pyauto.PyUITest):
|
| - """Test of HTML5 desktop notifications."""
|
| - def __init__(self, methodName='runTest'):
|
| - super(NotificationsTest, self).__init__(methodName)
|
| - self.EMPTY_PAGE_URL = self.GetHttpURLForDataPath('empty.html')
|
| - # Content settings for default notification permission.
|
| - self.ALLOW_ALL_SETTING = 1
|
| - self.DENY_ALL_SETTING = 2
|
| - self.ASK_SETTING = 3
|
| -
|
| - # HTML page used for notification testing.
|
| - self.TEST_PAGE_URL = self.GetFileURLForDataPath(
|
| - os.path.join('notifications', 'notification_tester.html'))
|
| -
|
| - def Debug(self):
|
| - """Test method for experimentation.
|
| -
|
| - This method will not run automatically.
|
| - """
|
| - while True:
|
| - raw_input('Interact with the browser and hit <enter> to dump notification'
|
| - 'state...')
|
| - print '*' * 20
|
| - self.pprint(self.GetActiveNotifications())
|
| - self.pprint(self._GetDefaultPermissionSetting())
|
| -
|
| - def _SetDefaultPermissionSetting(self, setting):
|
| - """Sets the default setting for whether sites are allowed to create
|
| - notifications.
|
| - """
|
| - self.SetPrefs(pyauto.kDefaultContentSettings, {u'notifications': setting})
|
| -
|
| - def _GetDefaultPermissionSetting(self):
|
| - """Gets the default setting for whether sites are allowed to create
|
| - notifications.
|
| - """
|
| - return self.GetPrefsInfo().Prefs(
|
| - pyauto.kDefaultContentSettings)[u'notifications']
|
| -
|
| - def _GetDeniedOrigins(self):
|
| - """Gets the list of origins that are explicitly denied to create
|
| - notifications.
|
| - """
|
| - return (self.GetPrefsInfo().Prefs(pyauto.kDesktopNotificationDeniedOrigins)
|
| - or [])
|
| -
|
| - def _GetAllowedOrigins(self):
|
| - """Gets the list of origins that are explicitly allowed to create
|
| - notifications.
|
| - """
|
| - return (self.GetPrefsInfo().Prefs(pyauto.kDesktopNotificationAllowedOrigins)
|
| - or [])
|
| -
|
| - def _SetAllowedOrigins(self, origins):
|
| - """Sets the list of allowed origins to the given list.
|
| -
|
| - None of the items in the list should be explicitly denied.
|
| - """
|
| - return self.SetPrefs(pyauto.kDesktopNotificationAllowedOrigins, origins)
|
| -
|
| - def _SetDeniedOrigins(self, origins):
|
| - """Sets the list of denied origins to the given list.
|
| -
|
| - None of the items in the list should be explicitly allowed.
|
| - """
|
| - return self.SetPrefs(pyauto.kDesktopNotificationDeniedOrigins, origins)
|
| -
|
| - def _DenyOrigin(self, new_origin):
|
| - """Denies the given origin to create notifications.
|
| -
|
| - If it was explicitly allowed, that preference is dropped.
|
| - """
|
| - self._DropOriginPreference(new_origin)
|
| - denied = self._GetDeniedOrigins()
|
| - if new_origin not in denied:
|
| - self._SetDeniedOrigins(denied + [new_origin])
|
| -
|
| - def _AllowOrigin(self, new_origin):
|
| - """Allows the given origin to create notifications. If it was explicitly
|
| - denied, that preference is dropped.
|
| - """
|
| - self._DropOriginPreference(new_origin)
|
| - allowed = self._GetAllowedOrigins()
|
| - if new_origin not in allowed:
|
| - self._SetAllowedOrigins(allowed + [new_origin])
|
| -
|
| - def _DropOriginPreference(self, new_origin):
|
| - """Drops the preference as to whether this origin should be allowed to
|
| - create notifications. If it was explicitly allowed or explicitly denied,
|
| - that preference is removed.
|
| - """
|
| - allowed = self._GetAllowedOrigins()
|
| - if allowed and new_origin in allowed:
|
| - allowed.remove(new_origin)
|
| - self._SetAllowedOrigins(allowed)
|
| - denied = self._GetDeniedOrigins()
|
| - if denied and new_origin in denied:
|
| - denied.remove(new_origin)
|
| - self._SetDeniedOrigins(denied)
|
| -
|
| - def _AllowAllOrigins(self):
|
| - """Allows any origin to create notifications."""
|
| - self._SetDefaultPermissionSetting(self.ALLOW_ALL_SETTING)
|
| - self._SetDeniedOrigins([])
|
| -
|
| - def _VerifyInfobar(self, origin, tab_index=0, windex=0):
|
| - """Helper to verify the notification infobar contents are correct.
|
| -
|
| - Defaults to first tab in first window.
|
| -
|
| - Args:
|
| - origin: origin of the notification, e.g., www.gmail.com
|
| - tab_index: index of the tab within the given window
|
| - windex: index of the window
|
| - """
|
| - tab_info = self.GetBrowserInfo()['windows'][windex]['tabs'][tab_index]
|
| - self.assertEquals(1, len(tab_info['infobars']))
|
| - infobar = tab_info['infobars'][0]
|
| - text = 'Allow %s to show desktop notifications?' % origin
|
| - self.assertEqual(text, infobar['text'])
|
| - self.assertEqual(2, len(infobar['buttons']))
|
| - self.assertEqual('Allow', infobar['buttons'][0])
|
| - self.assertEqual('Deny', infobar['buttons'][1])
|
| -
|
| - def _CreateSimpleNotification(self, img_url, title, text,
|
| - replace_id='', tab_index=0, windex=0):
|
| - """Creates a simple notification.
|
| -
|
| - Returns the id of the notification, which can be used to cancel it later.
|
| -
|
| - This executes a script in the page which shows a notification.
|
| - This will only work if the page is navigated to |TEST_PAGE_URL|.
|
| - The page must also have permission to show notifications.
|
| -
|
| - Args:
|
| - img_url: url of a image to use; can be a data url
|
| - title: title of the notification
|
| - text: text in the notification
|
| - replace_id: id string to be used for this notification. If another
|
| - notification is shown with the same replace_id, the former
|
| - will be replaced.
|
| - tab_index: index of the tab within the given window
|
| - windex: index of the window
|
| - """
|
| - return self.CallJavascriptFunc('createNotification',
|
| - [img_url, title, text, replace_id],
|
| - tab_index,
|
| - windex);
|
| -
|
| - def _CreateHTMLNotification(self, content_url, replace_id='',
|
| - wait_for_display=True, tab_index=0, windex=0):
|
| - """Creates an HTML notification.
|
| -
|
| - Returns the id of the notification, which can be used to cancel it later.
|
| -
|
| - This executes a script in the page which shows a notification.
|
| - This will only work if the page is navigated to |TEST_PAGE_URL|.
|
| - The page must also have permission to show notifications.
|
| -
|
| - Args:
|
| - content_url: url of the page to show in the notification
|
| - replace_id: id string to be used for this notification. If another
|
| - notification is shown with the same replace_id, the former
|
| - will be replaced.
|
| - wait_for_display: whether we should wait for the notification to display
|
| - tab_index: index of the tab within the given window
|
| - windex: index of the window
|
| - """
|
| - return self.CallJavascriptFunc('createHTMLNotification',
|
| - [content_url, replace_id, wait_for_display],
|
| - tab_index,
|
| - windex)
|
| -
|
| - def _RequestPermission(self, tab_index=0, windex=0):
|
| - """Requests permission to create notifications.
|
| -
|
| - This will only work if the current page is navigated to |TEST_PAGE_URL|.
|
| -
|
| - Args:
|
| - tab_index: index of the tab within the given window
|
| - windex: index of the window
|
| - """
|
| - self.CallJavascriptFunc('requestPermission', [], tab_index, windex)
|
| -
|
| - def _CancelNotification(self, notification_id, tab_index=0, windex=0):
|
| - """Cancels a notification with the given id.
|
| -
|
| - This canceling is done in the page that showed that notification and so
|
| - follows a different path than closing a notification via the UI.
|
| -
|
| - This function should NOT be called until |WaitForNotificationCount| has been
|
| - used to verify the notification is showing. This function cannot be used to
|
| - cancel a notification that is in the display queue.
|
| -
|
| - This will only work if the page is navigated to |TEST_PAGE_URL|.
|
| -
|
| - Args:
|
| - notification_id: id of the notification to cancel
|
| - tab_index: index of the tab within the given window that created the
|
| - notification
|
| - windex: index of the window
|
| - """
|
| - msg = self.CallJavascriptFunc(
|
| - 'cancelNotification', [notification_id], tab_index, windex)
|
| - # '1' signifies success.
|
| - self.assertEquals('1', msg)
|
| -
|
| - def testCreateSimpleNotification(self):
|
| - """Creates a simple notification."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateSimpleNotification('no_such_file.png', 'My Title', 'My Body')
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - notification = self.GetActiveNotifications()[0]
|
| - html_data = urllib.unquote(notification['content_url'])
|
| - self.assertTrue('no_such_file.png' in html_data)
|
| - self.assertTrue('My Title' in html_data)
|
| - self.assertTrue('My Body' in html_data)
|
| -
|
| - def testCreateHTMLNotification(self):
|
| - """Creates an HTML notification using a fake url."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - notification = self.GetActiveNotifications()[0]
|
| - self.assertEquals(self.EMPTY_PAGE_URL, notification['content_url'])
|
| - self.assertEquals('', notification['display_source'])
|
| - self.assertEquals('file:///', notification['origin_url'])
|
| -
|
| - def testCloseNotification(self):
|
| - """Creates a notification and closes it."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.CloseNotification(0)
|
| - self.assertFalse(self.GetActiveNotifications())
|
| -
|
| - def testCancelNotification(self):
|
| - """Creates a notification and cancels it in the origin page."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - note_id = self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertNotEquals(-1, note_id)
|
| - self.WaitForNotificationCount(1)
|
| - self._CancelNotification(note_id)
|
| - self.assertFalse(self.GetActiveNotifications())
|
| -
|
| - def testPermissionInfobarAppears(self):
|
| - """Requests notification privileges and verifies the infobar appears."""
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.assertFalse(self.GetActiveNotifications())
|
| - self._VerifyInfobar('') # file:/// origins are blank
|
| -
|
| - def testAllowOnPermissionInfobar(self):
|
| - """Tries to create a notification and clicks allow on the infobar."""
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - # This notification should not be shown because we do not have permission.
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertFalse(self.GetActiveNotifications())
|
| -
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.PerformActionOnInfobar('accept', 0)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.WaitForNotificationCount(1)
|
| -
|
| - def testOriginPreferencesBasic(self):
|
| - """Tests that we can allow and deny origins."""
|
| - altavista = 'http://www.altavista.com'
|
| - gmail = 'http://www.gmail.com'
|
| - yahoo = 'http://www.yahoo.com'
|
| - self._SetDeniedOrigins([altavista, gmail])
|
| - self.assertEquals(altavista, self._GetDeniedOrigins()[0])
|
| - self.assertEquals(gmail, self._GetDeniedOrigins()[1])
|
| - self._DenyOrigin(yahoo)
|
| - self.assertEquals(yahoo, self._GetDeniedOrigins()[2])
|
| - self.assertEquals(3, len(self._GetDeniedOrigins()))
|
| - self._DropOriginPreference(gmail)
|
| - self.assertEquals(2, len(self._GetDeniedOrigins()))
|
| - self.assertFalse(gmail in self._GetDeniedOrigins())
|
| -
|
| - self._AllowOrigin(yahoo)
|
| - self.assertEquals(1, len(self._GetDeniedOrigins()))
|
| - self.assertFalse(yahoo in self._GetDeniedOrigins())
|
| - self.assertTrue(yahoo in self._GetAllowedOrigins())
|
| -
|
| - self._SetAllowedOrigins([altavista, gmail])
|
| - self._SetDeniedOrigins([])
|
| - self.assertEquals(altavista, self._GetAllowedOrigins()[0])
|
| - self.assertEquals(gmail, self._GetAllowedOrigins()[1])
|
| - self._AllowOrigin(yahoo)
|
| - self.assertEquals(yahoo, self._GetAllowedOrigins()[2])
|
| - self.assertEquals(3, len(self._GetAllowedOrigins()))
|
| - self._DropOriginPreference(gmail)
|
| - self.assertEquals(2, len(self._GetAllowedOrigins()))
|
| - self.assertFalse(gmail in self._GetAllowedOrigins())
|
| -
|
| - self._DenyOrigin(yahoo)
|
| - self.assertEquals(1, len(self._GetAllowedOrigins()))
|
| - self.assertTrue(yahoo in self._GetDeniedOrigins())
|
| - self.assertFalse(yahoo in self._GetAllowedOrigins())
|
| -
|
| - def testDenyOnPermissionInfobar (self):
|
| - """Test that no notification is created when Deny is chosen
|
| - from permission infobar."""
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.PerformActionOnInfobar('cancel', 0)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertFalse(self.GetActiveNotifications())
|
| - self.assertEquals(['file:///'], self._GetDeniedOrigins())
|
| -
|
| - def testClosePermissionInfobar(self):
|
| - """Test that no notification is created when permission
|
| - infobar is dismissed."""
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.PerformActionOnInfobar('dismiss', 0)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertFalse(self.GetActiveNotifications())
|
| - self.assertFalse(self._GetDeniedOrigins())
|
| -
|
| - def testNotificationWithPropertyMissing(self):
|
| - """Test that a notification can be created if one property is missing."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateSimpleNotification('no_such_file.png', 'My Title', '')
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - html_data = urllib.unquote(self.GetActiveNotifications()[0]['content_url'])
|
| - self.assertTrue('no_such_file.png' in html_data)
|
| - self.assertTrue('My Title' in html_data)
|
| -
|
| - def testAllowNotificationsFromAllSites(self):
|
| - """Verify that all domains can be allowed to show notifications."""
|
| - self._SetDefaultPermissionSetting(self.ALLOW_ALL_SETTING)
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - self.assertFalse(self.GetBrowserInfo()['windows'][0]['tabs'][0]['infobars'])
|
| -
|
| - def testDenyNotificationsFromAllSites(self):
|
| - """Verify that no domain can show notifications."""
|
| - self._SetDefaultPermissionSetting(self.DENY_ALL_SETTING)
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertFalse(self.GetActiveNotifications())
|
| -
|
| - def testDenyDomainAndAllowAll(self):
|
| - """Verify that denying a domain and allowing all shouldn't show
|
| - notifications from the denied domain."""
|
| - self._DenyOrigin('file:///')
|
| - self._SetDefaultPermissionSetting(self.ALLOW_ALL_SETTING)
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertFalse(self.GetActiveNotifications())
|
| -
|
| - def testAllowDomainAndDenyAll(self):
|
| - """Verify that allowing a domain and denying all others should show
|
| - notifications from the allowed domain."""
|
| - self._AllowOrigin('file:///')
|
| - self._SetDefaultPermissionSetting(self.DENY_ALL_SETTING)
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - self.assertFalse(self.GetBrowserInfo()['windows'][0]['tabs'][0]['infobars'])
|
| -
|
| - def testDenyAndThenAllowDomain(self):
|
| - """Verify that denying and again allowing should show notifications."""
|
| - self._DenyOrigin('file:///')
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(len(self.GetActiveNotifications()), 0)
|
| - self._AllowOrigin('file:///')
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - self.assertFalse(self.GetBrowserInfo()['windows'][0]['tabs'][0]['infobars'])
|
| -
|
| - def testCreateDenyCloseNotifications(self):
|
| - """Verify able to create, deny, and close the notification."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - origin = 'file:///'
|
| - self._DenyOrigin(origin)
|
| - self.assertTrue(origin in self._GetDeniedOrigins())
|
| - self.CloseNotification(0)
|
| - self.assertEquals(0, len(self.GetActiveNotifications()))
|
| -
|
| - def testOriginPrefsNotSavedInIncognito(self):
|
| - """Verify that allow/deny origin preferences are not saved in incognito."""
|
| - self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
|
| - self.NavigateToURL(self.TEST_PAGE_URL, 1, 0)
|
| - self._RequestPermission(windex=1)
|
| - self.assertTrue(self.WaitForInfobarCount(1, windex=1))
|
| - self.PerformActionOnInfobar('cancel', 0, windex=1)
|
| -
|
| - self.CloseBrowserWindow(1)
|
| - self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
|
| - self.NavigateToURL(self.TEST_PAGE_URL, 1, 0)
|
| - self._RequestPermission(windex=1)
|
| - self.assertTrue(self.WaitForInfobarCount(1, windex=1))
|
| - self.PerformActionOnInfobar('accept', 0, windex=1)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL, windex=1)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| -
|
| - self.CloseBrowserWindow(1)
|
| - self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
|
| - self.NavigateToURL(self.TEST_PAGE_URL, 1, 0)
|
| - self._RequestPermission(windex=1)
|
| - self.assertTrue(self.WaitForInfobarCount(1, windex=1))
|
| -
|
| - self.assertFalse(self._GetDeniedOrigins())
|
| - self.assertFalse(self._GetAllowedOrigins())
|
| -
|
| - def testExitBrowserWithInfobar(self):
|
| - """Exit the browser window, when the infobar appears."""
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| -
|
| - def testCrashTabWithPermissionInfobar(self):
|
| - """Test crashing the tab with permission infobar doesn't crash Chrome."""
|
| - self.AppendTab(pyauto.GURL(self.EMPTY_PAGE_URL))
|
| - self.assertTrue(self.ActivateTab(0))
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.KillRendererProcess(
|
| - self.GetBrowserInfo()['windows'][0]['tabs'][0]['renderer_pid'])
|
| -
|
| - def testKillNotificationProcess(self):
|
| - """Test killing a notification doesn't crash Chrome."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.KillRendererProcess(self.GetActiveNotifications()[0]['pid'])
|
| - self.WaitForNotificationCount(0)
|
| -
|
| - def testIncognitoNotification(self):
|
| - """Test notifications in incognito window."""
|
| - self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
|
| - self.NavigateToURL(self.TEST_PAGE_URL, 1, 0)
|
| - self.assertTrue(self.ActivateTab(0, 1))
|
| - self._RequestPermission(windex=1)
|
| - self.assertTrue(self.WaitForInfobarCount(1, windex=1))
|
| - self.PerformActionOnInfobar('accept', infobar_index=0, windex=1)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL, windex=1)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| -
|
| - def testSpecialURLNotification(self):
|
| - """Test a page cannot create a notification to a chrome: url."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification('chrome://settings',
|
| - wait_for_display=False);
|
| - self.assertFalse(self.GetActiveNotifications())
|
| -
|
| - def testCloseTabWithPermissionInfobar(self):
|
| - """Test that user can close tab when infobar present."""
|
| - self.AppendTab(pyauto.GURL('about:blank'))
|
| - self.ActivateTab(0)
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.CloseTab()
|
| -
|
| - def testNavigateAwayWithPermissionInfobar(self):
|
| - """Test navigating away when an infobar is present, then trying to create a
|
| - notification from the same page."""
|
| - self.AppendTab(pyauto.GURL('about:blank'))
|
| - self.assertTrue(self.ActivateTab(0))
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._RequestPermission()
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.PerformActionOnInfobar('accept', 0)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| -
|
| - def testCrashRendererNotificationRemain(self):
|
| - """Test crashing renderer does not close or crash notification."""
|
| - self._AllowAllOrigins()
|
| - self.AppendTab(pyauto.GURL('about:blank'))
|
| - self.ActivateTab(0)
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL)
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| - self.KillRendererProcess(
|
| - self.GetBrowserInfo()['windows'][0]['tabs'][0]['renderer_pid'])
|
| - self.assertEquals(1, len(self.GetActiveNotifications()))
|
| -
|
| - def testNotificationOrderAfterClosingOne(self):
|
| - """Tests that closing a notification leaves the rest
|
| - of the notifications in the correct order.
|
| - """
|
| - if self.IsWin7():
|
| - return # crbug.com/66072
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateSimpleNotification('', 'Title1', '')
|
| - self._CreateSimpleNotification('', 'Title2', '')
|
| - self._CreateSimpleNotification('', 'Title3', '')
|
| - old_notifications = self.GetAllNotifications()
|
| - self.assertEquals(3, len(old_notifications))
|
| - self.CloseNotification(1)
|
| - new_notifications = self.GetAllNotifications()
|
| - self.assertEquals(2, len(new_notifications))
|
| - self.assertEquals(old_notifications[0]['id'], new_notifications[0]['id'])
|
| - self.assertEquals(old_notifications[2]['id'], new_notifications[1]['id'])
|
| -
|
| - def testNotificationReplacement(self):
|
| - """Test that we can replace a notification using the replaceId."""
|
| - self._AllowAllOrigins()
|
| - self.NavigateToURL(self.TEST_PAGE_URL)
|
| - self._CreateSimpleNotification('', 'Title2', '', 'chat')
|
| - self.WaitForNotificationCount(1)
|
| - # Since this notification has the same replaceId, 'chat', it should replace
|
| - # the first notification.
|
| - self._CreateHTMLNotification(self.EMPTY_PAGE_URL, 'chat')
|
| - notifications = self.GetActiveNotifications()
|
| - self.assertEquals(1, len(notifications))
|
| - self.assertEquals(self.EMPTY_PAGE_URL, notifications[0]['content_url'])
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - pyauto_functional.Main()
|
|
|