aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/codegen/Bindings.conf14
-rw-r--r--components/script/dom/datatransfer.rs6
-rw-r--r--components/script/dom/datatransferitem.rs12
-rw-r--r--components/script/dom/datatransferitemlist.rs14
4 files changed, 32 insertions, 14 deletions
diff --git a/components/script/dom/bindings/codegen/Bindings.conf b/components/script/dom/bindings/codegen/Bindings.conf
index a69c4076e4f..6d52f5634d9 100644
--- a/components/script/dom/bindings/codegen/Bindings.conf
+++ b/components/script/dom/bindings/codegen/Bindings.conf
@@ -83,6 +83,18 @@ DOMInterfaces = {
'canGc': ['WhenDefined'],
},
+'DataTransfer': {
+ 'canGc': ['Files']
+},
+
+'DataTransferItem': {
+ 'canGc': ['GetAsFile']
+},
+
+'DataTransferItemList': {
+ 'canGc': ['IndexedGetter', 'Add', 'Add_']
+},
+
'Document': {
'canGc': ['Close', 'CreateElement', 'CreateElementNS', 'ImportNode', 'SetTitle', 'Write', 'Writeln', 'CreateEvent', 'CreateRange', 'Open', 'Open_', 'CreateComment', 'CreateAttribute', 'CreateAttributeNS', 'CreateDocumentFragment', 'CreateTextNode', 'CreateCDATASection', 'CreateProcessingInstruction', 'Prepend', 'Append', 'ReplaceChildren', 'SetBgColor', 'SetFgColor', 'Fonts', 'ElementFromPoint', 'ElementsFromPoint', 'ExitFullscreen', 'CreateExpression', 'CreateNSResolver', 'Evaluate'],
},
@@ -600,4 +612,4 @@ Unions = {
'StringOrUnsignedLong': {
'derives': ['Clone'],
},
-} \ No newline at end of file
+}
diff --git a/components/script/dom/datatransfer.rs b/components/script/dom/datatransfer.rs
index 6f2e857c214..f0c928263f8 100644
--- a/components/script/dom/datatransfer.rs
+++ b/components/script/dom/datatransfer.rs
@@ -66,7 +66,7 @@ impl DataTransfer {
can_gc: CanGc,
data_store: Rc<RefCell<Option<DragDataStore>>>,
) -> DomRoot<DataTransfer> {
- let item_list = DataTransferItemList::new(window, Rc::clone(&data_store));
+ let item_list = DataTransferItemList::new(window, Rc::clone(&data_store), can_gc);
reflect_dom_object_with_proto(
Box::new(DataTransfer::new_inherited(data_store, &item_list)),
@@ -251,13 +251,13 @@ impl DataTransferMethods<crate::DomTypeHolder> for DataTransfer {
}
/// <https://html.spec.whatwg.org/multipage/#dom-datatransfer-files>
- fn Files(&self) -> DomRoot<FileList> {
+ fn Files(&self, can_gc: CanGc) -> DomRoot<FileList> {
// Step 1 Start with an empty list.
let mut files = Vec::new();
// Step 2 If the DataTransfer is not associated with a data store return the empty list.
if let Some(data_store) = self.data_store.borrow().as_ref() {
- data_store.files(&self.global(), &mut files);
+ data_store.files(&self.global(), can_gc, &mut files);
}
// Step 5
diff --git a/components/script/dom/datatransferitem.rs b/components/script/dom/datatransferitem.rs
index c498d1f145b..cff860a4072 100644
--- a/components/script/dom/datatransferitem.rs
+++ b/components/script/dom/datatransferitem.rs
@@ -34,11 +34,15 @@ impl DataTransferItem {
}
}
- pub(crate) fn new(global: &GlobalScope, item: Kind) -> DomRoot<DataTransferItem> {
+ pub(crate) fn new(
+ global: &GlobalScope,
+ can_gc: CanGc,
+ item: Kind,
+ ) -> DomRoot<DataTransferItem> {
reflect_dom_object(
Box::new(DataTransferItem::new_inherited(item)),
global,
- CanGc::note(),
+ can_gc,
)
}
}
@@ -65,7 +69,7 @@ impl DataTransferItemMethods<crate::DomTypeHolder> for DataTransferItem {
}
/// <https://html.spec.whatwg.org/multipage/#dom-datatransferitem-getasfile>
- fn GetAsFile(&self) -> Option<DomRoot<File>> {
- self.item.as_file(&self.global())
+ fn GetAsFile(&self, can_gc: CanGc) -> Option<DomRoot<File>> {
+ self.item.as_file(&self.global(), can_gc)
}
}
diff --git a/components/script/dom/datatransferitemlist.rs b/components/script/dom/datatransferitemlist.rs
index a52ecae3b65..165c5df325c 100644
--- a/components/script/dom/datatransferitemlist.rs
+++ b/components/script/dom/datatransferitemlist.rs
@@ -42,11 +42,12 @@ impl DataTransferItemList {
pub(crate) fn new(
window: &Window,
data_store: Rc<RefCell<Option<DragDataStore>>>,
+ can_gc: CanGc,
) -> DomRoot<DataTransferItemList> {
reflect_dom_object(
Box::new(DataTransferItemList::new_inherited(data_store)),
window,
- CanGc::note(),
+ can_gc,
)
}
@@ -80,7 +81,7 @@ impl DataTransferItemListMethods<crate::DomTypeHolder> for DataTransferItemList
}
/// <https://html.spec.whatwg.org/multipage/#dom-datatransferitemlist-item>
- fn IndexedGetter(&self, index: u32) -> Option<DomRoot<DataTransferItem>> {
+ fn IndexedGetter(&self, index: u32, can_gc: CanGc) -> Option<DomRoot<DataTransferItem>> {
// Step 1 Return null if it isn't associated with a data store
let option = self.data_store.borrow();
let data_store = match option.as_ref() {
@@ -91,7 +92,7 @@ impl DataTransferItemListMethods<crate::DomTypeHolder> for DataTransferItemList
// Step 2
data_store
.get_item(index as usize)
- .map(|item| DataTransferItem::new(&self.global(), item))
+ .map(|item| DataTransferItem::new(&self.global(), can_gc, item))
}
/// <https://html.spec.whatwg.org/multipage/#dom-datatransferitemlist-add>
@@ -99,6 +100,7 @@ impl DataTransferItemListMethods<crate::DomTypeHolder> for DataTransferItemList
&self,
data: DOMString,
mut type_: DOMString,
+ can_gc: CanGc,
) -> Fallible<Option<DomRoot<DataTransferItem>>> {
// Step 1 If the DataTransferItemList object is not in the read/write mode, return null.
let mut option = self.data_store.borrow_mut();
@@ -120,13 +122,13 @@ impl DataTransferItemListMethods<crate::DomTypeHolder> for DataTransferItemList
let index = data_store.list_len() - 1;
let item = data_store
.get_item(index)
- .map(|item| DataTransferItem::new(&self.global(), item));
+ .map(|item| DataTransferItem::new(&self.global(), can_gc, item));
Ok(item)
}
/// <https://html.spec.whatwg.org/multipage/#dom-datatransferitemlist-add>
- fn Add_(&self, data: &File) -> Fallible<Option<DomRoot<DataTransferItem>>> {
+ fn Add_(&self, data: &File, can_gc: CanGc) -> Fallible<Option<DomRoot<DataTransferItem>>> {
// Step 1 If the DataTransferItemList object is not in the read/write mode, return null.
let mut option = self.data_store.borrow_mut();
let data_store = match option.as_mut() {
@@ -154,7 +156,7 @@ impl DataTransferItemListMethods<crate::DomTypeHolder> for DataTransferItemList
let index = data_store.list_len() - 1;
let item = data_store
.get_item(index)
- .map(|item| DataTransferItem::new(&self.global(), item));
+ .map(|item| DataTransferItem::new(&self.global(), can_gc, item));
Ok(item)
}