summaryrefslogtreecommitdiffstats
path: root/testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py')
-rw-r--r--testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py116
1 files changed, 116 insertions, 0 deletions
diff --git a/testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py b/testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py
new file mode 100644
index 000000000..2cf67ce7f
--- /dev/null
+++ b/testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py
@@ -0,0 +1,116 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from abc import ABCMeta
+
+from marionette_driver import By
+
+from firefox_puppeteer.ui.base import UIBaseLib
+
+
+class BaseNotification(UIBaseLib):
+ """Abstract base class for any kind of notification."""
+
+ __metaclass__ = ABCMeta
+
+ @property
+ def close_button(self):
+ """Provide access to the close button.
+
+ :returns: The close button.
+ """
+ return self.element.find_element(By.ANON_ATTRIBUTE,
+ {'anonid': 'closebutton'})
+
+ @property
+ def label(self):
+ """Provide access to the notification label.
+
+ :returns: The notification label.
+ """
+ return self.element.get_attribute('label')
+
+ @property
+ def origin(self):
+ """Provide access to the notification origin.
+
+ :returns: The notification origin.
+ """
+ return self.element.get_attribute('origin')
+
+ def close(self, force=False):
+ """Close the notification.
+
+ :param force: Optional, if True force close the notification.
+ Defaults to False.
+ """
+ if force:
+ self.marionette.execute_script('arguments[0].click()',
+ script_args=[self.close_button])
+ else:
+ self.close_button.click()
+
+ self.window.wait_for_notification(None)
+
+
+class AddOnInstallBlockedNotification(BaseNotification):
+ """Add-on install blocked notification."""
+
+ @property
+ def allow_button(self):
+ """Provide access to the allow button.
+
+ :returns: The allow button.
+ """
+ return self.element.find_element(
+ By.ANON_ATTRIBUTE, {'anonid': 'button'}).find_element(
+ By.ANON_ATTRIBUTE, {'anonid': 'button'})
+
+
+class AddOnInstallConfirmationNotification(BaseNotification):
+ """Add-on install confirmation notification."""
+
+ @property
+ def addon_name(self):
+ """Provide access to the add-on name.
+
+ :returns: The add-on name.
+ """
+ label = self.element.find_element(
+ By.CSS_SELECTOR, '#addon-install-confirmation-content label')
+ return label.get_attribute('value')
+
+ def cancel_button(self):
+ """Provide access to the cancel button.
+
+ :returns: The cancel button.
+ """
+ return self.element.find_element(
+ By.ID, 'addon-install-confirmation-cancel')
+
+ def install_button(self):
+ """Provide access to the install button.
+
+ :returns: The install button.
+ """
+ return self.element.find_element(
+ By.ID, 'addon-install-confirmation-accept')
+
+
+class AddOnInstallCompleteNotification(BaseNotification):
+ """Add-on install complete notification."""
+
+ pass
+
+
+class AddOnInstallFailedNotification(BaseNotification):
+ """Add-on install failed notification."""
+
+ pass
+
+
+class AddOnProgressNotification(BaseNotification):
+ """Add-on progress notification."""
+
+ pass