aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorConnor Brewster <brewsterc@my.caspercollege.edu>2016-04-08 14:22:40 -0600
committerConnor Brewster <brewsterc@my.caspercollege.edu>2016-04-11 09:14:46 -0600
commite83d29a7eb9db1ba08059436e9dce1db0165251b (patch)
treebb50def9317c23e3eb0b67f53c0680fb739fceb6 /components/script
parentc56eb65b7c117911bc63fdb695705abc2606211e (diff)
downloadservo-e83d29a7eb9db1ba08059436e9dce1db0165251b.tar.gz
servo-e83d29a7eb9db1ba08059436e9dce1db0165251b.zip
Implemented stub for NavigatorPlugins
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/mimetype.rs36
-rw-r--r--components/script/dom/mimetypearray.rs62
-rw-r--r--components/script/dom/mod.rs4
-rw-r--r--components/script/dom/navigator.rs21
-rw-r--r--components/script/dom/plugin.rs61
-rw-r--r--components/script/dom/pluginarray.rs67
-rw-r--r--components/script/dom/webidls/MimeType.webidl12
-rw-r--r--components/script/dom/webidls/MimeTypeArray.webidl12
-rw-r--r--components/script/dom/webidls/Navigator.webidl10
-rw-r--r--components/script/dom/webidls/Plugin.webidl15
-rw-r--r--components/script/dom/webidls/PluginArray.webidl13
11 files changed, 312 insertions, 1 deletions
diff --git a/components/script/dom/mimetype.rs b/components/script/dom/mimetype.rs
new file mode 100644
index 00000000000..f29b40faa5a
--- /dev/null
+++ b/components/script/dom/mimetype.rs
@@ -0,0 +1,36 @@
+/* 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/. */
+
+use dom::bindings::codegen::Bindings::MimeTypeBinding::MimeTypeMethods;
+use dom::bindings::js::Root;
+use dom::bindings::reflector::{Reflector};
+use dom::plugin::Plugin;
+use util::str::DOMString;
+
+#[dom_struct]
+pub struct MimeType {
+ reflector_: Reflector,
+}
+
+impl MimeTypeMethods for MimeType {
+ // https://html.spec.whatwg.org/multipage/#dom-mimetype-type
+ fn Type(&self) -> DOMString {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-mimetype-description
+ fn Description(&self) -> DOMString {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-mimetype-suffixes
+ fn Suffixes(&self) -> DOMString {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-mimetype-enabledplugin
+ fn EnabledPlugin(&self) -> Root<Plugin> {
+ unreachable!()
+ }
+}
diff --git a/components/script/dom/mimetypearray.rs b/components/script/dom/mimetypearray.rs
new file mode 100644
index 00000000000..ae11341e77b
--- /dev/null
+++ b/components/script/dom/mimetypearray.rs
@@ -0,0 +1,62 @@
+/* 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/. */
+
+use dom::bindings::codegen::Bindings::MimeTypeArrayBinding;
+use dom::bindings::codegen::Bindings::MimeTypeArrayBinding::MimeTypeArrayMethods;
+use dom::bindings::global::GlobalRef;
+use dom::bindings::js::Root;
+use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::mimetype::MimeType;
+use util::str::DOMString;
+
+#[dom_struct]
+pub struct MimeTypeArray {
+ reflector_: Reflector,
+}
+
+impl MimeTypeArray {
+ pub fn new_inherited() -> MimeTypeArray {
+ MimeTypeArray {
+ reflector_: Reflector::new()
+ }
+ }
+
+ pub fn new(global: GlobalRef) -> Root<MimeTypeArray> {
+ reflect_dom_object(box MimeTypeArray::new_inherited(),
+ global,
+ MimeTypeArrayBinding::Wrap)
+ }
+}
+
+impl MimeTypeArrayMethods for MimeTypeArray {
+ // https://html.spec.whatwg.org/multipage/#dom-mimetypearray-length
+ fn Length(&self) -> u32 {
+ 0
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-mimetypearray-item
+ fn Item(&self, _index: u32) -> Option<Root<MimeType>> {
+ None
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-mimetypearray-nameditem
+ fn NamedItem(&self, _name: DOMString) -> Option<Root<MimeType>> {
+ None
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-mimetypearray-item
+ fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> Option<Root<MimeType>> {
+ None
+ }
+
+ // check-tidy: no specs after this line
+ fn NamedGetter(&self, _name: DOMString, _found: &mut bool) -> Option<Root<MimeType>> {
+ None
+ }
+
+ // https://heycam.github.io/webidl/#dfn-supported-property-names
+ fn SupportedPropertyNames(&self) -> Vec<DOMString> {
+ vec![]
+ }
+}
diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs
index 36921d8be89..853ac520b9a 100644
--- a/components/script/dom/mod.rs
+++ b/components/script/dom/mod.rs
@@ -342,6 +342,8 @@ pub mod imagedata;
pub mod keyboardevent;
pub mod location;
pub mod messageevent;
+pub mod mimetype;
+pub mod mimetypearray;
pub mod mouseevent;
pub mod namednodemap;
pub mod navigator;
@@ -351,6 +353,8 @@ pub mod nodeiterator;
pub mod nodelist;
pub mod performance;
pub mod performancetiming;
+pub mod plugin;
+pub mod pluginarray;
pub mod processinginstruction;
pub mod progressevent;
pub mod radionodelist;
diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs
index fe01105b787..c1874905a54 100644
--- a/components/script/dom/navigator.rs
+++ b/components/script/dom/navigator.rs
@@ -8,7 +8,9 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflector, Reflectable, reflect_dom_object};
use dom::bluetooth::Bluetooth;
+use dom::mimetypearray::MimeTypeArray;
use dom::navigatorinfo;
+use dom::pluginarray::PluginArray;
use dom::window::Window;
use util::str::DOMString;
@@ -16,6 +18,8 @@ use util::str::DOMString;
pub struct Navigator {
reflector_: Reflector,
bluetooth: MutNullableHeap<JS<Bluetooth>>,
+ plugins: MutNullableHeap<JS<PluginArray>>,
+ mime_types: MutNullableHeap<JS<MimeTypeArray>>,
}
impl Navigator {
@@ -23,6 +27,8 @@ impl Navigator {
Navigator {
reflector_: Reflector::new(),
bluetooth: Default::default(),
+ plugins: Default::default(),
+ mime_types: Default::default(),
}
}
@@ -78,4 +84,19 @@ impl NavigatorMethods for Navigator {
fn Language(&self) -> DOMString {
navigatorinfo::Language()
}
+
+ // https://html.spec.whatwg.org/multipage/#dom-navigator-plugins
+ fn Plugins(&self) -> Root<PluginArray> {
+ self.plugins.or_init(|| PluginArray::new(self.global().r()))
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-navigator-mimetypes
+ fn MimeTypes(&self) -> Root<MimeTypeArray> {
+ self.mime_types.or_init(|| MimeTypeArray::new(self.global().r()))
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-navigator-javaenabled
+ fn JavaEnabled(&self) -> bool {
+ false
+ }
}
diff --git a/components/script/dom/plugin.rs b/components/script/dom/plugin.rs
new file mode 100644
index 00000000000..0836bc32f0f
--- /dev/null
+++ b/components/script/dom/plugin.rs
@@ -0,0 +1,61 @@
+/* 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/. */
+
+use dom::bindings::codegen::Bindings::PluginBinding::PluginMethods;
+use dom::bindings::js::Root;
+use dom::bindings::reflector::{Reflector};
+use dom::mimetype::MimeType;
+use util::str::DOMString;
+
+#[dom_struct]
+pub struct Plugin {
+ reflector_: Reflector,
+}
+
+impl PluginMethods for Plugin {
+ // https://html.spec.whatwg.org/multipage/#dom-plugin-name
+ fn Name(&self) -> DOMString {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-plugin-description
+ fn Description(&self) -> DOMString {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-plugin-filename
+ fn Filename(&self) -> DOMString {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-plugin-length
+ fn Length(&self) -> u32 {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-plugin-item
+ fn Item(&self, _index: u32) -> Option<Root<MimeType>> {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-plugin-nameditem
+ fn NamedItem(&self, _name: DOMString) -> Option<Root<MimeType>> {
+ unreachable!()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-plugin-item
+ fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> Option<Root<MimeType>> {
+ unreachable!()
+ }
+
+ // check-tidy: no specs after this line
+ fn NamedGetter(&self, _name: DOMString, _found: &mut bool) -> Option<Root<MimeType>> {
+ unreachable!()
+ }
+
+ // https://heycam.github.io/webidl/#dfn-supported-property-names
+ fn SupportedPropertyNames(&self) -> Vec<DOMString> {
+ unreachable!()
+ }
+}
diff --git a/components/script/dom/pluginarray.rs b/components/script/dom/pluginarray.rs
new file mode 100644
index 00000000000..d94131b1a9f
--- /dev/null
+++ b/components/script/dom/pluginarray.rs
@@ -0,0 +1,67 @@
+/* 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/. */
+
+use dom::bindings::codegen::Bindings::PluginArrayBinding;
+use dom::bindings::codegen::Bindings::PluginArrayBinding::PluginArrayMethods;
+use dom::bindings::global::GlobalRef;
+use dom::bindings::js::Root;
+use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::plugin::Plugin;
+use util::str::DOMString;
+
+#[dom_struct]
+pub struct PluginArray {
+ reflector_: Reflector,
+}
+
+impl PluginArray {
+ pub fn new_inherited() -> PluginArray {
+ PluginArray {
+ reflector_: Reflector::new()
+ }
+ }
+
+ pub fn new(global: GlobalRef) -> Root<PluginArray> {
+ reflect_dom_object(box PluginArray::new_inherited(),
+ global,
+ PluginArrayBinding::Wrap)
+ }
+}
+
+impl PluginArrayMethods for PluginArray {
+ // https://html.spec.whatwg.org/multipage/#dom-pluginarray-refresh
+ fn Refresh(&self, _reload: bool) {
+
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-pluginarray-length
+ fn Length(&self) -> u32 {
+ 0
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-pluginarray-item
+ fn Item(&self, _index: u32) -> Option<Root<Plugin>> {
+ None
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-pluginarray-nameditem
+ fn NamedItem(&self, _name: DOMString) -> Option<Root<Plugin>> {
+ None
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-pluginarray-item
+ fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> Option<Root<Plugin>> {
+ None
+ }
+
+ // check-tidy: no specs after this line
+ fn NamedGetter(&self, _name: DOMString, _found: &mut bool) -> Option<Root<Plugin>> {
+ None
+ }
+
+ // https://heycam.github.io/webidl/#dfn-supported-property-names
+ fn SupportedPropertyNames(&self) -> Vec<DOMString> {
+ vec![]
+ }
+}
diff --git a/components/script/dom/webidls/MimeType.webidl b/components/script/dom/webidls/MimeType.webidl
new file mode 100644
index 00000000000..9972134f7c8
--- /dev/null
+++ b/components/script/dom/webidls/MimeType.webidl
@@ -0,0 +1,12 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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/. */
+
+// https://html.spec.whatwg.org/multipage/#mimetype
+interface MimeType {
+ readonly attribute DOMString type;
+ readonly attribute DOMString description;
+ readonly attribute DOMString suffixes; // comma-separated
+ readonly attribute Plugin enabledPlugin;
+};
diff --git a/components/script/dom/webidls/MimeTypeArray.webidl b/components/script/dom/webidls/MimeTypeArray.webidl
new file mode 100644
index 00000000000..6a4d8f1aa4e
--- /dev/null
+++ b/components/script/dom/webidls/MimeTypeArray.webidl
@@ -0,0 +1,12 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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/. */
+
+// https://html.spec.whatwg.org/multipage/#mimetypearray
+[LegacyUnenumerableNamedProperties]
+interface MimeTypeArray {
+ readonly attribute unsigned long length;
+ getter MimeType? item(unsigned long index);
+ getter MimeType? namedItem(DOMString name);
+};
diff --git a/components/script/dom/webidls/Navigator.webidl b/components/script/dom/webidls/Navigator.webidl
index 50f695279ff..b793af7a6f5 100644
--- a/components/script/dom/webidls/Navigator.webidl
+++ b/components/script/dom/webidls/Navigator.webidl
@@ -13,7 +13,7 @@ Navigator implements NavigatorLanguage;
//Navigator implements NavigatorOnLine;
//Navigator implements NavigatorContentUtils;
//Navigator implements NavigatorStorageUtils;
-//Navigator implements NavigatorPlugins;
+Navigator implements NavigatorPlugins;
// https://html.spec.whatwg.org/multipage/#navigatorid
[NoInterfaceObject/*, Exposed=Window,Worker*/]
@@ -39,3 +39,11 @@ interface NavigatorLanguage {
// https://github.com/servo/servo/issues/10073
//readonly attribute DOMString[] languages;
};
+
+// https://html.spec.whatwg.org/multipage/#navigatorplugins
+[NoInterfaceObject]
+interface NavigatorPlugins {
+ [SameObject] readonly attribute PluginArray plugins;
+ [SameObject] readonly attribute MimeTypeArray mimeTypes;
+ boolean javaEnabled();
+};
diff --git a/components/script/dom/webidls/Plugin.webidl b/components/script/dom/webidls/Plugin.webidl
new file mode 100644
index 00000000000..4fb172d45b9
--- /dev/null
+++ b/components/script/dom/webidls/Plugin.webidl
@@ -0,0 +1,15 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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/. */
+
+// https://html.spec.whatwg.org/multipage/#dom-plugin
+[LegacyUnenumerableNamedProperties]
+interface Plugin {
+ readonly attribute DOMString name;
+ readonly attribute DOMString description;
+ readonly attribute DOMString filename;
+ readonly attribute unsigned long length;
+ getter MimeType? item(unsigned long index);
+ getter MimeType? namedItem(DOMString name);
+};
diff --git a/components/script/dom/webidls/PluginArray.webidl b/components/script/dom/webidls/PluginArray.webidl
new file mode 100644
index 00000000000..f2fde35fc4f
--- /dev/null
+++ b/components/script/dom/webidls/PluginArray.webidl
@@ -0,0 +1,13 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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/. */
+
+// https://html.spec.whatwg.org/multipage/#pluginarray
+[LegacyUnenumerableNamedProperties]
+interface PluginArray {
+ void refresh(optional boolean reload = false);
+ readonly attribute unsigned long length;
+ getter Plugin? item(unsigned long index);
+ getter Plugin? namedItem(DOMString name);
+};