diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs index 9803b6562b62..fe01105b7879 100644 --- a/components/script/dom/navigator.rs +++ b/components/script/dom/navigator.rs @@ -73,4 +73,9 @@ impl NavigatorMethods for Navigator { fn Bluetooth(&self) -> Root { self.bluetooth.or_init(|| Bluetooth::new(self.global().r())) } + + // https://html.spec.whatwg.org/multipage/#navigatorlanguage + fn Language(&self) -> DOMString { + navigatorinfo::Language() + } } diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs index 1d86deb45adf..f27e46ed91b7 100644 --- a/components/script/dom/navigatorinfo.rs +++ b/components/script/dom/navigatorinfo.rs @@ -43,3 +43,7 @@ pub fn UserAgent() -> DOMString { pub fn AppVersion() -> DOMString { DOMString::from("4.0") } + +pub fn Language() -> DOMString { + DOMString::from("en-US") +} diff --git a/components/script/dom/webidls/Navigator.webidl b/components/script/dom/webidls/Navigator.webidl index 8a7a9ef914ec..c23415aa0941 100644 --- a/components/script/dom/webidls/Navigator.webidl +++ b/components/script/dom/webidls/Navigator.webidl @@ -9,7 +9,7 @@ interface Navigator { }; Navigator implements NavigatorID; Navigator implements NavigatorBluetooth; -//Navigator implements NavigatorLanguage; +Navigator implements NavigatorLanguage; //Navigator implements NavigatorOnLine; //Navigator implements NavigatorContentUtils; //Navigator implements NavigatorStorageUtils; @@ -31,3 +31,10 @@ interface NavigatorID { interface NavigatorBluetooth { readonly attribute Bluetooth bluetooth; }; + +// https://html.spec.whatwg.org/multipage/#navigatorlanguage +[NoInterfaceObject/*, Exposed=Window,Worker*/] +interface NavigatorLanguage { + readonly attribute DOMString language; + //readonly attribute DOMString[] languages; +}; diff --git a/components/script/dom/webidls/WorkerNavigator.webidl b/components/script/dom/webidls/WorkerNavigator.webidl index ec62d556c4be..c44edbfe58ab 100644 --- a/components/script/dom/webidls/WorkerNavigator.webidl +++ b/components/script/dom/webidls/WorkerNavigator.webidl @@ -7,5 +7,5 @@ //[Exposed=Worker] interface WorkerNavigator {}; WorkerNavigator implements NavigatorID; -//WorkerNavigator implements NavigatorLanguage; +WorkerNavigator implements NavigatorLanguage; //WorkerNavigator implements NavigatorOnLine; diff --git a/components/script/dom/workernavigator.rs b/components/script/dom/workernavigator.rs index 146c098d7d10..07bf443d33cd 100644 --- a/components/script/dom/workernavigator.rs +++ b/components/script/dom/workernavigator.rs @@ -66,4 +66,9 @@ impl WorkerNavigatorMethods for WorkerNavigator { fn AppVersion(&self) -> DOMString { navigatorinfo::AppVersion() } + + // https://html.spec.whatwg.org/multipage/#navigatorlanguage + fn Language(&self) -> DOMString { + navigatorinfo::Language() + } } diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 7969f4095d5c..3f6344d90265 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -7131,9 +7131,6 @@ [EventTarget interface: calling dispatchEvent(Event) on window.applicationCache with too few arguments must throw TypeError] expected: FAIL - [Navigator interface: attribute language] - expected: FAIL - [Navigator interface: attribute languages] expected: FAIL @@ -7173,9 +7170,6 @@ [Navigator interface: attribute javaEnabled] expected: FAIL - [Navigator interface: window.navigator must inherit property "language" with the proper type (7)] - expected: FAIL - [Navigator interface: window.navigator must inherit property "languages" with the proper type (8)] expected: FAIL @@ -7554,9 +7548,6 @@ [SharedWorker interface: attribute onerror] expected: FAIL - [WorkerNavigator interface: attribute language] - expected: FAIL - [WorkerNavigator interface: attribute languages] expected: FAIL diff --git a/tests/wpt/metadata/workers/interfaces.worker.js.ini b/tests/wpt/metadata/workers/interfaces.worker.js.ini index ace10433f09a..5f4d48ddaa57 100644 --- a/tests/wpt/metadata/workers/interfaces.worker.js.ini +++ b/tests/wpt/metadata/workers/interfaces.worker.js.ini @@ -36,9 +36,6 @@ [WorkerGlobalScope interface: self must inherit property "ononline" with the proper type (6)] expected: FAIL - [WorkerNavigator interface: attribute language] - expected: FAIL - [WorkerNavigator interface: attribute languages] expected: FAIL @@ -60,9 +57,6 @@ [DedicatedWorkerGlobalScope interface: self must inherit property "onmessage" with the proper type (1)] expected: FAIL - [WorkerNavigator interface: self.navigator must inherit property "language" with the proper type (6)] - expected: FAIL - [WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type (7)] expected: FAIL