{
  "results": [
    {
      "test": "/notifications/constructor-invalid.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Called the notification constructor with no arguments.",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        }
      ]
    },
    {
      "test": "/notifications/permission.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Checked the Notification.permission property.",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/notifications/idlharness.https.any.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "idl_test setup",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Partial interface ServiceWorkerRegistration: original interface defined",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Partial interface ServiceWorkerGlobalScope: original interface defined",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: existence and properties of interface object",
          "status": "FAIL",
          "message": "assert_equals: prototype of Notification is not EventTarget expected function \"function EventTarget() { [native code] }\" but got function \"function() {\n    [native code]\n}\""
        },
        {
          "name": "Notification interface object length",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface object name",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: existence and properties of interface prototype object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: existence and properties of interface prototype object's \"constructor\" property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: existence and properties of interface prototype object's @@unscopables property",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: attribute permission",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: operation requestPermission(NotificationPermissionCallback)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: attribute maxActions",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: attribute onclick",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onclick' expected \"get onclick\" but got \"onclick\""
        },
        {
          "name": "Notification interface: attribute onshow",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onshow' expected \"get onshow\" but got \"onshow\""
        },
        {
          "name": "Notification interface: attribute onerror",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onerror' expected \"get onerror\" but got \"onerror\""
        },
        {
          "name": "Notification interface: attribute onclose",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get onclose' expected \"get onclose\" but got \"onclose\""
        },
        {
          "name": "Notification interface: attribute title",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get title' expected \"get title\" but got \"title\""
        },
        {
          "name": "Notification interface: attribute dir",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get dir' expected \"get dir\" but got \"dir\""
        },
        {
          "name": "Notification interface: attribute lang",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get lang' expected \"get lang\" but got \"lang\""
        },
        {
          "name": "Notification interface: attribute body",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get body' expected \"get body\" but got \"body\""
        },
        {
          "name": "Notification interface: attribute tag",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get tag' expected \"get tag\" but got \"tag\""
        },
        {
          "name": "Notification interface: attribute image",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get image' expected \"get image\" but got \"image\""
        },
        {
          "name": "Notification interface: attribute icon",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get icon' expected \"get icon\" but got \"icon\""
        },
        {
          "name": "Notification interface: attribute badge",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get badge' expected \"get badge\" but got \"badge\""
        },
        {
          "name": "Notification interface: attribute vibrate",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"vibrate\" expected true got false"
        },
        {
          "name": "Notification interface: attribute timestamp",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get timestamp' expected \"get timestamp\" but got \"timestamp\""
        },
        {
          "name": "Notification interface: attribute renotify",
          "status": "FAIL",
          "message": "assert_true: The prototype object must have a property \"renotify\" expected true got false"
        },
        {
          "name": "Notification interface: attribute silent",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get silent' expected \"get silent\" but got \"silent\""
        },
        {
          "name": "Notification interface: attribute requireInteraction",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get requireInteraction' expected \"get requireInteraction\" but got \"requireInteraction\""
        },
        {
          "name": "Notification interface: attribute data",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get data' expected \"get data\" but got \"data\""
        },
        {
          "name": "Notification interface: attribute actions",
          "status": "FAIL",
          "message": "assert_equals: getter must have the name 'get actions' expected \"get actions\" but got \"actions\""
        },
        {
          "name": "Notification interface: operation close()",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification must be primary interface of notification",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Stringification of notification",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"permission\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"requestPermission(NotificationPermissionCallback)\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: calling requestPermission(NotificationPermissionCallback) on notification with too few arguments must throw TypeError",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"maxActions\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"onclick\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"onshow\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"onerror\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"onclose\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"title\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"dir\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"lang\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"body\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"tag\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"image\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"icon\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"badge\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"vibrate\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"vibrate\" not found in prototype chain"
        },
        {
          "name": "Notification interface: notification must inherit property \"timestamp\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"renotify\" with the proper type",
          "status": "FAIL",
          "message": "assert_inherits: property \"renotify\" not found in prototype chain"
        },
        {
          "name": "Notification interface: notification must inherit property \"silent\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"requireInteraction\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"data\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"actions\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "Notification interface: notification must inherit property \"close()\" with the proper type",
          "status": "PASS",
          "message": null
        },
        {
          "name": "NotificationEvent interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ServiceWorkerRegistration interface: operation showNotification(DOMString, NotificationOptions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ServiceWorkerRegistration interface: operation getNotifications(GetNotificationOptions)",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ServiceWorkerGlobalScope interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "ExtendableEvent interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        },
        {
          "name": "WorkerGlobalScope interface: existence and properties of interface object",
          "status": "PASS",
          "message": null
        }
      ]
    },
    {
      "test": "/notifications/instance.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Notification instance basic tests",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        }
      ]
    },
    {
      "test": "/notifications/constructor-basic.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Called the notification constructor with one argument.",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        }
      ]
    },
    {
      "test": "/notifications/event-onclose.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Checked test prerequisites.",
          "status": "NOTRUN",
          "message": "You must allow notifications for thisorigin before running this test."
        }
      ]
    },
    {
      "test": "/notifications/lang.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Roundtripping lang \"\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"en\". Expecting \"en\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"en-US-x-hixie\". Expecting \"en-US-x-hixie\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-DE\". Expecting \"de-DE\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-de\". Expecting \"de-de\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-De\". Expecting \"de-De\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-dE\". Expecting \"de-dE\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-DE-1996\". Expecting \"de-DE-1996\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-Latn-DE\". Expecting \"de-Latn-DE\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-Latf-DE\". Expecting \"de-Latf-DE\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-Latn-DE-1996\". Expecting \"de-Latn-DE-1996\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"de-CH\". Expecting \"de-CH\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"it-CH\". Expecting \"it-CH\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"fr-CH\". Expecting \"fr-CH\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"rm-CH\". Expecting \"rm-CH\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"es-CH\". Expecting \"es-CH\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"Latn-de\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"Latf-de\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"tic-tac-tac-toe\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"cocoa-1-bar\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"cocoa-a-bar\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"en-\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"en--\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"foo--bar\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"id---Java\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"fr-x\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"fr-xenomorph\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"fr-x-xenomorph\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"a\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"a-fr-lang\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"b-fr-lang\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"es1-KK-aa-bb-cc-dd\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"es2-KL-aa-bb-cc-dd\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"es3-KM-aa-bb-cc-dd\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"fooÉ\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"foöÉ-bÁr\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        },
        {
          "name": "Roundtripping lang \"foöÉbÁr\". Expecting \"\".",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        }
      ]
    },
    {
      "test": "/notifications/event-onshow.html",
      "status": "OK",
      "message": null,
      "subtests": [
        {
          "name": "Checked test prerequisites.",
          "status": "NOTRUN",
          "message": "You must allow notifications for this origin before running this test."
        }
      ]
    }
  ]
}