From 9d337ea013c0f3568e4bd3a23e746ae55922b937 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 16:08:53 +0200 Subject: [PATCH 01/25] Make LayoutCanvasRenderingContext2DHelpers methods take self --- components/script/dom/canvasrenderingcontext2d.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index d6c01c6a145..f386cb64c2d 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -152,14 +152,14 @@ impl CanvasRenderingContext2D { pub trait LayoutCanvasRenderingContext2DHelpers { #[allow(unsafe_code)] - unsafe fn get_ipc_renderer(&self) -> IpcSender; + unsafe fn get_ipc_renderer(self) -> IpcSender; #[allow(unsafe_code)] - unsafe fn get_canvas_id(&self) -> CanvasId; + unsafe fn get_canvas_id(self) -> CanvasId; } impl LayoutCanvasRenderingContext2DHelpers for LayoutDom<'_, CanvasRenderingContext2D> { #[allow(unsafe_code)] - unsafe fn get_ipc_renderer(&self) -> IpcSender { + unsafe fn get_ipc_renderer(self) -> IpcSender { (*self.unsafe_get()) .canvas_state .borrow_for_layout() @@ -168,7 +168,7 @@ impl LayoutCanvasRenderingContext2DHelpers for LayoutDom<'_, CanvasRenderingCont } #[allow(unsafe_code)] - unsafe fn get_canvas_id(&self) -> CanvasId { + unsafe fn get_canvas_id(self) -> CanvasId { (*self.unsafe_get()) .canvas_state .borrow_for_layout() From e7cfd0c409fdb2af7d80e37fd8c39d3b01cab1b1 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:17:00 +0200 Subject: [PATCH 02/25] Make HTMLBodyElementLayoutHelpers methods take self --- components/script/dom/htmlbodyelement.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 0f3a0d51e15..1d9d2dc69b8 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -94,14 +94,14 @@ impl HTMLBodyElementMethods for HTMLBodyElement { } pub trait HTMLBodyElementLayoutHelpers { - fn get_background_color(&self) -> Option; - fn get_color(&self) -> Option; - fn get_background(&self) -> Option; + fn get_background_color(self) -> Option; + fn get_color(self) -> Option; + fn get_background(self) -> Option; } impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { #[allow(unsafe_code)] - fn get_background_color(&self) -> Option { + fn get_background_color(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) @@ -111,7 +111,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { } #[allow(unsafe_code)] - fn get_color(&self) -> Option { + fn get_color(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("text")) @@ -121,7 +121,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { } #[allow(unsafe_code)] - fn get_background(&self) -> Option { + fn get_background(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("background")) From 56ef9b5170b16e161123285074771375183aef21 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:18:31 +0200 Subject: [PATCH 03/25] Make LayoutHTMLCanvasElementHelpers methods take self --- components/script/dom/htmlcanvaselement.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 208ee2d2bfa..c230eb77337 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -114,15 +114,15 @@ impl HTMLCanvasElement { } pub trait LayoutHTMLCanvasElementHelpers { - fn data(&self) -> HTMLCanvasData; - fn get_width(&self) -> LengthOrPercentageOrAuto; - fn get_height(&self) -> LengthOrPercentageOrAuto; - fn get_canvas_id_for_layout(&self) -> CanvasId; + fn data(self) -> HTMLCanvasData; + fn get_width(self) -> LengthOrPercentageOrAuto; + fn get_height(self) -> LengthOrPercentageOrAuto; + fn get_canvas_id_for_layout(self) -> CanvasId; } impl LayoutHTMLCanvasElementHelpers for LayoutDom<'_, HTMLCanvasElement> { #[allow(unsafe_code)] - fn data(&self) -> HTMLCanvasData { + fn data(self) -> HTMLCanvasData { unsafe { let canvas = &*self.unsafe_get(); let source = match canvas.context.borrow_for_layout().as_ref() { @@ -154,7 +154,7 @@ impl LayoutHTMLCanvasElementHelpers for LayoutDom<'_, HTMLCanvasElement> { } #[allow(unsafe_code)] - fn get_width(&self) -> LengthOrPercentageOrAuto { + fn get_width(self) -> LengthOrPercentageOrAuto { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("width")) @@ -164,7 +164,7 @@ impl LayoutHTMLCanvasElementHelpers for LayoutDom<'_, HTMLCanvasElement> { } #[allow(unsafe_code)] - fn get_height(&self) -> LengthOrPercentageOrAuto { + fn get_height(self) -> LengthOrPercentageOrAuto { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("height")) @@ -174,7 +174,7 @@ impl LayoutHTMLCanvasElementHelpers for LayoutDom<'_, HTMLCanvasElement> { } #[allow(unsafe_code)] - fn get_canvas_id_for_layout(&self) -> CanvasId { + fn get_canvas_id_for_layout(self) -> CanvasId { unsafe { let canvas = &*self.unsafe_get(); if let &Some(CanvasContext::Context2d(ref context)) = canvas.context.borrow_for_layout() From fea4a2e629ef370e5eba61c45496933b59d51738 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:18:59 +0200 Subject: [PATCH 04/25] Make HTMLFontElementLayoutHelpers methods take self --- components/script/dom/htmlfontelement.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index cb130530703..5dbb8fb1bff 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -101,14 +101,14 @@ impl VirtualMethods for HTMLFontElement { } pub trait HTMLFontElementLayoutHelpers { - fn get_color(&self) -> Option; - fn get_face(&self) -> Option; - fn get_size(&self) -> Option; + fn get_color(self) -> Option; + fn get_face(self) -> Option; + fn get_size(self) -> Option; } impl HTMLFontElementLayoutHelpers for LayoutDom<'_, HTMLFontElement> { #[allow(unsafe_code)] - fn get_color(&self) -> Option { + fn get_color(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("color")) @@ -118,7 +118,7 @@ impl HTMLFontElementLayoutHelpers for LayoutDom<'_, HTMLFontElement> { } #[allow(unsafe_code)] - fn get_face(&self) -> Option { + fn get_face(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("face")) @@ -128,7 +128,7 @@ impl HTMLFontElementLayoutHelpers for LayoutDom<'_, HTMLFontElement> { } #[allow(unsafe_code)] - fn get_size(&self) -> Option { + fn get_size(self) -> Option { let size = unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("size")) From 668ef35612c5e4b038d9c5b35a45f9ba154bbcd4 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:19:32 +0200 Subject: [PATCH 05/25] Make HTMLHRLayoutHelpers methods take self --- components/script/dom/htmlhrelement.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs index a53d30e700b..4f4e7fc1c13 100644 --- a/components/script/dom/htmlhrelement.rs +++ b/components/script/dom/htmlhrelement.rs @@ -66,13 +66,13 @@ impl HTMLHRElementMethods for HTMLHRElement { } pub trait HTMLHRLayoutHelpers { - fn get_color(&self) -> Option; - fn get_width(&self) -> LengthOrPercentageOrAuto; + fn get_color(self) -> Option; + fn get_width(self) -> LengthOrPercentageOrAuto; } impl HTMLHRLayoutHelpers for LayoutDom<'_, HTMLHRElement> { #[allow(unsafe_code)] - fn get_color(&self) -> Option { + fn get_color(self) -> Option { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("color")) @@ -82,7 +82,7 @@ impl HTMLHRLayoutHelpers for LayoutDom<'_, HTMLHRElement> { } #[allow(unsafe_code)] - fn get_width(&self) -> LengthOrPercentageOrAuto { + fn get_width(self) -> LengthOrPercentageOrAuto { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("width")) From 1504f35031d804cecae08c5119f64537d6caf19a Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:19:59 +0200 Subject: [PATCH 06/25] Make HTMLIFrameElementLayoutMethods methods take self --- components/script/dom/htmliframeelement.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 16c5c1433b6..7b8c89bebf9 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -480,27 +480,27 @@ impl HTMLIFrameElement { } pub trait HTMLIFrameElementLayoutMethods { - fn pipeline_id(&self) -> Option; - fn browsing_context_id(&self) -> Option; - fn get_width(&self) -> LengthOrPercentageOrAuto; - fn get_height(&self) -> LengthOrPercentageOrAuto; + fn pipeline_id(self) -> Option; + fn browsing_context_id(self) -> Option; + fn get_width(self) -> LengthOrPercentageOrAuto; + fn get_height(self) -> LengthOrPercentageOrAuto; } impl HTMLIFrameElementLayoutMethods for LayoutDom<'_, HTMLIFrameElement> { #[inline] #[allow(unsafe_code)] - fn pipeline_id(&self) -> Option { + fn pipeline_id(self) -> Option { unsafe { (*self.unsafe_get()).pipeline_id.get() } } #[inline] #[allow(unsafe_code)] - fn browsing_context_id(&self) -> Option { + fn browsing_context_id(self) -> Option { unsafe { (*self.unsafe_get()).browsing_context_id.get() } } #[allow(unsafe_code)] - fn get_width(&self) -> LengthOrPercentageOrAuto { + fn get_width(self) -> LengthOrPercentageOrAuto { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("width")) @@ -511,7 +511,7 @@ impl HTMLIFrameElementLayoutMethods for LayoutDom<'_, HTMLIFrameElement> { } #[allow(unsafe_code)] - fn get_height(&self) -> LengthOrPercentageOrAuto { + fn get_height(self) -> LengthOrPercentageOrAuto { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("height")) From e590251e5fdb8a158a0a3c68120806160da8cea6 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:20:40 +0200 Subject: [PATCH 07/25] Make LayoutHTMLImageElementHelpers methods take self --- components/script/dom/htmlimageelement.rs | 28 ++++++++++------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 386a77041ac..5afbb4f0535 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -1367,24 +1367,20 @@ impl MicrotaskRunnable for ImageElementMicrotask { pub trait LayoutHTMLImageElementHelpers { #[allow(unsafe_code)] - unsafe fn image(&self) -> Option>; - + unsafe fn image(self) -> Option>; #[allow(unsafe_code)] - unsafe fn image_url(&self) -> Option; - + unsafe fn image_url(self) -> Option; #[allow(unsafe_code)] - unsafe fn image_density(&self) -> Option; - + unsafe fn image_density(self) -> Option; #[allow(unsafe_code)] - unsafe fn image_data(&self) -> (Option>, Option); - - fn get_width(&self) -> LengthOrPercentageOrAuto; - fn get_height(&self) -> LengthOrPercentageOrAuto; + unsafe fn image_data(self) -> (Option>, Option); + fn get_width(self) -> LengthOrPercentageOrAuto; + fn get_height(self) -> LengthOrPercentageOrAuto; } impl LayoutHTMLImageElementHelpers for LayoutDom<'_, HTMLImageElement> { #[allow(unsafe_code)] - unsafe fn image(&self) -> Option> { + unsafe fn image(self) -> Option> { (*self.unsafe_get()) .current_request .borrow_for_layout() @@ -1393,7 +1389,7 @@ impl LayoutHTMLImageElementHelpers for LayoutDom<'_, HTMLImageElement> { } #[allow(unsafe_code)] - unsafe fn image_url(&self) -> Option { + unsafe fn image_url(self) -> Option { (*self.unsafe_get()) .current_request .borrow_for_layout() @@ -1402,7 +1398,7 @@ impl LayoutHTMLImageElementHelpers for LayoutDom<'_, HTMLImageElement> { } #[allow(unsafe_code)] - unsafe fn image_data(&self) -> (Option>, Option) { + unsafe fn image_data(self) -> (Option>, Option) { let current_request = (*self.unsafe_get()).current_request.borrow_for_layout(); ( current_request.image.clone(), @@ -1411,7 +1407,7 @@ impl LayoutHTMLImageElementHelpers for LayoutDom<'_, HTMLImageElement> { } #[allow(unsafe_code)] - unsafe fn image_density(&self) -> Option { + unsafe fn image_density(self) -> Option { (*self.unsafe_get()) .current_request .borrow_for_layout() @@ -1420,7 +1416,7 @@ impl LayoutHTMLImageElementHelpers for LayoutDom<'_, HTMLImageElement> { } #[allow(unsafe_code)] - fn get_width(&self) -> LengthOrPercentageOrAuto { + fn get_width(self) -> LengthOrPercentageOrAuto { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("width")) @@ -1431,7 +1427,7 @@ impl LayoutHTMLImageElementHelpers for LayoutDom<'_, HTMLImageElement> { } #[allow(unsafe_code)] - fn get_height(&self) -> LengthOrPercentageOrAuto { + fn get_height(self) -> LengthOrPercentageOrAuto { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("height")) From f794feb6f4f4b5d98de9c0262f82ba0ed67ef685 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:21:38 +0200 Subject: [PATCH 08/25] Make LayoutHTMLMediaElementHelpers methods take self --- components/script/dom/htmlmediaelement.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index f4833de4e51..a1a1d3204fb 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -2444,12 +2444,12 @@ impl VirtualMethods for HTMLMediaElement { } pub trait LayoutHTMLMediaElementHelpers { - fn data(&self) -> HTMLMediaData; + fn data(self) -> HTMLMediaData; } impl LayoutHTMLMediaElementHelpers for LayoutDom<'_, HTMLMediaElement> { #[allow(unsafe_code)] - fn data(&self) -> HTMLMediaData { + fn data(self) -> HTMLMediaData { let media = unsafe { &*self.unsafe_get() }; HTMLMediaData { current_frame: media.video_renderer.lock().unwrap().current_frame.clone(), From 09600301c522ce1217750a15404dcf1b47c806af Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:22:11 +0200 Subject: [PATCH 09/25] Make HTMLTableCellElementLayoutHelpers methods take self --- components/script/dom/htmltablecellelement.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index aa3db5733bc..6aa9b466602 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -98,15 +98,15 @@ impl HTMLTableCellElementMethods for HTMLTableCellElement { } pub trait HTMLTableCellElementLayoutHelpers { - fn get_background_color(&self) -> Option; - fn get_colspan(&self) -> Option; - fn get_rowspan(&self) -> Option; - fn get_width(&self) -> LengthOrPercentageOrAuto; + fn get_background_color(self) -> Option; + fn get_colspan(self) -> Option; + fn get_rowspan(self) -> Option; + fn get_width(self) -> LengthOrPercentageOrAuto; } #[allow(unsafe_code)] impl HTMLTableCellElementLayoutHelpers for LayoutDom<'_, HTMLTableCellElement> { - fn get_background_color(&self) -> Option { + fn get_background_color(self) -> Option { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) @@ -115,7 +115,7 @@ impl HTMLTableCellElementLayoutHelpers for LayoutDom<'_, HTMLTableCellElement> { } } - fn get_colspan(&self) -> Option { + fn get_colspan(self) -> Option { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("colspan")) @@ -123,7 +123,7 @@ impl HTMLTableCellElementLayoutHelpers for LayoutDom<'_, HTMLTableCellElement> { } } - fn get_rowspan(&self) -> Option { + fn get_rowspan(self) -> Option { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("rowspan")) @@ -131,7 +131,7 @@ impl HTMLTableCellElementLayoutHelpers for LayoutDom<'_, HTMLTableCellElement> { } } - fn get_width(&self) -> LengthOrPercentageOrAuto { + fn get_width(self) -> LengthOrPercentageOrAuto { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("width")) From 83045c7e6889097b15831da2b475fa5c0ed571c9 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:22:47 +0200 Subject: [PATCH 10/25] Make HTMLTableElementLayoutHelpers methods take self --- components/script/dom/htmltableelement.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index 5bdb7f75281..4473746367a 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -406,15 +406,15 @@ impl HTMLTableElementMethods for HTMLTableElement { } pub trait HTMLTableElementLayoutHelpers { - fn get_background_color(&self) -> Option; - fn get_border(&self) -> Option; - fn get_cellspacing(&self) -> Option; - fn get_width(&self) -> LengthOrPercentageOrAuto; + fn get_background_color(self) -> Option; + fn get_border(self) -> Option; + fn get_cellspacing(self) -> Option; + fn get_width(self) -> LengthOrPercentageOrAuto; } impl HTMLTableElementLayoutHelpers for LayoutDom<'_, HTMLTableElement> { #[allow(unsafe_code)] - fn get_background_color(&self) -> Option { + fn get_background_color(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) @@ -424,17 +424,17 @@ impl HTMLTableElementLayoutHelpers for LayoutDom<'_, HTMLTableElement> { } #[allow(unsafe_code)] - fn get_border(&self) -> Option { + fn get_border(self) -> Option { unsafe { (*self.unsafe_get()).border.get() } } #[allow(unsafe_code)] - fn get_cellspacing(&self) -> Option { + fn get_cellspacing(self) -> Option { unsafe { (*self.unsafe_get()).cellspacing.get() } } #[allow(unsafe_code)] - fn get_width(&self) -> LengthOrPercentageOrAuto { + fn get_width(self) -> LengthOrPercentageOrAuto { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("width")) From 5d3274c181481ce369d8d92148340deef3bc5592 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:23:31 +0200 Subject: [PATCH 11/25] Make HTMLTableRowElementLayoutHelpers methods take self --- components/script/dom/htmltablerowelement.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 9a6b5b875cc..857ef5787c9 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -146,12 +146,12 @@ impl HTMLTableRowElementMethods for HTMLTableRowElement { } pub trait HTMLTableRowElementLayoutHelpers { - fn get_background_color(&self) -> Option; + fn get_background_color(self) -> Option; } #[allow(unsafe_code)] impl HTMLTableRowElementLayoutHelpers for LayoutDom<'_, HTMLTableRowElement> { - fn get_background_color(&self) -> Option { + fn get_background_color(self) -> Option { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) From 56793f24dabf754ceda975d48e0950776ddad519 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:23:52 +0200 Subject: [PATCH 12/25] Make HTMLTableSectionElementLayoutHelpers methods take self --- components/script/dom/htmltablesectionelement.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index c680da2ad23..89e399c70c9 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -84,12 +84,12 @@ impl HTMLTableSectionElementMethods for HTMLTableSectionElement { } pub trait HTMLTableSectionElementLayoutHelpers { - fn get_background_color(&self) -> Option; + fn get_background_color(self) -> Option; } #[allow(unsafe_code)] impl HTMLTableSectionElementLayoutHelpers for LayoutDom<'_, HTMLTableSectionElement> { - fn get_background_color(&self) -> Option { + fn get_background_color(self) -> Option { unsafe { (&*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) From 301acdc309311f5273d956e038bd89fc524520e5 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:25:00 +0200 Subject: [PATCH 13/25] Make LayoutSVGSVGElementHelpers methods take self --- components/script/dom/svgsvgelement.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/script/dom/svgsvgelement.rs b/components/script/dom/svgsvgelement.rs index 8c8c1dbb834..f4efe6e065b 100644 --- a/components/script/dom/svgsvgelement.rs +++ b/components/script/dom/svgsvgelement.rs @@ -49,12 +49,12 @@ impl SVGSVGElement { } pub trait LayoutSVGSVGElementHelpers { - fn data(&self) -> SVGSVGData; + fn data(self) -> SVGSVGData; } impl LayoutSVGSVGElementHelpers for LayoutDom<'_, SVGSVGElement> { #[allow(unsafe_code, non_snake_case)] - fn data(&self) -> SVGSVGData { + fn data(self) -> SVGSVGData { unsafe { let SVG = &*self.unsafe_get(); From d87444cb1fab20b0f4458f5cb8559a541babbca6 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:25:59 +0200 Subject: [PATCH 14/25] Make LayoutCanvasWebGLRenderingContextHelpers methods take self --- components/script/dom/webgl2renderingcontext.rs | 2 +- components/script/dom/webglrenderingcontext.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs index 03eb5e7abc2..8ae05c05363 100644 --- a/components/script/dom/webgl2renderingcontext.rs +++ b/components/script/dom/webgl2renderingcontext.rs @@ -3886,7 +3886,7 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext { impl LayoutCanvasWebGLRenderingContextHelpers for LayoutDom<'_, WebGL2RenderingContext> { #[allow(unsafe_code)] - unsafe fn canvas_data_source(&self) -> HTMLCanvasDataSource { + unsafe fn canvas_data_source(self) -> HTMLCanvasDataSource { let this = &*self.unsafe_get(); (*this.base.to_layout().unsafe_get()).layout_handle() } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 8e76eb552a3..5f95618aa05 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -4447,12 +4447,12 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { pub trait LayoutCanvasWebGLRenderingContextHelpers { #[allow(unsafe_code)] - unsafe fn canvas_data_source(&self) -> HTMLCanvasDataSource; + unsafe fn canvas_data_source(self) -> HTMLCanvasDataSource; } impl LayoutCanvasWebGLRenderingContextHelpers for LayoutDom<'_, WebGLRenderingContext> { #[allow(unsafe_code)] - unsafe fn canvas_data_source(&self) -> HTMLCanvasDataSource { + unsafe fn canvas_data_source(self) -> HTMLCanvasDataSource { (*self.unsafe_get()).layout_handle() } } From f0c98bfa5cc50aafacc5f96d3d6ca7bcca82e47e Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:25:46 +0200 Subject: [PATCH 15/25] Give a lifetime parameter to LayoutCharacterDataHelpers --- components/script/dom/characterdata.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index 81456cfb60b..4e0d32d4456 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -281,14 +281,14 @@ impl CharacterDataMethods for CharacterData { } #[allow(unsafe_code)] -pub trait LayoutCharacterDataHelpers { - unsafe fn data_for_layout(&self) -> &str; +pub trait LayoutCharacterDataHelpers<'dom> { + unsafe fn data_for_layout(self) -> &'dom str; } #[allow(unsafe_code)] -impl LayoutCharacterDataHelpers for LayoutDom<'_, CharacterData> { +impl<'dom> LayoutCharacterDataHelpers<'dom> for LayoutDom<'dom, CharacterData> { #[inline] - unsafe fn data_for_layout(&self) -> &str { + unsafe fn data_for_layout(self) -> &'dom str { &(*self.unsafe_get()).data.borrow_for_layout() } } From 9b2debe678fe3efd62978b664c583bd74df60edc Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:26:50 +0200 Subject: [PATCH 16/25] Give a lifetime parameter to LayoutDocumentHelpers --- components/script/dom/document.rs | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index f119429e01f..1e60b3b79fc 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -2605,46 +2605,46 @@ pub enum DocumentSource { } #[allow(unsafe_code)] -pub trait LayoutDocumentHelpers { - unsafe fn is_html_document_for_layout(&self) -> bool; - unsafe fn needs_paint_from_layout(&self); - unsafe fn will_paint(&self); - unsafe fn quirks_mode(&self) -> QuirksMode; - unsafe fn style_shared_lock(&self) -> &StyleSharedRwLock; - unsafe fn shadow_roots(&self) -> Vec>; - unsafe fn shadow_roots_styles_changed(&self) -> bool; - unsafe fn flush_shadow_roots_stylesheets(&self); +pub trait LayoutDocumentHelpers<'dom> { + unsafe fn is_html_document_for_layout(self) -> bool; + unsafe fn needs_paint_from_layout(self); + unsafe fn will_paint(self); + unsafe fn quirks_mode(self) -> QuirksMode; + unsafe fn style_shared_lock(self) -> &'dom StyleSharedRwLock; + unsafe fn shadow_roots(self) -> Vec>; + unsafe fn shadow_roots_styles_changed(self) -> bool; + unsafe fn flush_shadow_roots_stylesheets(self); } #[allow(unsafe_code)] -impl LayoutDocumentHelpers for LayoutDom<'_, Document> { +impl<'dom> LayoutDocumentHelpers<'dom> for LayoutDom<'dom, Document> { #[inline] - unsafe fn is_html_document_for_layout(&self) -> bool { + unsafe fn is_html_document_for_layout(self) -> bool { (*self.unsafe_get()).is_html_document } #[inline] - unsafe fn needs_paint_from_layout(&self) { + unsafe fn needs_paint_from_layout(self) { (*self.unsafe_get()).needs_paint.set(true) } #[inline] - unsafe fn will_paint(&self) { + unsafe fn will_paint(self) { (*self.unsafe_get()).needs_paint.set(false) } #[inline] - unsafe fn quirks_mode(&self) -> QuirksMode { + unsafe fn quirks_mode(self) -> QuirksMode { (*self.unsafe_get()).quirks_mode() } #[inline] - unsafe fn style_shared_lock(&self) -> &StyleSharedRwLock { + unsafe fn style_shared_lock(self) -> &'dom StyleSharedRwLock { (*self.unsafe_get()).style_shared_lock() } #[inline] - unsafe fn shadow_roots(&self) -> Vec> { + unsafe fn shadow_roots(self) -> Vec> { (*self.unsafe_get()) .shadow_roots .borrow_for_layout() @@ -2654,12 +2654,12 @@ impl LayoutDocumentHelpers for LayoutDom<'_, Document> { } #[inline] - unsafe fn shadow_roots_styles_changed(&self) -> bool { + unsafe fn shadow_roots_styles_changed(self) -> bool { (*self.unsafe_get()).shadow_roots_styles_changed() } #[inline] - unsafe fn flush_shadow_roots_stylesheets(&self) { + unsafe fn flush_shadow_roots_stylesheets(self) { (*self.unsafe_get()).flush_shadow_roots_stylesheets() } } From 467913acdb63e9bc086dc31035a247d22886d0e6 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:31:54 +0200 Subject: [PATCH 17/25] Make LayoutElementHelpers methods take self --- components/script/dom/element.rs | 52 ++++++++++++++++---------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 70000fd95f7..1521207faee 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -622,12 +622,12 @@ impl RawLayoutElementHelpers for Element { pub trait LayoutElementHelpers<'dom> { #[allow(unsafe_code)] - unsafe fn has_class_for_layout(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool; + unsafe fn has_class_for_layout(self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool; #[allow(unsafe_code)] - unsafe fn get_classes_for_layout(&self) -> Option<&'static [Atom]>; + unsafe fn get_classes_for_layout(self) -> Option<&'static [Atom]>; #[allow(unsafe_code)] - unsafe fn synthesize_presentational_hints_for_legacy_attributes(&self, _: &mut V) + unsafe fn synthesize_presentational_hints_for_legacy_attributes(self, _: &mut V) where V: Push; #[allow(unsafe_code)] @@ -635,24 +635,24 @@ pub trait LayoutElementHelpers<'dom> { #[allow(unsafe_code)] unsafe fn get_rowspan(self) -> u32; #[allow(unsafe_code)] - unsafe fn is_html_element(&self) -> bool; - fn id_attribute(&self) -> *const Option; - fn style_attribute(&self) -> *const Option>>; - fn local_name(&self) -> &LocalName; - fn namespace(&self) -> &Namespace; - fn get_lang_for_layout(&self) -> String; - fn get_state_for_layout(&self) -> ElementState; - fn insert_selector_flags(&self, flags: ElementSelectorFlags); - fn has_selector_flags(&self, flags: ElementSelectorFlags) -> bool; + unsafe fn is_html_element(self) -> bool; + fn id_attribute(self) -> *const Option; + fn style_attribute(self) -> *const Option>>; + fn local_name(self) -> &'dom LocalName; + fn namespace(self) -> &'dom Namespace; + fn get_lang_for_layout(self) -> String; + fn get_state_for_layout(self) -> ElementState; + fn insert_selector_flags(self, flags: ElementSelectorFlags); + fn has_selector_flags(self, flags: ElementSelectorFlags) -> bool; /// The shadow root this element is a host of. #[allow(unsafe_code)] - unsafe fn get_shadow_root_for_layout(&self) -> Option>; + unsafe fn get_shadow_root_for_layout(self) -> Option>; } impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { #[allow(unsafe_code)] #[inline] - unsafe fn has_class_for_layout(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool { + unsafe fn has_class_for_layout(self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool { get_attr_for_layout(&*self.unsafe_get(), &ns!(), &local_name!("class")).map_or( false, |attr| { @@ -666,13 +666,13 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { #[allow(unsafe_code)] #[inline] - unsafe fn get_classes_for_layout(&self) -> Option<&'static [Atom]> { + unsafe fn get_classes_for_layout(self) -> Option<&'static [Atom]> { get_attr_for_layout(&*self.unsafe_get(), &ns!(), &local_name!("class")) .map(|attr| attr.value_tokens_forever().unwrap()) } #[allow(unsafe_code)] - unsafe fn synthesize_presentational_hints_for_legacy_attributes(&self, hints: &mut V) + unsafe fn synthesize_presentational_hints_for_legacy_attributes(self, hints: &mut V) where V: Push, { @@ -1019,32 +1019,32 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { #[inline] #[allow(unsafe_code)] - unsafe fn is_html_element(&self) -> bool { + unsafe fn is_html_element(self) -> bool { (*self.unsafe_get()).namespace == ns!(html) } #[allow(unsafe_code)] - fn id_attribute(&self) -> *const Option { + fn id_attribute(self) -> *const Option { unsafe { (*self.unsafe_get()).id_attribute.borrow_for_layout() } } #[allow(unsafe_code)] - fn style_attribute(&self) -> *const Option>> { + fn style_attribute(self) -> *const Option>> { unsafe { (*self.unsafe_get()).style_attribute.borrow_for_layout() } } #[allow(unsafe_code)] - fn local_name(&self) -> &LocalName { + fn local_name(self) -> &'dom LocalName { unsafe { &(*self.unsafe_get()).local_name } } #[allow(unsafe_code)] - fn namespace(&self) -> &Namespace { + fn namespace(self) -> &'dom Namespace { unsafe { &(*self.unsafe_get()).namespace } } #[allow(unsafe_code)] - fn get_lang_for_layout(&self) -> String { + fn get_lang_for_layout(self) -> String { unsafe { let mut current_node = Some(self.upcast::()); while let Some(node) = current_node { @@ -1073,13 +1073,13 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { #[inline] #[allow(unsafe_code)] - fn get_state_for_layout(&self) -> ElementState { + fn get_state_for_layout(self) -> ElementState { unsafe { (*self.unsafe_get()).state.get() } } #[inline] #[allow(unsafe_code)] - fn insert_selector_flags(&self, flags: ElementSelectorFlags) { + fn insert_selector_flags(self, flags: ElementSelectorFlags) { debug_assert!(thread_state::get().is_layout()); unsafe { let f = &(*self.unsafe_get()).selector_flags; @@ -1089,13 +1089,13 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { #[inline] #[allow(unsafe_code)] - fn has_selector_flags(&self, flags: ElementSelectorFlags) -> bool { + fn has_selector_flags(self, flags: ElementSelectorFlags) -> bool { unsafe { (*self.unsafe_get()).selector_flags.get().contains(flags) } } #[inline] #[allow(unsafe_code)] - unsafe fn get_shadow_root_for_layout(&self) -> Option> { + unsafe fn get_shadow_root_for_layout(self) -> Option> { (*self.unsafe_get()) .rare_data_for_layout() .as_ref()? From 206157dd74acc89b18e9a70e0c172092b64286dd Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:34:22 +0200 Subject: [PATCH 18/25] Make LayoutNodeHelpers methods take self --- components/script/dom/node.rs | 104 +++++++++++++++++----------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 08fe3282be1..d92e3b6a364 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1305,56 +1305,56 @@ pub unsafe fn from_untrusted_node_address( #[allow(unsafe_code)] pub trait LayoutNodeHelpers<'dom> { - unsafe fn type_id_for_layout(&self) -> NodeTypeId; + unsafe fn type_id_for_layout(self) -> NodeTypeId; - unsafe fn composed_parent_node_ref(&self) -> Option>; - unsafe fn first_child_ref(&self) -> Option>; - unsafe fn last_child_ref(&self) -> Option>; - unsafe fn prev_sibling_ref(&self) -> Option>; - unsafe fn next_sibling_ref(&self) -> Option>; + unsafe fn composed_parent_node_ref(self) -> Option>; + unsafe fn first_child_ref(self) -> Option>; + unsafe fn last_child_ref(self) -> Option>; + unsafe fn prev_sibling_ref(self) -> Option>; + unsafe fn next_sibling_ref(self) -> Option>; - unsafe fn owner_doc_for_layout(&self) -> LayoutDom<'dom, Document>; - unsafe fn containing_shadow_root_for_layout(&self) -> Option>; + unsafe fn owner_doc_for_layout(self) -> LayoutDom<'dom, Document>; + unsafe fn containing_shadow_root_for_layout(self) -> Option>; - unsafe fn is_element_for_layout(&self) -> bool; - unsafe fn get_flag(&self, flag: NodeFlags) -> bool; - unsafe fn set_flag(&self, flag: NodeFlags, value: bool); + unsafe fn is_element_for_layout(self) -> bool; + unsafe fn get_flag(self, flag: NodeFlags) -> bool; + unsafe fn set_flag(self, flag: NodeFlags, value: bool); - unsafe fn children_count(&self) -> u32; + unsafe fn children_count(self) -> u32; - unsafe fn get_style_and_layout_data(&self) -> Option; - unsafe fn init_style_and_layout_data(&self, _: OpaqueStyleAndLayoutData); - unsafe fn take_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData; + unsafe fn get_style_and_layout_data(self) -> Option; + unsafe fn init_style_and_layout_data(self, _: OpaqueStyleAndLayoutData); + unsafe fn take_style_and_layout_data(self) -> OpaqueStyleAndLayoutData; - fn text_content(&self) -> String; - fn selection(&self) -> Option>; - fn image_url(&self) -> Option; - fn image_density(&self) -> Option; - fn image_data(&self) -> Option<(Option>, Option)>; - fn canvas_data(&self) -> Option; - fn media_data(&self) -> Option; - fn svg_data(&self) -> Option; - fn iframe_browsing_context_id(&self) -> Option; - fn iframe_pipeline_id(&self) -> Option; - fn opaque(&self) -> OpaqueNode; + fn text_content(self) -> String; + fn selection(self) -> Option>; + fn image_url(self) -> Option; + fn image_density(self) -> Option; + fn image_data(self) -> Option<(Option>, Option)>; + fn canvas_data(self) -> Option; + fn media_data(self) -> Option; + fn svg_data(self) -> Option; + fn iframe_browsing_context_id(self) -> Option; + fn iframe_pipeline_id(self) -> Option; + fn opaque(self) -> OpaqueNode; } impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { #[inline] #[allow(unsafe_code)] - unsafe fn type_id_for_layout(&self) -> NodeTypeId { + unsafe fn type_id_for_layout(self) -> NodeTypeId { (*self.unsafe_get()).type_id() } #[inline] #[allow(unsafe_code)] - unsafe fn is_element_for_layout(&self) -> bool { + unsafe fn is_element_for_layout(self) -> bool { (*self.unsafe_get()).is::() } #[inline] #[allow(unsafe_code)] - unsafe fn composed_parent_node_ref(&self) -> Option> { + unsafe fn composed_parent_node_ref(self) -> Option> { let parent = (*self.unsafe_get()).parent_node.get_inner_as_layout(); if let Some(ref parent) = parent { if let Some(shadow_root) = parent.downcast::() { @@ -1366,31 +1366,31 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { #[inline] #[allow(unsafe_code)] - unsafe fn first_child_ref(&self) -> Option> { + unsafe fn first_child_ref(self) -> Option> { (*self.unsafe_get()).first_child.get_inner_as_layout() } #[inline] #[allow(unsafe_code)] - unsafe fn last_child_ref(&self) -> Option> { + unsafe fn last_child_ref(self) -> Option> { (*self.unsafe_get()).last_child.get_inner_as_layout() } #[inline] #[allow(unsafe_code)] - unsafe fn prev_sibling_ref(&self) -> Option> { + unsafe fn prev_sibling_ref(self) -> Option> { (*self.unsafe_get()).prev_sibling.get_inner_as_layout() } #[inline] #[allow(unsafe_code)] - unsafe fn next_sibling_ref(&self) -> Option> { + unsafe fn next_sibling_ref(self) -> Option> { (*self.unsafe_get()).next_sibling.get_inner_as_layout() } #[inline] #[allow(unsafe_code)] - unsafe fn owner_doc_for_layout(&self) -> LayoutDom<'dom, Document> { + unsafe fn owner_doc_for_layout(self) -> LayoutDom<'dom, Document> { (*self.unsafe_get()) .owner_doc .get_inner_as_layout() @@ -1399,7 +1399,7 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { #[inline] #[allow(unsafe_code)] - unsafe fn containing_shadow_root_for_layout(&self) -> Option> { + unsafe fn containing_shadow_root_for_layout(self) -> Option> { (*self.unsafe_get()) .rare_data_for_layout() .as_ref()? @@ -1410,13 +1410,13 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { #[inline] #[allow(unsafe_code)] - unsafe fn get_flag(&self, flag: NodeFlags) -> bool { + unsafe fn get_flag(self, flag: NodeFlags) -> bool { (*self.unsafe_get()).flags.get().contains(flag) } #[inline] #[allow(unsafe_code)] - unsafe fn set_flag(&self, flag: NodeFlags, value: bool) { + unsafe fn set_flag(self, flag: NodeFlags, value: bool) { let this = self.unsafe_get(); let mut flags = (*this).flags.get(); @@ -1431,33 +1431,33 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { #[inline] #[allow(unsafe_code)] - unsafe fn children_count(&self) -> u32 { + unsafe fn children_count(self) -> u32 { (*self.unsafe_get()).children_count.get() } #[inline] #[allow(unsafe_code)] - unsafe fn get_style_and_layout_data(&self) -> Option { + unsafe fn get_style_and_layout_data(self) -> Option { (*self.unsafe_get()).style_and_layout_data.get() } #[inline] #[allow(unsafe_code)] - unsafe fn init_style_and_layout_data(&self, val: OpaqueStyleAndLayoutData) { + unsafe fn init_style_and_layout_data(self, val: OpaqueStyleAndLayoutData) { debug_assert!((*self.unsafe_get()).style_and_layout_data.get().is_none()); (*self.unsafe_get()).style_and_layout_data.set(Some(val)); } #[inline] #[allow(unsafe_code)] - unsafe fn take_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData { + unsafe fn take_style_and_layout_data(self) -> OpaqueStyleAndLayoutData { let val = (*self.unsafe_get()).style_and_layout_data.get().unwrap(); (*self.unsafe_get()).style_and_layout_data.set(None); val } #[allow(unsafe_code)] - fn text_content(&self) -> String { + fn text_content(self) -> String { if let Some(text) = self.downcast::() { return unsafe { text.upcast().data_for_layout().to_owned() }; } @@ -1474,7 +1474,7 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { } #[allow(unsafe_code)] - fn selection(&self) -> Option> { + fn selection(self) -> Option> { if let Some(area) = self.downcast::() { return unsafe { area.selection_for_layout() }; } @@ -1487,7 +1487,7 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { } #[allow(unsafe_code)] - fn image_url(&self) -> Option { + fn image_url(self) -> Option { unsafe { self.downcast::() .expect("not an image!") @@ -1496,12 +1496,12 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { } #[allow(unsafe_code)] - fn image_data(&self) -> Option<(Option>, Option)> { + fn image_data(self) -> Option<(Option>, Option)> { unsafe { self.downcast::().map(|e| e.image_data()) } } #[allow(unsafe_code)] - fn image_density(&self) -> Option { + fn image_density(self) -> Option { unsafe { self.downcast::() .expect("not an image!") @@ -1509,28 +1509,28 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { } } - fn canvas_data(&self) -> Option { + fn canvas_data(self) -> Option { self.downcast::() .map(|canvas| canvas.data()) } - fn media_data(&self) -> Option { + fn media_data(self) -> Option { self.downcast::() .map(|media| media.data()) } - fn svg_data(&self) -> Option { + fn svg_data(self) -> Option { self.downcast::().map(|svg| svg.data()) } - fn iframe_browsing_context_id(&self) -> Option { + fn iframe_browsing_context_id(self) -> Option { let iframe_element = self .downcast::() .expect("not an iframe element!"); iframe_element.browsing_context_id() } - fn iframe_pipeline_id(&self) -> Option { + fn iframe_pipeline_id(self) -> Option { let iframe_element = self .downcast::() .expect("not an iframe element!"); @@ -1538,7 +1538,7 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> { } #[allow(unsafe_code)] - fn opaque(&self) -> OpaqueNode { + fn opaque(self) -> OpaqueNode { unsafe { OpaqueNode(self.get_jsobject() as usize) } } } From 86296b84ff4544ff3dc8ce90559bdfbb94494701 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:39:49 +0200 Subject: [PATCH 19/25] Clean up LayoutShadowRootHelpers::get_style_data_for_layout Parameter E is unused and the result should be bound by 'dom. --- components/layout_thread/dom_wrapper.rs | 7 +------ components/layout_thread_2020/dom_wrapper.rs | 7 +------ components/script/dom/shadowroot.rs | 8 ++------ 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs index 2f502352d27..f2ba0a6fafa 100644 --- a/components/layout_thread/dom_wrapper.rs +++ b/components/layout_thread/dom_wrapper.rs @@ -177,12 +177,7 @@ impl<'lr> TShadowRoot for ServoShadowRoot<'lr> { where Self: 'a, { - Some(unsafe { - &self - .shadow_root - .get_style_data_for_layout::() - .data - }) + Some(unsafe { &self.shadow_root.get_style_data_for_layout().data }) } } diff --git a/components/layout_thread_2020/dom_wrapper.rs b/components/layout_thread_2020/dom_wrapper.rs index 55277ea309c..d8aa7b05360 100644 --- a/components/layout_thread_2020/dom_wrapper.rs +++ b/components/layout_thread_2020/dom_wrapper.rs @@ -184,12 +184,7 @@ impl<'lr> TShadowRoot for ServoShadowRoot<'lr> { where Self: 'a, { - Some(unsafe { - &self - .shadow_root - .get_style_data_for_layout::() - .data - }) + Some(unsafe { &self.shadow_root.get_style_data_for_layout().data }) } } diff --git a/components/script/dom/shadowroot.rs b/components/script/dom/shadowroot.rs index 71db09f4671..4d4635fcd64 100644 --- a/components/script/dom/shadowroot.rs +++ b/components/script/dom/shadowroot.rs @@ -241,9 +241,7 @@ impl ShadowRootMethods for ShadowRoot { #[allow(unsafe_code)] pub trait LayoutShadowRootHelpers<'dom> { unsafe fn get_host_for_layout(&self) -> LayoutDom<'dom, Element>; - unsafe fn get_style_data_for_layout<'a, E: TElement>( - &self, - ) -> &'a AuthorStyles; + unsafe fn get_style_data_for_layout(self) -> &'dom AuthorStyles; unsafe fn flush_stylesheets( &self, device: &Device, @@ -264,9 +262,7 @@ impl<'dom> LayoutShadowRootHelpers<'dom> for LayoutDom<'dom, ShadowRoot> { #[inline] #[allow(unsafe_code)] - unsafe fn get_style_data_for_layout<'a, E: TElement>( - &self, - ) -> &'a AuthorStyles { + unsafe fn get_style_data_for_layout(self) -> &'dom AuthorStyles { (*self.unsafe_get()).author_styles.borrow_for_layout() } From 4a17950331eb5096b53aa11cd007f2079e0fa635 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:41:38 +0200 Subject: [PATCH 20/25] Make LayoutShadowRootHelpers methods take self --- components/script/dom/shadowroot.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/script/dom/shadowroot.rs b/components/script/dom/shadowroot.rs index 4d4635fcd64..6dd2ee122e6 100644 --- a/components/script/dom/shadowroot.rs +++ b/components/script/dom/shadowroot.rs @@ -240,10 +240,10 @@ impl ShadowRootMethods for ShadowRoot { #[allow(unsafe_code)] pub trait LayoutShadowRootHelpers<'dom> { - unsafe fn get_host_for_layout(&self) -> LayoutDom<'dom, Element>; + unsafe fn get_host_for_layout(self) -> LayoutDom<'dom, Element>; unsafe fn get_style_data_for_layout(self) -> &'dom AuthorStyles; unsafe fn flush_stylesheets( - &self, + self, device: &Device, quirks_mode: QuirksMode, guard: &SharedRwLockReadGuard, @@ -253,7 +253,7 @@ pub trait LayoutShadowRootHelpers<'dom> { impl<'dom> LayoutShadowRootHelpers<'dom> for LayoutDom<'dom, ShadowRoot> { #[inline] #[allow(unsafe_code)] - unsafe fn get_host_for_layout(&self) -> LayoutDom<'dom, Element> { + unsafe fn get_host_for_layout(self) -> LayoutDom<'dom, Element> { (*self.unsafe_get()) .host .get_inner_as_layout() @@ -269,7 +269,7 @@ impl<'dom> LayoutShadowRootHelpers<'dom> for LayoutDom<'dom, ShadowRoot> { #[inline] #[allow(unsafe_code)] unsafe fn flush_stylesheets( - &self, + self, device: &Device, quirks_mode: QuirksMode, guard: &SharedRwLockReadGuard, From 05c71dff8884d31316d2b08ee453b00a9ef8a902 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:46:10 +0200 Subject: [PATCH 21/25] Fix AttrHelpersForLayout We should never be returning 'static stuff from attrs, that's a big lie. --- components/script/dom/attr.rs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index 7dcc76e6caf..1113706de92 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -233,28 +233,27 @@ impl Attr { } #[allow(unsafe_code)] -pub trait AttrHelpersForLayout { - unsafe fn value_forever(&self) -> &'static AttrValue; - unsafe fn value_ref_forever(&self) -> &'static str; - unsafe fn value_tokens_forever(&self) -> Option<&'static [Atom]>; - unsafe fn local_name_atom_forever(&self) -> LocalName; +pub trait AttrHelpersForLayout<'dom> { + unsafe fn value_forever(self) -> &'dom AttrValue; + unsafe fn value_ref_forever(self) -> &'dom str; + unsafe fn value_tokens_forever(self) -> Option<&'dom [Atom]>; + unsafe fn local_name_atom_forever(self) -> LocalName; } #[allow(unsafe_code)] -impl AttrHelpersForLayout for LayoutDom<'_, Attr> { +impl<'dom> AttrHelpersForLayout<'dom> for LayoutDom<'dom, Attr> { #[inline] - unsafe fn value_forever(&self) -> &'static AttrValue { - // This transmute is used to cheat the lifetime restriction. - mem::transmute::<&AttrValue, &AttrValue>((*self.unsafe_get()).value.borrow_for_layout()) + unsafe fn value_forever(self) -> &'dom AttrValue { + (*self.unsafe_get()).value.borrow_for_layout() } #[inline] - unsafe fn value_ref_forever(&self) -> &'static str { + unsafe fn value_ref_forever(self) -> &'dom str { &**self.value_forever() } #[inline] - unsafe fn value_tokens_forever(&self) -> Option<&'static [Atom]> { + unsafe fn value_tokens_forever(self) -> Option<&'dom [Atom]> { // This transmute is used to cheat the lifetime restriction. match *self.value_forever() { AttrValue::TokenList(_, ref tokens) => Some(tokens), @@ -263,7 +262,7 @@ impl AttrHelpersForLayout for LayoutDom<'_, Attr> { } #[inline] - unsafe fn local_name_atom_forever(&self) -> LocalName { + unsafe fn local_name_atom_forever(self) -> LocalName { (*self.unsafe_get()).identifier.local_name.clone() } } From 4279fe5933da5f3e70bbddc152c444dbbc517d13 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:54:53 +0200 Subject: [PATCH 22/25] Fix LayoutElementHelpers::get_classes_for_layout It should not return a 'static reference --- components/script/dom/element.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 1521207faee..b1472fd6791 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -624,7 +624,7 @@ pub trait LayoutElementHelpers<'dom> { #[allow(unsafe_code)] unsafe fn has_class_for_layout(self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool; #[allow(unsafe_code)] - unsafe fn get_classes_for_layout(self) -> Option<&'static [Atom]>; + unsafe fn get_classes_for_layout(self) -> Option<&'dom [Atom]>; #[allow(unsafe_code)] unsafe fn synthesize_presentational_hints_for_legacy_attributes(self, _: &mut V) @@ -666,7 +666,7 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { #[allow(unsafe_code)] #[inline] - unsafe fn get_classes_for_layout(self) -> Option<&'static [Atom]> { + unsafe fn get_classes_for_layout(self) -> Option<&'dom [Atom]> { get_attr_for_layout(&*self.unsafe_get(), &ns!(), &local_name!("class")) .map(|attr| attr.value_tokens_forever().unwrap()) } From ea9e62bdca95fb83e61e759fa5a93354e3ce3ee4 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 19:57:47 +0200 Subject: [PATCH 23/25] Fix LayoutDom::unsafe_get The raw pointer can be used to extend the lifetime of the inner T to beyond 'dom. --- components/script/dom/bindings/root.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/components/script/dom/bindings/root.rs b/components/script/dom/bindings/root.rs index b1739ac27c3..8fed6a584b3 100644 --- a/components/script/dom/bindings/root.rs +++ b/components/script/dom/bindings/root.rs @@ -748,12 +748,11 @@ impl<'dom, T> LayoutDom<'dom, T> where T: 'dom + DomObject, { - /// Returns an unsafe pointer to the interior of this JS object. This is - /// the only method that be safely accessed from layout. (The fact that - /// this is unsafe is what necessitates the layout wrappers.) - pub unsafe fn unsafe_get(&self) -> *const T { + /// Returns a reference to the interior of this JS object. The fact + /// that this is unsafe is what necessitates the layout wrappers. + pub unsafe fn unsafe_get(self) -> &'dom T { debug_assert!(thread_state::get().is_layout()); - self.ptr.as_ptr() + &*self.ptr.as_ptr() } } From ba5bcec7e4e182510c12d43321c910f2fd139edb Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Mon, 30 Mar 2020 12:00:41 +0200 Subject: [PATCH 24/25] Make LayoutDom<'dom, T> be a mere reference wrapper --- components/script/dom/bindings/root.rs | 38 +++++++------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/components/script/dom/bindings/root.rs b/components/script/dom/bindings/root.rs index 8fed6a584b3..9afb421abbb 100644 --- a/components/script/dom/bindings/root.rs +++ b/components/script/dom/bindings/root.rs @@ -330,8 +330,7 @@ impl Dom { pub unsafe fn to_layout(&self) -> LayoutDom { debug_assert!(thread_state::get().is_layout()); LayoutDom { - ptr: self.ptr.clone(), - marker: PhantomData, + value: self.ptr.as_ref(), } } } @@ -415,8 +414,7 @@ where /// traits must be implemented on this. #[unrooted_must_root_lint::allow_unrooted_interior] pub struct LayoutDom<'dom, T> { - ptr: ptr::NonNull, - marker: PhantomData<&'dom T>, + value: &'dom T, } impl<'dom, T> LayoutDom<'dom, T> @@ -430,10 +428,8 @@ where T: DerivedFrom, { debug_assert!(thread_state::get().is_layout()); - let ptr: *mut T = self.ptr.as_ptr(); LayoutDom { - ptr: unsafe { ptr::NonNull::new_unchecked(ptr as *mut U) }, - marker: PhantomData, + value: self.value.upcast::(), } } @@ -443,17 +439,7 @@ where U: DerivedFrom, { debug_assert!(thread_state::get().is_layout()); - unsafe { - if (*self.unsafe_get()).is::() { - let ptr: *mut T = self.ptr.as_ptr(); - Some(LayoutDom { - ptr: ptr::NonNull::new_unchecked(ptr as *mut U), - marker: PhantomData, - }) - } else { - None - } - } + self.value.downcast::().map(|value| LayoutDom { value }) } } @@ -464,7 +450,7 @@ where /// Get the reflector. pub unsafe fn get_jsobject(&self) -> *mut JSObject { debug_assert!(thread_state::get().is_layout()); - (*self.ptr.as_ptr()).reflector().get_jsobject().get() + self.value.reflector().get_jsobject().get() } } @@ -486,7 +472,7 @@ impl Eq for Dom {} impl PartialEq for LayoutDom<'_, T> { fn eq(&self, other: &Self) -> bool { - self.ptr.as_ptr() == other.ptr.as_ptr() + self.value as *const T == other.value as *const T } } @@ -500,7 +486,7 @@ impl Hash for Dom { impl Hash for LayoutDom<'_, T> { fn hash(&self, state: &mut H) { - self.ptr.as_ptr().hash(state) + (self.value as *const T).hash(state) } } @@ -519,10 +505,7 @@ impl Clone for LayoutDom<'_, T> { #[inline] fn clone(&self) -> Self { debug_assert!(thread_state::get().is_layout()); - LayoutDom { - ptr: self.ptr.clone(), - marker: PhantomData, - } + LayoutDom { value: self.value } } } @@ -533,8 +516,7 @@ impl LayoutDom<'_, Node> { debug_assert!(thread_state::get().is_layout()); let TrustedNodeAddress(addr) = inner; LayoutDom { - ptr: ptr::NonNull::new_unchecked(addr as *const Node as *mut Node), - marker: PhantomData, + value: &*(addr as *const Node), } } } @@ -752,7 +734,7 @@ where /// that this is unsafe is what necessitates the layout wrappers. pub unsafe fn unsafe_get(self) -> &'dom T { debug_assert!(thread_state::get().is_layout()); - &*self.ptr.as_ptr() + self.value } } From 02fb5a68e6285d86c0a091e4c6ac36a7d436d3f1 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Mon, 30 Mar 2020 12:19:28 +0200 Subject: [PATCH 25/25] Remove a bunch of _forever suffixes in Attr methods They don't return &'static references anymore. --- components/script/dom/attr.rs | 16 ++++++++-------- components/script/dom/element.rs | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index 1113706de92..cea5df2abf5 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -234,35 +234,35 @@ impl Attr { #[allow(unsafe_code)] pub trait AttrHelpersForLayout<'dom> { - unsafe fn value_forever(self) -> &'dom AttrValue; + unsafe fn value(self) -> &'dom AttrValue; unsafe fn value_ref_forever(self) -> &'dom str; - unsafe fn value_tokens_forever(self) -> Option<&'dom [Atom]>; - unsafe fn local_name_atom_forever(self) -> LocalName; + unsafe fn value_tokens(self) -> Option<&'dom [Atom]>; + unsafe fn local_name_atom(self) -> LocalName; } #[allow(unsafe_code)] impl<'dom> AttrHelpersForLayout<'dom> for LayoutDom<'dom, Attr> { #[inline] - unsafe fn value_forever(self) -> &'dom AttrValue { + unsafe fn value(self) -> &'dom AttrValue { (*self.unsafe_get()).value.borrow_for_layout() } #[inline] unsafe fn value_ref_forever(self) -> &'dom str { - &**self.value_forever() + &**self.value() } #[inline] - unsafe fn value_tokens_forever(self) -> Option<&'dom [Atom]> { + unsafe fn value_tokens(self) -> Option<&'dom [Atom]> { // This transmute is used to cheat the lifetime restriction. - match *self.value_forever() { + match *self.value() { AttrValue::TokenList(_, ref tokens) => Some(tokens), _ => None, } } #[inline] - unsafe fn local_name_atom_forever(self) -> LocalName { + unsafe fn local_name_atom(self) -> LocalName { (*self.unsafe_get()).identifier.local_name.clone() } } diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index b1472fd6791..602cb148d7a 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -578,7 +578,7 @@ pub unsafe fn get_attr_for_layout<'dom>( .iter() .find(|attr| { let attr = attr.to_layout(); - *name == attr.local_name_atom_forever() && (*attr.unsafe_get()).namespace() == namespace + *name == attr.local_name_atom() && (*attr.unsafe_get()).namespace() == namespace }) .map(|attr| attr.to_layout()) } @@ -591,7 +591,7 @@ impl RawLayoutElementHelpers for Element { namespace: &Namespace, name: &LocalName, ) -> Option<&'a AttrValue> { - get_attr_for_layout(self, namespace, name).map(|attr| attr.value_forever()) + get_attr_for_layout(self, namespace, name).map(|attr| attr.value()) } #[inline] @@ -610,8 +610,8 @@ impl RawLayoutElementHelpers for Element { .iter() .filter_map(|attr| { let attr = attr.to_layout(); - if *name == attr.local_name_atom_forever() { - Some(attr.value_forever()) + if *name == attr.local_name_atom() { + Some(attr.value()) } else { None } @@ -656,7 +656,7 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { get_attr_for_layout(&*self.unsafe_get(), &ns!(), &local_name!("class")).map_or( false, |attr| { - attr.value_tokens_forever() + attr.value_tokens() .unwrap() .iter() .any(|atom| case_sensitivity.eq_atom(atom, name)) @@ -668,7 +668,7 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { #[inline] unsafe fn get_classes_for_layout(self) -> Option<&'dom [Atom]> { get_attr_for_layout(&*self.unsafe_get(), &ns!(), &local_name!("class")) - .map(|attr| attr.value_tokens_forever().unwrap()) + .map(|attr| attr.value_tokens().unwrap()) } #[allow(unsafe_code)]