dom: Implement Navigator.languages.

This commit is contained in:
Josh Matthews 2020-07-14 11:50:59 -04:00
parent 9fe92ecb4c
commit 2acd295ea6
10 changed files with 670 additions and 15 deletions

View file

@ -6,6 +6,7 @@ use crate::dom::bindings::codegen::Bindings::NavigatorBinding::NavigatorMethods;
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::root::{DomRoot, MutNullableDom};
use crate::dom::bindings::str::DOMString; use crate::dom::bindings::str::DOMString;
use crate::dom::bindings::utils::to_frozen_array;
use crate::dom::bluetooth::Bluetooth; use crate::dom::bluetooth::Bluetooth;
use crate::dom::gamepadlist::GamepadList; use crate::dom::gamepadlist::GamepadList;
use crate::dom::gpu::GPU; use crate::dom::gpu::GPU;
@ -18,7 +19,9 @@ use crate::dom::pluginarray::PluginArray;
use crate::dom::serviceworkercontainer::ServiceWorkerContainer; use crate::dom::serviceworkercontainer::ServiceWorkerContainer;
use crate::dom::window::Window; use crate::dom::window::Window;
use crate::dom::xrsystem::XRSystem; use crate::dom::xrsystem::XRSystem;
use crate::script_runtime::JSContext;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use js::jsval::JSVal;
#[dom_struct] #[dom_struct]
pub struct Navigator { pub struct Navigator {
@ -122,6 +125,12 @@ impl NavigatorMethods for Navigator {
navigatorinfo::Language() navigatorinfo::Language()
} }
// https://html.spec.whatwg.org/multipage/#dom-navigator-languages
#[allow(unsafe_code)]
fn Languages(&self, cx: JSContext) -> JSVal {
to_frozen_array(&[self.Language()], cx)
}
// https://html.spec.whatwg.org/multipage/#dom-navigator-plugins // https://html.spec.whatwg.org/multipage/#dom-navigator-plugins
fn Plugins(&self) -> DomRoot<PluginArray> { fn Plugins(&self) -> DomRoot<PluginArray> {
self.plugins.or_init(|| PluginArray::new(&self.global())) self.plugins.or_init(|| PluginArray::new(&self.global()))

View file

@ -44,8 +44,7 @@ partial interface Navigator {
[Exposed=(Window,Worker)] [Exposed=(Window,Worker)]
interface mixin NavigatorLanguage { interface mixin NavigatorLanguage {
readonly attribute DOMString language; readonly attribute DOMString language;
// https://github.com/servo/servo/issues/10073 readonly attribute any languages;
//readonly attribute DOMString[] languages;
}; };
// https://html.spec.whatwg.org/multipage/#navigatorplugins // https://html.spec.whatwg.org/multipage/#navigatorplugins

View file

@ -6,11 +6,14 @@ use crate::dom::bindings::codegen::Bindings::WorkerNavigatorBinding::WorkerNavig
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::root::{DomRoot, MutNullableDom};
use crate::dom::bindings::str::DOMString; use crate::dom::bindings::str::DOMString;
use crate::dom::bindings::utils::to_frozen_array;
use crate::dom::gpu::GPU; use crate::dom::gpu::GPU;
use crate::dom::navigatorinfo; use crate::dom::navigatorinfo;
use crate::dom::permissions::Permissions; use crate::dom::permissions::Permissions;
use crate::dom::workerglobalscope::WorkerGlobalScope; use crate::dom::workerglobalscope::WorkerGlobalScope;
use crate::script_runtime::JSContext;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use js::jsval::JSVal;
// https://html.spec.whatwg.org/multipage/#workernavigator // https://html.spec.whatwg.org/multipage/#workernavigator
#[dom_struct] #[dom_struct]
@ -90,6 +93,12 @@ impl WorkerNavigatorMethods for WorkerNavigator {
navigatorinfo::Language() navigatorinfo::Language()
} }
// https://html.spec.whatwg.org/multipage/#dom-navigator-languages
#[allow(unsafe_code)]
fn Languages(&self, cx: JSContext) -> JSVal {
to_frozen_array(&[self.Language()], cx)
}
// https://w3c.github.io/permissions/#navigator-and-workernavigator-extension // https://w3c.github.io/permissions/#navigator-and-workernavigator-extension
fn Permissions(&self) -> DomRoot<Permissions> { fn Permissions(&self) -> DomRoot<Permissions> {
self.permissions self.permissions

View file

@ -77,9 +77,6 @@
[SVGSVGElement interface: attribute onstorage] [SVGSVGElement interface: attribute onstorage]
expected: FAIL expected: FAIL
[Navigator interface: window.navigator must inherit property "languages" with the proper type]
expected: FAIL
[Navigator interface: attribute oscpu] [Navigator interface: attribute oscpu]
expected: FAIL expected: FAIL
@ -152,9 +149,6 @@
[OffscreenCanvasRenderingContext2D interface: operation restore()] [OffscreenCanvasRenderingContext2D interface: operation restore()]
expected: FAIL expected: FAIL
[Navigator interface: attribute languages]
expected: FAIL
[Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)] [Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL expected: FAIL

View file

@ -59,9 +59,6 @@
[WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type] [WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type]
expected: FAIL expected: FAIL
[WorkerNavigator interface: attribute languages]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)] [OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL expected: FAIL
@ -476,9 +473,6 @@
[OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property] [OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL expected: FAIL
[WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)] [OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[historical.https.window.html]
[registerProtocolHandler has no third argument]
expected: FAIL

View file

@ -0,0 +1,9 @@
[navigator.any.html]
[oscpu]
expected: FAIL
[navigator.any.worker.html]
[taintEnabled]
expected: FAIL

View file

@ -0,0 +1,7 @@
[navigator_user_agent.https.html]
[navigator.userAgentData returns a UserAgentMetadata object.]
expected: FAIL
[navigator.userAgentData is exposed.]
expected: FAIL

View file

@ -0,0 +1,631 @@
[protocol.https.html]
[registerProtocolHandler: overriding the "TEL" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "http://example.com/%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mid" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "webcal" protocol should work]
expected: FAIL
[registerProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html#%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "web+1" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "ssh:/" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "vbscript" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "moz-icon" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "ftp" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "WEB+seeabove" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "nntp" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "web+" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "chrome" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "web+UpperCasedIsLowercased" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "web+myprotocol" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "wyciwyg" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "https" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "https://example.com/%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "http://%s.com" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "fweb+oo" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "view-source" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mailto:" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%a" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Attempting to override the "ssh:/" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "mailto:%s" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html?foo=%s&bar" should work.]
expected: FAIL
[registerProtocolHandler: overriding the "mailto" protocol should work]
expected: FAIL
[registerProtocolHandler: Invalid URL "http://[v8.:::\]//url=%s" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Attempting to override the "http" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "smsto" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Invalid URL "https://test:test/" should throw (but after scheme)]
expected: FAIL
[unregisterProtocolHandler: overriding the "im" protocol should work]
expected: FAIL
[registerProtocolHandler: Valid URL "%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "web+" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mailto\x00" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "fweb+oo" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mаilto" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mocha" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "web+dashes-are-forbidden" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "WeB+SeEaBoVe" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "Irc" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "BitcoIn" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "livescript" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "http://example.com" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Invalid URL "blob: URL" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "javascript" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "bitcoin" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "operamail" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "geo" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "res" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s/bar/baz/" should work.]
expected: FAIL
[registerProtocolHandler: overriding the "magnet" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "web+digits123areforbidden" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "http://foobar.example.com/%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "https://test:test/" should throw (but after scheme)]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "about" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "data" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "http://example.com/%s" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mid" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "teL" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "%S" should throw (but after scheme)]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "ftp://web-platform.test:8443/%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mocha" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "MagneT" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s/foo/%s/" should work.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "ws" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "tel:sip" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "news" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "wss" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "unrecognized" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "ircs" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "irc" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "urn" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "BitcoIn" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html?foo=%s" should work.]
expected: FAIL
[the unregisterProtocolHandler method should exist on the navigator object]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "blob: URL" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "openpgp4fpr" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "blob" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "WTAI" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "sms" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "ftp" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "" should throw (but after scheme)]
expected: FAIL
[unregisterProtocolHandler: overriding the "irc" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "mailto:%s@example.com" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "%S" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Attempting to override the "shttp" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Invalid URL "mailto:%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "res" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mailto://" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html" should throw (but after scheme)]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "http://example.com" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Attempting to override the "web+dots.are.forbidden" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "resource" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "operamail" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Valid URL "%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "http" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "webcal" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "im" protocol should work]
expected: FAIL
[registerProtocolHandler: Invalid URL "ftp://web-platform.test:8443/%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "tcl" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s/foo/%s/" should work.]
expected: FAIL
[registerProtocolHandler: Invalid URL "chrome://web-platform.test:8443/%s" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "" should throw (but after scheme)]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mailtoo\x08" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "geo" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "WebCAL" protocol should work]
expected: FAIL
[registerProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s/bar/baz/?foo=1337&bar#baz" should work.]
expected: FAIL
[the registerProtocolHandler method should exist on the navigator object]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "foo://web-platform.test:8443/%s" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "wss" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Valid URL "foo/%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "chrome://web-platform.test:8443/%s" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s/bar/baz/" should work.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "vbscript" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "foo" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "mms" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "WEB+seeabove" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "ssh" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "WTAI" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%a" should throw (but after scheme)]
expected: FAIL
[unregisterProtocolHandler: overriding the "magnet" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "cid" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "teL" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "tcl" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "http://" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "ws" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "web+dots.are.forbidden" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "resource" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "sms" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "mms" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "Irc" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "attachment" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "livescript" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "bitcoin" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "magnet:+" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "opera" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html/%s/bar/baz/?foo=1337&bar#baz" should work.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "opera" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "web+digits123areforbidden" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "MagneT" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "WeB+SeEaBoVe" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mailto://" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "mailto:%s@example.com" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "mailto" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "magnet:+" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "xmpp" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "wtai" protocol should work]
expected: FAIL
[registerProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html?foo=%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "tel:sip" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "foo://web-platform.test:8443/%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "chrome" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "http://[v8.:::\]//url=%s" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Attempting to override the "javascript" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "unrecognized" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "blob" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "web+1" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "http://" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "WebCAL" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "https" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mailto:" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "file" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "ssh" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "attachment" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "file" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mаilto" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "openpgp4fpr" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html" should throw (but after scheme)]
expected: FAIL
[registerProtocolHandler: Invalid URL "http://%s.example.com" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mailto\x00" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mailto\n" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "sip" protocol should work]
expected: FAIL
[registerProtocolHandler: Invalid URL "http://%s.com" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "mailtoo\x08" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "https://example.com/%s" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "data" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "wtai" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "shttp" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "TEL" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "about" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Invalid URL "http://foobar.example.com/%s" should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "wyciwyg" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "view-source" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "cid" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "sip" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "mailto\n" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "SmsTo" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "nntp" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "web+UpperCasedIsLowercased" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "SmsTo" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "ircs" protocol should work]
expected: FAIL
[registerProtocolHandler: Valid URL "foo/%s" should work.]
expected: FAIL
[unregisterProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html?foo=%s&bar" should work.]
expected: FAIL
[registerProtocolHandler: overriding the "xmpp" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "web+myprotocol" protocol should work]
expected: FAIL
[registerProtocolHandler: overriding the "news" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Attempting to override the "web+dashes-are-forbidden" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: overriding the "tel" protocol should work]
expected: FAIL
[registerProtocolHandler: Attempting to override the "moz-icon" protocol should throw SECURITY_ERR.]
expected: FAIL
[registerProtocolHandler: Attempting to override the "foo" protocol should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: Invalid URL "http://%s.example.com" should throw SECURITY_ERR.]
expected: FAIL
[unregisterProtocolHandler: overriding the "urn" protocol should work]
expected: FAIL
[unregisterProtocolHandler: Valid URL "https://web-platform.test:8443/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html#%s" should work.]
expected: FAIL
[unregisterProtocolHandler: overriding the "smsto" protocol should work]
expected: FAIL
[unregisterProtocolHandler: overriding the "tel" protocol should work]
expected: FAIL