browser/metro/base/tests/mochitest/browser_notifications.js

Wed, 31 Dec 2014 06:55:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:50 +0100
changeset 2
7e26c7da4463
permissions
-rw-r--r--

Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 "use strict";
     7 function test() {
     8   runTests();
     9 }
    11 function cleanup() {
    12   let notificationBox = Browser.getNotificationBox();
    13   notificationBox && notificationBox.removeAllNotifications(true);
    14 }
    16 const XHTML_NS = "http://www.w3.org/1999/xhtml";
    18 function createTestNotification(aLabel, aID) {
    19     let notificationBox = Browser.getNotificationBox();
    20     let notn = notificationBox.appendNotification(aLabel || "some label", aID || "test-notification",
    21                                                   "", notificationBox.PRIORITY_INFO_LOW, []);
    22     return notn;
    23 }
    25 gTests.push({
    26   desc: "Verify notification bindings are correct",
    27   run: function () {
    28     let notificationBox = Browser.getNotificationBox();
    29     let notn = createTestNotification();
    31     let binding = notn && getComputedStyle(notn).MozBinding;
    32     is(binding,
    33        "url(\"chrome://browser/content/bindings/notification.xml#notification\")",
    34        "notification has expected binding");
    36     is(getComputedStyle(notificationBox).MozBinding,
    37        "url(\"chrome://browser/content/bindings/notification.xml#notificationbox\")",
    38        "notificationbox has expected binding");
    39   },
    40   tearDown: cleanup
    41 });
    43 gTests.push({
    44   desc: "Check label property handling",
    45   run: function () {
    46     let notn = createTestNotification("the label");
    47     is(notn.label, "the label");
    49     let doc = notn.ownerDocument;
    50     let fragment = doc.createDocumentFragment();
    51     try {
    52       let boldLabel = doc.createElementNS(XHTML_NS, "b");
    53       boldLabel.innerHTML = 'The <span class="foo">label</span>';
    54       fragment.appendChild(boldLabel);
    55       notn.label = fragment;
    56     } catch (ex) {
    57       ok(!ex, "Exception creating notification label with markup: "+ex.message);
    58     }
    60     // expect to get a documentFragment back when the label has markup
    61     let labelNode = notn.label;
    62     is(labelNode.nodeType,
    63        Components.interfaces.nsIDOMNode.DOCUMENT_FRAGMENT_NODE,
    64        "notification label getter returns documentFragment nodeType "+Components.interfaces.nsIDOMNode.DOCUMENT_FRAGMENT_NODE+", when value contains markup");
    65     ok(labelNode !== fragment,
    66        "label fragment is a newly created fragment, not the one we assigned in the setter");
    67     ok(labelNode.querySelector("b > .foo"),
    68        "label fragment has the expected elements in it");
    69   },
    70   tearDown: cleanup
    71 });
    73 gTests.push({
    74   desc: "Check adoptNotification does what we expect",
    75   setUp: function() {
    76     yield addTab("about:start");
    77     yield addTab("about:mozilla");
    78   },
    79   run: function () {
    80     let browser = getBrowser();
    81     let notn = createTestNotification("label", "adopt-notification");
    82     let firstBox = Browser.getNotificationBox();
    83     let nextTab = Browser.getNextTab(Browser.getTabForBrowser(browser));
    84     let nextBox = Browser.getNotificationBox(nextTab.browser);
    86     ok(firstBox.getNotificationWithValue("adopt-notification"), "notificationbox has our notification intially");
    87     nextBox.adoptNotification(notn);
    89     ok(!firstBox.getNotificationWithValue("adopt-notification"), "after adoptNotification, original notificationbox no longer has our notification");
    90     ok(nextBox.getNotificationWithValue("adopt-notification"), "next notificationbox has our notification");
    91   },
    92   // leave browser in clean state for next tests
    93   tearDown: cleanUpOpenedTabs
    94 });

mercurial