From 73e67568c1a016928644570a3b364e454ac4da6f Mon Sep 17 00:00:00 2001 From: Tom Schuster Date: Sun, 17 Nov 2013 17:16:21 +0100 Subject: [PATCH] Add FormData constructor --- .../script/dom/bindings/codegen/CodegenRust.py | 6 ++++-- .../script/dom/bindings/codegen/FormData.webidl | 2 +- src/components/script/dom/formdata.rs | 16 ++++++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 8cfd491ebdb..a20dc523357 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -945,8 +945,10 @@ for (uint32_t i = 0; i < length; ++i) { # Set up some sensible defaults for these things insofar as we can. holderType = None - if argIsPointer: + initialValue = None + if argIsPointer or isOptional: declType = "Option<" + typePtr + ">" + initialValue = "None" else: declType = typePtr @@ -995,7 +997,7 @@ for (uint32_t i = 0; i < length; ++i) { declType = CGGeneric(declType) if holderType is not None: holderType = CGGeneric(holderType) - return (templateBody, declType, holderType, isOptional, None) + return (templateBody, declType, holderType, isOptional, initialValue) if type.isSpiderMonkeyInterface(): assert not isEnforceRange and not isClamp diff --git a/src/components/script/dom/bindings/codegen/FormData.webidl b/src/components/script/dom/bindings/codegen/FormData.webidl index 74cb218b5fc..4e4bef26850 100644 --- a/src/components/script/dom/bindings/codegen/FormData.webidl +++ b/src/components/script/dom/bindings/codegen/FormData.webidl @@ -7,7 +7,7 @@ * http://xhr.spec.whatwg.org */ -/*[Constructor(optional HTMLFormElement form)]*/ +[Constructor(optional HTMLFormElement form)] interface FormData { void append(DOMString name, Blob value, optional DOMString filename); void append(DOMString name, DOMString value); diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs index 2f8c484f148..1ee68db74fb 100644 --- a/src/components/script/dom/formdata.rs +++ b/src/components/script/dom/formdata.rs @@ -2,10 +2,11 @@ * 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::utils::{Reflectable, Reflector, reflect_dom_object}; +use dom::bindings::utils::{Fallible, Reflectable, Reflector, reflect_dom_object}; use dom::bindings::utils::DOMString; use dom::bindings::codegen::FormDataBinding; use dom::blob::Blob; +use dom::node::{AbstractNode, ScriptView}; use dom::window::Window; use std::hashmap::HashMap; @@ -19,19 +20,26 @@ pub struct FormData { data: HashMap<~str, FormDatum>, reflector_: Reflector, window: @mut Window, + form: Option> } impl FormData { - pub fn new_inherited(window: @mut Window) -> FormData { + pub fn new_inherited(form: Option>, window: @mut Window) -> FormData { FormData { data: HashMap::new(), reflector_: Reflector::new(), window: window, + form: form } } - pub fn new(window: @mut Window) -> @mut FormData { - reflect_dom_object(@mut FormData::new_inherited(window), window, FormDataBinding::Wrap) + pub fn new(form: Option>, window: @mut Window) -> @mut FormData { + reflect_dom_object(@mut FormData::new_inherited(form, window), window, FormDataBinding::Wrap) + } + + pub fn Constructor(window: @mut Window, + form: Option>) -> Fallible<@mut FormData> { + Ok(FormData::new(form, window)) } pub fn Append(&mut self, name: DOMString, value: @mut Blob, filename: Option) {