rustdoc: Fix many rustdoc errors (#31147)

This fixes many rustdoc errors that occur due to raw URLs in rustdoc
comments as well as unescaped Rust code that should be in backticks.
This commit is contained in:
Martin Robinson 2024-01-22 14:13:48 +01:00 committed by GitHub
parent d7de206dbd
commit 5c1723c983
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
185 changed files with 939 additions and 942 deletions

View file

@ -2499,7 +2499,7 @@ impl WebGLImpl {
/// ANGLE adds a `_u` prefix to variable names: /// ANGLE adds a `_u` prefix to variable names:
/// ///
/// https://chromium.googlesource.com/angle/angle/+/855d964bd0d05f6b2cb303f625506cf53d37e94f /// <https://chromium.googlesource.com/angle/angle/+/855d964bd0d05f6b2cb303f625506cf53d37e94f>
/// ///
/// To avoid hard-coding this we would need to use the `sh::GetAttributes` and `sh::GetUniforms` /// To avoid hard-coding this we would need to use the `sh::GetAttributes` and `sh::GetUniforms`
/// API to look up the `x.name` and `x.mappedName` members. /// API to look up the `x.name` and `x.mappedName` members.

View file

@ -120,7 +120,7 @@ pub struct Opts {
/// Whether or not to completely ignore SSL certificate validation errors. /// Whether or not to completely ignore SSL certificate validation errors.
/// TODO: We should see if we can eliminate the need for this by fixing /// TODO: We should see if we can eliminate the need for this by fixing
/// https://github.com/servo/servo/issues/30080. /// <https://github.com/servo/servo/issues/30080>.
pub ignore_certificate_errors: bool, pub ignore_certificate_errors: bool,
/// Unminify Javascript. /// Unminify Javascript.

View file

@ -87,7 +87,7 @@
//! //!
//! * Anything (other than a routing thread) can block on a routing thread //! * Anything (other than a routing thread) can block on a routing thread
//! //!
//! See https://github.com/servo/servo/issues/14704 //! See <https://github.com/servo/servo/issues/14704>
use std::borrow::{Cow, ToOwned}; use std::borrow::{Cow, ToOwned};
use std::collections::hash_map::Entry; use std::collections::hash_map::Entry;
@ -237,7 +237,7 @@ struct Browser {
/// A browsing context group. /// A browsing context group.
/// ///
/// https://html.spec.whatwg.org/multipage/#browsing-context-group /// <https://html.spec.whatwg.org/multipage/#browsing-context-group>
#[derive(Clone, Default)] #[derive(Clone, Default)]
struct BrowsingContextGroup { struct BrowsingContextGroup {
/// A browsing context group holds a set of top-level browsing contexts. /// A browsing context group holds a set of top-level browsing contexts.
@ -421,7 +421,7 @@ pub struct Constellation<Message, LTF, STF, SWF> {
/// A user agent holds a a set of browsing context groups. /// A user agent holds a a set of browsing context groups.
/// ///
/// https://html.spec.whatwg.org/multipage/#browsing-context-group-set /// <https://html.spec.whatwg.org/multipage/#browsing-context-group-set>
browsing_context_group_set: HashMap<BrowsingContextGroupId, BrowsingContextGroup>, browsing_context_group_set: HashMap<BrowsingContextGroupId, BrowsingContextGroup>,
/// The Id counter for BrowsingContextGroup. /// The Id counter for BrowsingContextGroup.
@ -1854,7 +1854,7 @@ where
/// Check the origin of a message against that of the pipeline it came from. /// Check the origin of a message against that of the pipeline it came from.
/// Note: this is still limited as a security check, /// Note: this is still limited as a security check,
/// see https://github.com/servo/servo/issues/11722 /// see <https://github.com/servo/servo/issues/11722>
fn check_origin_against_pipeline( fn check_origin_against_pipeline(
&self, &self,
pipeline_id: &PipelineId, pipeline_id: &PipelineId,

View file

@ -17,7 +17,7 @@ use style_traits::CSSPixel;
use crate::browsingcontext::NewBrowsingContextInfo; use crate::browsingcontext::NewBrowsingContextInfo;
/// Represents the joint session history /// Represents the joint session history
/// https://html.spec.whatwg.org/multipage/#joint-session-history /// <https://html.spec.whatwg.org/multipage/#joint-session-history>
#[derive(Debug)] #[derive(Debug)]
pub struct JointSessionHistory { pub struct JointSessionHistory {
/// Diffs used to traverse to past entries. Oldest entries are at the back, /// Diffs used to traverse to past entries. Oldest entries are at the back,

View file

@ -2,8 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Liberally derived from the [Firefox JS implementation] //! Liberally derived from the [Firefox JS implementation](http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/webbrowser.js).
//! (http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/webbrowser.js).
//! Connection point for remote devtools that wish to investigate a particular Browsing Context's contents. //! Connection point for remote devtools that wish to investigate a particular Browsing Context's contents.
//! Supports dynamic attaching and detaching which control notifications of navigation, etc. //! Supports dynamic attaching and detaching which control notifications of navigation, etc.

View file

@ -2,8 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Liberally derived from the [Firefox JS implementation] //! Liberally derived from the [Firefox JS implementation](http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/webconsole.js).
//! (http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/webconsole.js).
//! Mediates interaction between the remote web console and equivalent functionality (object //! Mediates interaction between the remote web console and equivalent functionality (object
//! inspection, JS evaluation, autocompletion) in Servo. //! inspection, JS evaluation, autocompletion) in Servo.

View file

@ -2,8 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Liberally derived from the [Firefox JS implementation] //! Liberally derived from the [Firefox JS implementation](http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/inspector.js).
//! (http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/inspector.js).
use std::cell::RefCell; use std::cell::RefCell;
use std::net::TcpStream; use std::net::TcpStream;

View file

@ -2,8 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Liberally derived from the [Firefox JS implementation] //! Liberally derived from the [Firefox JS implementation](http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/webconsole.js).
//! (http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/webconsole.js).
//! Handles interaction with the remote web console on network events (HTTP requests, responses) in Servo. //! Handles interaction with the remote web console on network events (HTTP requests, responses) in Servo.
use std::net::TcpStream; use std::net::TcpStream;

View file

@ -101,7 +101,7 @@ struct FramerateEmitterReply {
/// HighResolutionStamp is struct that contains duration in milliseconds /// HighResolutionStamp is struct that contains duration in milliseconds
/// with accuracy to microsecond that shows how much time has passed since /// with accuracy to microsecond that shows how much time has passed since
/// actor registry inited /// actor registry inited
/// analog https://w3c.github.io/hr-time/#sec-DOMHighResTimeStamp /// analog <https://w3c.github.io/hr-time/#sec-DOMHighResTimeStamp>
pub struct HighResolutionStamp(f64); pub struct HighResolutionStamp(f64);
impl HighResolutionStamp { impl HighResolutionStamp {

View file

@ -48,7 +48,7 @@ use crate::actors::worker::{WorkerActor, WorkerType};
use crate::protocol::JsonPacketStream; use crate::protocol::JsonPacketStream;
mod actor; mod actor;
/// Corresponds to http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/ /// Corresponds to <http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/>
mod actors { mod actors {
pub mod browsing_context; pub mod browsing_context;
pub mod console; pub mod console;

View file

@ -3,8 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Low-level wire protocol implementation. Currently only supports //! Low-level wire protocol implementation. Currently only supports
//! [JSON packets] //! [JSON packets](https://wiki.mozilla.org/Remote_Debugging_Protocol_Stream_Transport#JSON_Packets).
//! (https://wiki.mozilla.org/Remote_Debugging_Protocol_Stream_Transport#JSON_Packets).
use std::error::Error; use std::error::Error;
use std::io::{Read, Write}; use std::io::{Read, Write};

View file

@ -59,7 +59,7 @@ impl FontTableMethods for FontTable {
} }
/// Data from the OS/2 table of an OpenType font. /// Data from the OS/2 table of an OpenType font.
/// See https://www.microsoft.com/typography/otspec/os2.htm /// See <https://www.microsoft.com/typography/otspec/os2.htm>
#[derive(Debug)] #[derive(Debug)]
struct OS2Table { struct OS2Table {
us_weight_class: u16, us_weight_class: u16,

View file

@ -117,7 +117,7 @@ impl GlyphEntry {
/// non-exhaustively listed in the specification. Other characters may map to the same /// non-exhaustively listed in the specification. Other characters may map to the same
/// glyphs, but this function does not take mapping into account. /// glyphs, but this function does not take mapping into account.
/// ///
/// See https://drafts.csswg.org/css-text/#word-separator. /// See <https://drafts.csswg.org/css-text/#word-separator>.
fn char_is_word_separator(&self) -> bool { fn char_is_word_separator(&self) -> bool {
self.has_flag(FLAG_CHAR_IS_WORD_SEPARATOR) self.has_flag(FLAG_CHAR_IS_WORD_SEPARATOR)
} }
@ -433,7 +433,7 @@ pub struct GlyphStore {
total_advance: Au, total_advance: Au,
/// A cache of the number of word separators in the entire glyph store. /// A cache of the number of word separators in the entire glyph store.
/// See https://drafts.csswg.org/css-text/#word-separator. /// See <https://drafts.csswg.org/css-text/#word-separator>.
total_word_separators: i32, total_word_separators: i32,
/// Used to check if fast path should be used in glyph iteration. /// Used to check if fast path should be used in glyph iteration.

View file

@ -13,17 +13,17 @@
//! "CSS 2.1" or "CSS 2.2" refers to the editor's draft of the W3C "Cascading Style Sheets Level 2 //! "CSS 2.1" or "CSS 2.2" refers to the editor's draft of the W3C "Cascading Style Sheets Level 2
//! Revision 2 (CSS 2.2) Specification" available here: //! Revision 2 (CSS 2.2) Specification" available here:
//! //!
//! http://dev.w3.org/csswg/css2/ //! <http://dev.w3.org/csswg/css2/>
//! //!
//! "INTRINSIC" refers to L. David Baron's "More Precise Definitions of Inline Layout and Table //! "INTRINSIC" refers to L. David Baron's "More Precise Definitions of Inline Layout and Table
//! Layout" available here: //! Layout" available here:
//! //!
//! http://dbaron.org/css/intrinsic/ //! <http://dbaron.org/css/intrinsic/>
//! //!
//! "CSS-SIZING" refers to the W3C "CSS Intrinsic & Extrinsic Sizing Module Level 3" document //! "CSS-SIZING" refers to the W3C "CSS Intrinsic & Extrinsic Sizing Module Level 3" document
//! available here: //! available here:
//! //!
//! http://dev.w3.org/csswg/css-sizing/ //! <http://dev.w3.org/csswg/css-sizing/>
use std::cmp::{max, min}; use std::cmp::{max, min};
use std::fmt; use std::fmt;

View file

@ -40,7 +40,7 @@ pub struct BackgroundPlacement {
/// Obviously it does not work with empty arrays. /// Obviously it does not work with empty arrays.
/// ///
/// This is used for multiple layered background images. /// This is used for multiple layered background images.
/// See: https://drafts.csswg.org/css-backgrounds-3/#layering /// See: <https://drafts.csswg.org/css-backgrounds-3/#layering>
pub fn get_cyclic<T>(arr: &[T], index: usize) -> &T { pub fn get_cyclic<T>(arr: &[T], index: usize) -> &T {
&arr[index % arr.len()] &arr[index % arr.len()]
} }

View file

@ -103,7 +103,7 @@ impl<'a> ClipScrollState<'a> {
} }
/// Contentful paint, for the purpose of /// Contentful paint, for the purpose of
/// https://w3c.github.io/paint-timing/#first-contentful-paint /// <https://w3c.github.io/paint-timing/#first-contentful-paint>
/// (i.e. the display list contains items of type text, /// (i.e. the display list contains items of type text,
/// image, non-white canvas or SVG). Used by metrics. /// image, non-white canvas or SVG). Used by metrics.
pub struct IsContentful(pub bool); pub struct IsContentful(pub bool);

View file

@ -5,8 +5,8 @@
//! Reference-counted pointers to flows. //! Reference-counted pointers to flows.
//! //!
//! Eventually, with dynamically sized types in Rust, much of this code will //! Eventually, with dynamically sized types in Rust, much of this code will
//! be superfluous. This design is largely duplicating logic of Arc<T> and //! be superfluous. This design is largely duplicating logic of `Arc<T>` and
//! Weak<T>; please see comments there for details. //! `Weak<T>`; please see comments there for details.
use std::ops::Deref; use std::ops::Deref;
use std::sync::{Arc, Weak}; use std::sync::{Arc, Weak};
@ -25,7 +25,7 @@ impl Deref for FlowRef {
impl FlowRef { impl FlowRef {
/// `FlowRef`s can only be made available to the traversal code. /// `FlowRef`s can only be made available to the traversal code.
/// See https://github.com/servo/servo/issues/14014 for more details. /// See <https://github.com/servo/servo/issues/14014> for more details.
pub fn new(mut r: Arc<dyn Flow>) -> Self { pub fn new(mut r: Arc<dyn Flow>) -> Self {
// This assertion checks that this `FlowRef` does not alias normal `Arc`s. // This assertion checks that this `FlowRef` does not alias normal `Arc`s.
// If that happens, we're in trouble. // If that happens, we're in trouble.
@ -46,7 +46,7 @@ impl FlowRef {
} }
/// WARNING: This should only be used when there is no aliasing: /// WARNING: This should only be used when there is no aliasing:
/// when the traversal ensures that no other threads accesses the same flow at the same time. /// when the traversal ensures that no other threads accesses the same flow at the same time.
/// See https://github.com/servo/servo/issues/6503 /// See <https://github.com/servo/servo/issues/6503>.
/// Use Arc::get_mut instead when possible (e.g. on an Arc that was just created). /// Use Arc::get_mut instead when possible (e.g. on an Arc that was just created).
#[allow(unsafe_code)] #[allow(unsafe_code)]
pub fn deref_mut(this: &mut FlowRef) -> &mut dyn Flow { pub fn deref_mut(this: &mut FlowRef) -> &mut dyn Flow {

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! CSS Multi-column layout http://dev.w3.org/csswg/css-multicol/ //! CSS Multi-column layout <http://dev.w3.org/csswg/css-multicol/>
use std::cmp::{max, min}; use std::cmp::{max, min};
use std::fmt; use std::fmt;

View file

@ -726,7 +726,7 @@ pub fn process_node_scroll_id_request<'dom>(
layout_node.generate_scroll_id(id) layout_node.generate_scroll_id(id)
} }
/// https://drafts.csswg.org/cssom-view/#scrolling-area /// <https://drafts.csswg.org/cssom-view/#scrolling-area>
pub fn process_scrolling_area_request( pub fn process_scrolling_area_request(
requested_node: Option<OpaqueNode>, requested_node: Option<OpaqueNode>,
layout_root: &mut dyn Flow, layout_root: &mut dyn Flow,

View file

@ -1167,7 +1167,7 @@ impl<'a> Iterator for TableRowIterator<'a> {
/// for each cell /// for each cell
/// ///
/// Used for correctly handling table layers from /// Used for correctly handling table layers from
/// https://drafts.csswg.org/css2/tables.html#table-layers /// <https://drafts.csswg.org/css2/tables.html#table-layers>
struct TableCellStyleIterator<'table> { struct TableCellStyleIterator<'table> {
column_styles: Vec<ColumnStyle<'table>>, column_styles: Vec<ColumnStyle<'table>>,
row_iterator: TableRowAndGroupIterator<'table>, row_iterator: TableRowAndGroupIterator<'table>,

View file

@ -7,7 +7,7 @@
//! This follows the "More Precise Definitions of Inline Layout and Table Layout" proposal written //! This follows the "More Precise Definitions of Inline Layout and Table Layout" proposal written
//! by L. David Baron (Mozilla) here: //! by L. David Baron (Mozilla) here:
//! //!
//! http://dbaron.org/css/intrinsic/ //! <http://dbaron.org/css/intrinsic/>
//! //!
//! Hereafter this document is referred to as INTRINSIC. //! Hereafter this document is referred to as INTRINSIC.

View file

@ -55,7 +55,7 @@ pub(super) fn build(
} }
} }
/// https://drafts.csswg.org/css-images-3/#linear-gradients /// <https://drafts.csswg.org/css-images-3/#linear-gradients>
pub(super) fn build_linear( pub(super) fn build_linear(
style: &ComputedValues, style: &ComputedValues,
items: &[GradientItem<Color, LengthPercentage>], items: &[GradientItem<Color, LengthPercentage>],
@ -155,7 +155,7 @@ pub(super) fn build_linear(
) )
} }
/// https://drafts.csswg.org/css-images-3/#radial-gradients /// <https://drafts.csswg.org/css-images-3/#radial-gradients>
pub(super) fn build_radial( pub(super) fn build_radial(
style: &ComputedValues, style: &ComputedValues,
items: &[GradientItem<Color, LengthPercentage>], items: &[GradientItem<Color, LengthPercentage>],
@ -255,7 +255,7 @@ pub(super) fn build_radial(
) )
} }
/// https://drafts.csswg.org/css-images-4/#color-stop-fixup /// <https://drafts.csswg.org/css-images-4/#color-stop-fixup>
fn fixup_stops( fn fixup_stops(
style: &ComputedValues, style: &ComputedValues,
items: &[GradientItem<Color, LengthPercentage>], items: &[GradientItem<Color, LengthPercentage>],

View file

@ -118,7 +118,7 @@ pub(crate) struct DisplayListBuilder<'a> {
/// Contentful paint i.e. whether the display list contains items of type /// Contentful paint i.e. whether the display list contains items of type
/// text, image, non-white canvas or SVG). Used by metrics. /// text, image, non-white canvas or SVG). Used by metrics.
/// See https://w3c.github.io/paint-timing/#first-contentful-paint. /// See <https://w3c.github.io/paint-timing/#first-contentful-paint>.
is_contentful: bool, is_contentful: bool,
} }

View file

@ -511,7 +511,7 @@ impl StackingContext {
true true
} }
/// https://drafts.csswg.org/css-backgrounds/#special-backgrounds /// <https://drafts.csswg.org/css-backgrounds/#special-backgrounds>
/// ///
/// This is only called for the root `StackingContext` /// This is only called for the root `StackingContext`
pub(crate) fn build_canvas_background_display_list( pub(crate) fn build_canvas_background_display_list(

View file

@ -327,7 +327,7 @@ where
}) })
} }
/// https://www.w3.org/TR/CSS2/generate.html#propdef-content /// <https://www.w3.org/TR/CSS2/generate.html#propdef-content>
fn generate_pseudo_element_content<'dom, Node>( fn generate_pseudo_element_content<'dom, Node>(
pseudo_element_style: &ComputedValues, pseudo_element_style: &ComputedValues,
element: Node, element: Node,

View file

@ -38,7 +38,7 @@ impl FlexContainer {
} }
} }
/// https://drafts.csswg.org/css-flexbox/#flex-items /// <https://drafts.csswg.org/css-flexbox/#flex-items>
struct FlexContainerBuilder<'a, 'dom, Node> { struct FlexContainerBuilder<'a, 'dom, Node> {
context: &'a LayoutContext<'a>, context: &'a LayoutContext<'a>,
info: &'a NodeAndStyleInfo<Node>, info: &'a NodeAndStyleInfo<Node>,
@ -98,7 +98,7 @@ where
} }
} }
/// https://drafts.csswg.org/css-text/#white-space /// <https://drafts.csswg.org/css-text/#white-space>
fn is_only_document_white_space<Node>(run: &TextRun<'_, Node>) -> bool { fn is_only_document_white_space<Node>(run: &TextRun<'_, Node>) -> bool {
// FIXME: is this the right definition? See // FIXME: is this the right definition? See
// https://github.com/w3c/csswg-drafts/issues/5146 // https://github.com/w3c/csswg-drafts/issues/5146

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! https://drafts.csswg.org/css-flexbox/#box-model //! <https://drafts.csswg.org/css-flexbox/#box-model>
use style::properties::longhands::flex_direction::computed_value::T as FlexDirection; use style::properties::longhands::flex_direction::computed_value::T as FlexDirection;
@ -87,7 +87,7 @@ pub(super) enum FlexAxis {
} }
/// Which flow-relative sides map to the main-start and cross-start sides, respectively. /// Which flow-relative sides map to the main-start and cross-start sides, respectively.
/// See https://drafts.csswg.org/css-flexbox/#box-model /// See <https://drafts.csswg.org/css-flexbox/#box-model>
#[derive(Clone, Copy)] #[derive(Clone, Copy)]
pub(super) enum MainStartCrossStart { pub(super) enum MainStartCrossStart {
InlineStartBlockStart, InlineStartBlockStart,

View file

@ -69,10 +69,10 @@ struct FlexItem<'a> {
/// This is the difference between an outer and inner size. /// This is the difference between an outer and inner size.
pbm_auto_is_zero: FlexRelativeVec2<Length>, pbm_auto_is_zero: FlexRelativeVec2<Length>,
/// https://drafts.csswg.org/css-flexbox/#algo-main-item /// <https://drafts.csswg.org/css-flexbox/#algo-main-item>
flex_base_size: Length, flex_base_size: Length,
/// https://drafts.csswg.org/css-flexbox/#algo-main-item /// <https://drafts.csswg.org/css-flexbox/#algo-main-item>
hypothetical_main_size: Length, hypothetical_main_size: Length,
/// This is `align-self`, defaulting to `align-items` if `auto` /// This is `align-self`, defaulting to `align-items` if `auto`
align_self: AlignItems, align_self: AlignItems,
@ -153,7 +153,7 @@ impl FlexContainer {
ContentSizes::zero() // Return an incorrect result rather than panic ContentSizes::zero() // Return an incorrect result rather than panic
} }
/// https://drafts.csswg.org/css-flexbox/#layout-algorithm /// <https://drafts.csswg.org/css-flexbox/#layout-algorithm>
pub(crate) fn layout( pub(crate) fn layout(
&self, &self,
layout_context: &LayoutContext, layout_context: &LayoutContext,
@ -552,7 +552,7 @@ impl<'a> FlexItem<'a> {
} }
} }
/// https://drafts.csswg.org/css-flexbox/#algo-main-item /// <https://drafts.csswg.org/css-flexbox/#algo-main-item>
fn flex_base_size( fn flex_base_size(
flex_context: &FlexContext, flex_context: &FlexContext,
flex_item: &mut IndependentFormattingContext, flex_item: &mut IndependentFormattingContext,
@ -872,7 +872,7 @@ impl FlexLine<'_> {
} }
/// Return the *main size* of each item, and the lines remainaing free space /// Return the *main size* of each item, and the lines remainaing free space
/// https://drafts.csswg.org/css-flexbox/#resolve-flexible-lengths /// <https://drafts.csswg.org/css-flexbox/#resolve-flexible-lengths>
fn resolve_flexible_lengths(&self, container_main_size: Length) -> (Vec<Length>, Length) { fn resolve_flexible_lengths(&self, container_main_size: Length) -> (Vec<Length>, Length) {
let mut frozen = vec![false; self.items.len()]; let mut frozen = vec![false; self.items.len()];
let mut target_main_sizes_vec = self let mut target_main_sizes_vec = self
@ -1135,7 +1135,7 @@ impl<'a> FlexItem<'a> {
} }
impl<'items> FlexLine<'items> { impl<'items> FlexLine<'items> {
/// https://drafts.csswg.org/css-flexbox/#algo-cross-line /// <https://drafts.csswg.org/css-flexbox/#algo-cross-line>
fn cross_size( fn cross_size(
&self, &self,
item_layout_results: &[FlexItemLayoutResult], item_layout_results: &[FlexItemLayoutResult],
@ -1238,7 +1238,7 @@ impl<'items> FlexLine<'items> {
impl FlexItem<'_> { impl FlexItem<'_> {
/// Return the cross-start and cross-end margin, with `auto` values resolved. /// Return the cross-start and cross-end margin, with `auto` values resolved.
/// https://drafts.csswg.org/css-flexbox/#algo-cross-margins /// <https://drafts.csswg.org/css-flexbox/#algo-cross-margins>
fn resolve_auto_cross_margins( fn resolve_auto_cross_margins(
&self, &self,
flex_context: &FlexContext, flex_context: &FlexContext,

View file

@ -4,7 +4,7 @@
//! Float layout. //! Float layout.
//! //!
//! See CSS 2.1 § 9.5.1: https://www.w3.org/TR/CSS2/visuren.html#float-position //! See CSS 2.1 § 9.5.1: <https://www.w3.org/TR/CSS2/visuren.html#float-position>
use std::collections::VecDeque; use std::collections::VecDeque;
use std::fmt::{Debug, Formatter, Result as FmtResult}; use std::fmt::{Debug, Formatter, Result as FmtResult};
@ -506,7 +506,7 @@ pub struct PlacementInfo {
/// Whether the float is left or right. /// Whether the float is left or right.
/// ///
/// See CSS 2.1 § 9.5.1: https://www.w3.org/TR/CSS2/visuren.html#float-position /// See CSS 2.1 § 9.5.1: <https://www.w3.org/TR/CSS2/visuren.html#float-position>
#[derive(Clone, Copy, Debug, PartialEq)] #[derive(Clone, Copy, Debug, PartialEq)]
pub enum FloatSide { pub enum FloatSide {
Left, Left,
@ -600,8 +600,8 @@ impl FloatBand {
/// ///
/// AA trees were chosen for simplicity. /// AA trees were chosen for simplicity.
/// ///
/// See: https://en.wikipedia.org/wiki/AA_tree /// See: <https://en.wikipedia.org/wiki/AA_tree>
/// https://arxiv.org/pdf/1412.4882.pdf /// <https://arxiv.org/pdf/1412.4882.pdf>
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct FloatBandTree { pub struct FloatBandTree {
pub root: FloatBandLink, pub root: FloatBandLink,
@ -787,12 +787,13 @@ impl FloatBandLink {
} }
/// Corrects tree balance: /// Corrects tree balance:
/// ///```text
/// T L /// T L
/// / \ / \ /// / \ / \
/// L R → A T if level(T) = level(L) /// L R → A T if level(T) = level(L)
/// / \ / \ /// / \ / \
/// A B B R /// A B B R
/// ```
fn skew(&self) -> FloatBandLink { fn skew(&self) -> FloatBandLink {
if let Some(ref this) = self.0 { if let Some(ref this) = self.0 {
if let Some(ref left) = this.left.0 { if let Some(ref left) = this.left.0 {
@ -816,12 +817,13 @@ impl FloatBandLink {
} }
/// Corrects tree balance: /// Corrects tree balance:
/// ///```text
/// T R /// T R
/// / \ / \ /// / \ / \
/// A R → T X if level(T) = level(X) /// A R → T X if level(T) = level(X)
/// / \ / \ /// / \ / \
/// B X A B /// B X A B
/// ```
fn split(&self) -> FloatBandLink { fn split(&self) -> FloatBandLink {
if let Some(ref this) = self.0 { if let Some(ref this) = self.0 {
if let Some(ref right) = this.right.0 { if let Some(ref right) = this.right.0 {

View file

@ -93,7 +93,7 @@ pub(crate) struct InlineBox {
pub children: Vec<ArcRefCell<InlineLevelBox>>, pub children: Vec<ArcRefCell<InlineLevelBox>>,
} }
/// https://www.w3.org/TR/css-display-3/#css-text-run /// <https://www.w3.org/TR/css-display-3/#css-text-run>
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
pub(crate) struct TextRun { pub(crate) struct TextRun {
pub base_fragment_info: BaseFragmentInfo, pub base_fragment_info: BaseFragmentInfo,
@ -296,7 +296,7 @@ impl LineBlockSizes {
.adjust_for_nested_baseline_offset(baseline_offset); .adjust_for_nested_baseline_offset(baseline_offset);
} }
/// From https://drafts.csswg.org/css2/visudet.html#line-height: /// From <https://drafts.csswg.org/css2/visudet.html#line-height>:
/// > The inline-level boxes are aligned vertically according to their 'vertical-align' /// > The inline-level boxes are aligned vertically according to their 'vertical-align'
/// > property. In case they are aligned 'top' or 'bottom', they must be aligned so as /// > property. In case they are aligned 'top' or 'bottom', they must be aligned so as
/// > to minimize the line box height. If such boxes are tall enough, there are multiple /// > to minimize the line box height. If such boxes are tall enough, there are multiple
@ -475,7 +475,7 @@ struct InlineContainerState {
has_content: bool, has_content: bool,
/// Indicates whether this nesting level have text decorations in effect. /// Indicates whether this nesting level have text decorations in effect.
/// From https://drafts.csswg.org/css-text-decor/#line-decoration /// From <https://drafts.csswg.org/css-text-decor/#line-decoration>
// "When specified on or propagated to a block container that establishes // "When specified on or propagated to a block container that establishes
// an IFC..." // an IFC..."
text_decoration_line: TextDecorationLine, text_decoration_line: TextDecorationLine,
@ -483,7 +483,7 @@ struct InlineContainerState {
/// The block size contribution of this container's default font ie the size of the /// The block size contribution of this container's default font ie the size of the
/// "strut." Whether this is integrated into the [`Self::nested_strut_block_sizes`] /// "strut." Whether this is integrated into the [`Self::nested_strut_block_sizes`]
/// depends on the line-height quirk described in /// depends on the line-height quirk described in
/// https://quirks.spec.whatwg.org/#the-line-height-calculation-quirk. /// <https://quirks.spec.whatwg.org/#the-line-height-calculation-quirk>.
strut_block_sizes: LineBlockSizes, strut_block_sizes: LineBlockSizes,
/// The strut block size of this inline container maxed with the strut block /// The strut block size of this inline container maxed with the strut block
@ -527,7 +527,7 @@ struct InlineFormattingContextState<'a, 'b> {
/// The [`InlineContainerState`] for the container formed by the root of the /// The [`InlineContainerState`] for the container formed by the root of the
/// [`InlineFormattingContext`]. This is effectively the "root inline box" described /// [`InlineFormattingContext`]. This is effectively the "root inline box" described
/// by https://drafts.csswg.org/css-inline/#model: /// by <https://drafts.csswg.org/css-inline/#model>:
/// ///
/// > The block container also generates a root inline box, which is an anonymous /// > The block container also generates a root inline box, which is an anonymous
/// > inline box that holds all of its inline-level contents. (Thus, all text in an /// > inline box that holds all of its inline-level contents. (Thus, all text in an
@ -546,10 +546,10 @@ struct InlineFormattingContextState<'a, 'b> {
/// are currently laid out at the top-level of each [`InlineFormattingContext`]. /// are currently laid out at the top-level of each [`InlineFormattingContext`].
fragments: Vec<Fragment>, fragments: Vec<Fragment>,
/// Information about the line currently being laid out into [`LineItems`]s. /// Information about the line currently being laid out into [`LineItem`]s.
current_line: LineUnderConstruction, current_line: LineUnderConstruction,
/// Information about the unbreakable line segment currently being laid out into [`LineItems`]s. /// Information about the unbreakable line segment currently being laid out into [`LineItem`]s.
current_line_segment: UnbreakableSegmentUnderConstruction, current_line_segment: UnbreakableSegmentUnderConstruction,
/// The line breaking state for this inline formatting context. /// The line breaking state for this inline formatting context.
@ -2183,7 +2183,7 @@ fn font_metrics_from_style(layout_context: &LayoutContext, style: &ComputedValue
/// comes before or after an atomic inline element. /// comes before or after an atomic inline element.
/// ///
/// From https://www.w3.org/TR/css-text-3/#line-break-details: /// From <https://www.w3.org/TR/css-text-3/#line-break-details>:
/// ///
/// > For Web-compatibility there is a soft wrap opportunity before and after each /// > For Web-compatibility there is a soft wrap opportunity before and after each
/// > replaced element or other atomic inline, even when adjacent to a character that /// > replaced element or other atomic inline, even when adjacent to a character that
@ -2213,7 +2213,7 @@ fn is_baseline_relative(vertical_align: GenericVerticalAlign<LengthPercentage>)
/// all inline containers get struts. In quirks mode this isn't always the case /// all inline containers get struts. In quirks mode this isn't always the case
/// though. /// though.
/// ///
/// From https://quirks.spec.whatwg.org/#the-line-height-calculation-quirk /// From <https://quirks.spec.whatwg.org/#the-line-height-calculation-quirk>
/// ///
/// > ### § 3.3. The line height calculation quirk /// > ### § 3.3. The line height calculation quirk
/// > In quirks mode and limited-quirks mode, an inline box that matches the following /// > In quirks mode and limited-quirks mode, an inline box that matches the following

View file

@ -622,8 +622,8 @@ impl BlockLevelBox {
/// Lay out a normal flow non-replaced block that does not establish a new formatting /// Lay out a normal flow non-replaced block that does not establish a new formatting
/// context. /// context.
/// ///
/// - https://drafts.csswg.org/css2/visudet.html#blockwidth /// - <https://drafts.csswg.org/css2/visudet.html#blockwidth>
/// - https://drafts.csswg.org/css2/visudet.html#normal-block /// - <https://drafts.csswg.org/css2/visudet.html#normal-block>
fn layout_in_flow_non_replaced_block_level_same_formatting_context( fn layout_in_flow_non_replaced_block_level_same_formatting_context(
layout_context: &LayoutContext, layout_context: &LayoutContext,
positioning_context: &mut PositioningContext, positioning_context: &mut PositioningContext,
@ -826,8 +826,8 @@ impl NonReplacedFormattingContext {
/// Lay out a normal in flow non-replaced block that establishes an independent /// Lay out a normal in flow non-replaced block that establishes an independent
/// formatting context in its containing formatting context. /// formatting context in its containing formatting context.
/// ///
/// - https://drafts.csswg.org/css2/visudet.html#blockwidth /// - <https://drafts.csswg.org/css2/visudet.html#blockwidth>
/// - https://drafts.csswg.org/css2/visudet.html#normal-block /// - <https://drafts.csswg.org/css2/visudet.html#normal-block>
fn layout_in_flow_block_level( fn layout_in_flow_block_level(
&self, &self,
layout_context: &LayoutContext, layout_context: &LayoutContext,
@ -1119,9 +1119,9 @@ impl NonReplacedFormattingContext {
} }
} }
/// https://drafts.csswg.org/css2/visudet.html#block-replaced-width /// <https://drafts.csswg.org/css2/visudet.html#block-replaced-width>
/// https://drafts.csswg.org/css2/visudet.html#inline-replaced-width /// <https://drafts.csswg.org/css2/visudet.html#inline-replaced-width>
/// https://drafts.csswg.org/css2/visudet.html#inline-replaced-height /// <https://drafts.csswg.org/css2/visudet.html#inline-replaced-height>
fn layout_in_flow_replaced_block_level<'a>( fn layout_in_flow_replaced_block_level<'a>(
containing_block: &ContainingBlock, containing_block: &ContainingBlock,
base_fragment_info: BaseFragmentInfo, base_fragment_info: BaseFragmentInfo,

View file

@ -34,7 +34,7 @@ pub struct BoxTree {
/// There may be zero if that element has `display: none`. /// There may be zero if that element has `display: none`.
root: BlockFormattingContext, root: BlockFormattingContext,
/// https://drafts.csswg.org/css-backgrounds/#special-backgrounds /// <https://drafts.csswg.org/css-backgrounds/#special-backgrounds>
canvas_background: CanvasBackground, canvas_background: CanvasBackground,
} }
@ -338,7 +338,7 @@ impl BoxTree {
} }
} }
/// https://drafts.csswg.org/css-backgrounds/#root-background /// <https://drafts.csswg.org/css-backgrounds/#root-background>
#[derive(Clone, Serialize)] #[derive(Clone, Serialize)]
pub struct CanvasBackground { pub struct CanvasBackground {
/// DOM node for the root element /// DOM node for the root element
@ -346,7 +346,7 @@ pub struct CanvasBackground {
/// The element whose style the canvas takes background properties from (see next field). /// The element whose style the canvas takes background properties from (see next field).
/// This can be the root element (same as the previous field), or the HTML `<body>` element. /// This can be the root element (same as the previous field), or the HTML `<body>` element.
/// See https://drafts.csswg.org/css-backgrounds/#body-background /// See <https://drafts.csswg.org/css-backgrounds/#body-background>
pub from_element: OpaqueNode, pub from_element: OpaqueNode,
/// The computed styles to take background properties from. /// The computed styles to take background properties from.

View file

@ -24,7 +24,7 @@ use crate::style_ext::DisplayInside;
use crate::table::Table; use crate::table::Table;
use crate::ContainingBlock; use crate::ContainingBlock;
/// https://drafts.csswg.org/css-display/#independent-formatting-context /// <https://drafts.csswg.org/css-display/#independent-formatting-context>
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
pub(crate) enum IndependentFormattingContext { pub(crate) enum IndependentFormattingContext {
NonReplaced(NonReplacedFormattingContext), NonReplaced(NonReplacedFormattingContext),
@ -62,7 +62,7 @@ pub(crate) enum NonReplacedFormattingContextContents {
pub(crate) struct IndependentLayout { pub(crate) struct IndependentLayout {
pub fragments: Vec<Fragment>, pub fragments: Vec<Fragment>,
/// https://drafts.csswg.org/css2/visudet.html#root-height /// <https://drafts.csswg.org/css2/visudet.html#root-height>
pub content_block_size: Au, pub content_block_size: Au,
/// The offset of the last inflow baseline of this layout in the content area, if /// The offset of the last inflow baseline of this layout in the content area, if

View file

@ -29,7 +29,7 @@ pub(crate) struct BoxFragment {
/// From the containing blocks start corner…? /// From the containing blocks start corner…?
/// This might be broken when the containing block is in a different writing mode: /// This might be broken when the containing block is in a different writing mode:
/// https://drafts.csswg.org/css-writing-modes/#orthogonal-flows /// <https://drafts.csswg.org/css-writing-modes/#orthogonal-flows>
pub content_rect: LogicalRect<Length>, pub content_rect: LogicalRect<Length>,
pub padding: LogicalSides<Length>, pub padding: LogicalSides<Length>,
@ -41,7 +41,7 @@ pub(crate) struct BoxFragment {
/// so that the element doesn't overlap earlier floats in the same BFC. /// so that the element doesn't overlap earlier floats in the same BFC.
/// The presence of clearance prevents the top margin from collapsing with /// The presence of clearance prevents the top margin from collapsing with
/// earlier margins or with the bottom margin of the parent block. /// earlier margins or with the bottom margin of the parent block.
/// https://drafts.csswg.org/css2/#clearance /// <https://drafts.csswg.org/css2/#clearance>
pub clearance: Option<Length>, pub clearance: Option<Length>,
/// When this box contains an inline formatting context, this tracks the baseline /// When this box contains an inline formatting context, this tracks the baseline

View file

@ -15,7 +15,7 @@ pub(crate) struct ContainingBlockManager<'a, T> {
/// position is 'relative' or 'static', the containing block is formed by the /// position is 'relative' or 'static', the containing block is formed by the
/// content edge of the nearest block container ancestor box." This is also /// content edge of the nearest block container ancestor box." This is also
/// the case for 'position: sticky' elements. /// the case for 'position: sticky' elements.
/// https://www.w3.org/TR/CSS2/visudet.html#containing-block-details /// <https://www.w3.org/TR/CSS2/visudet.html#containing-block-details>
pub for_non_absolute_descendants: &'a T, pub for_non_absolute_descendants: &'a T,
/// The containing block for absolute descendants. "If the element has /// The containing block for absolute descendants. "If the element has
@ -29,7 +29,7 @@ pub(crate) struct ContainingBlockManager<'a, T> {
/// undefined. /// undefined.
/// 2. Otherwise, the containing block is formed by the padding edge of the /// 2. Otherwise, the containing block is formed by the padding edge of the
/// ancestor." /// ancestor."
/// https://www.w3.org/TR/CSS2/visudet.html#containing-block-details /// <https://www.w3.org/TR/CSS2/visudet.html#containing-block-details>
/// If the ancestor forms a containing block for all descendants (see below), /// If the ancestor forms a containing block for all descendants (see below),
/// this value will be None and absolute descendants will use the containing /// this value will be None and absolute descendants will use the containing
/// block for fixed descendants. /// block for fixed descendants.
@ -41,7 +41,7 @@ pub(crate) struct ContainingBlockManager<'a, T> {
/// establish a containing block for all descendants. Its padding box will be /// establish a containing block for all descendants. Its padding box will be
/// used to layout for all of its absolute-position descendants, /// used to layout for all of its absolute-position descendants,
/// fixed-position descendants, and descendant fixed background attachments." /// fixed-position descendants, and descendant fixed background attachments."
/// https://w3c.github.io/csswg-drafts/css-transforms-1/#containing-block-for-all-descendants /// <https://w3c.github.io/csswg-drafts/css-transforms-1/#containing-block-for-all-descendants>
/// See `ComputedValues::establishes_containing_block_for_all_descendants` /// See `ComputedValues::establishes_containing_block_for_all_descendants`
/// for a list of conditions where an element forms a containing block for /// for a list of conditions where an element forms a containing block for
/// all descendants. /// all descendants.

View file

@ -31,13 +31,13 @@ pub struct FragmentTree {
pub(crate) root_fragments: Vec<ArcRefCell<Fragment>>, pub(crate) root_fragments: Vec<ArcRefCell<Fragment>>,
/// The scrollable overflow rectangle for the entire tree /// The scrollable overflow rectangle for the entire tree
/// https://drafts.csswg.org/css-overflow/#scrollable /// <https://drafts.csswg.org/css-overflow/#scrollable>
pub(crate) scrollable_overflow: PhysicalRect<Length>, pub(crate) scrollable_overflow: PhysicalRect<Length>,
/// The containing block used in the layout of this fragment tree. /// The containing block used in the layout of this fragment tree.
pub(crate) initial_containing_block: PhysicalRect<Length>, pub(crate) initial_containing_block: PhysicalRect<Length>,
/// https://drafts.csswg.org/css-backgrounds/#special-backgrounds /// <https://drafts.csswg.org/css-backgrounds/#special-backgrounds>
#[serde(skip)] #[serde(skip)]
pub(crate) canvas_background: CanvasBackground, pub(crate) canvas_background: CanvasBackground,
} }

View file

@ -11,7 +11,7 @@ use crate::dom::NodeExt;
use crate::dom_traversal::{NodeAndStyleInfo, PseudoElementContentItem}; use crate::dom_traversal::{NodeAndStyleInfo, PseudoElementContentItem};
use crate::replaced::ReplacedContent; use crate::replaced::ReplacedContent;
/// https://drafts.csswg.org/css-lists/#content-property /// <https://drafts.csswg.org/css-lists/#content-property>
pub(crate) fn make_marker<'dom, Node>( pub(crate) fn make_marker<'dom, Node>(
context: &LayoutContext, context: &LayoutContext,
info: &NodeAndStyleInfo<Node>, info: &NodeAndStyleInfo<Node>,
@ -44,7 +44,7 @@ where
}) })
} }
/// https://drafts.csswg.org/css-lists/#marker-string /// <https://drafts.csswg.org/css-lists/#marker-string>
fn marker_string(style: &style_structs::List) -> Option<&'static str> { fn marker_string(style: &style_structs::List) -> Option<&'static str> {
match style.list_style_type { match style.list_style_type {
ListStyleType::None => None, ListStyleType::None => None,

View file

@ -755,13 +755,13 @@ struct AbsoluteAxisSolver<'a> {
impl<'a> AbsoluteAxisSolver<'a> { impl<'a> AbsoluteAxisSolver<'a> {
/// This unifies some of the parts in common in: /// This unifies some of the parts in common in:
/// ///
/// * https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width /// * <https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width>
/// * https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-height /// * <https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-height>
/// ///
/// … and: /// … and:
/// ///
/// * https://drafts.csswg.org/css2/visudet.html#abs-replaced-width /// * <https://drafts.csswg.org/css2/visudet.html#abs-replaced-width>
/// * https://drafts.csswg.org/css2/visudet.html#abs-replaced-height /// * <https://drafts.csswg.org/css2/visudet.html#abs-replaced-height>
/// ///
/// In the replaced case, `size` is never `Auto`. /// In the replaced case, `size` is never `Auto`.
fn solve_for_size(&self, computed_size: LengthOrAuto) -> AxisResult { fn solve_for_size(&self, computed_size: LengthOrAuto) -> AxisResult {
@ -859,7 +859,7 @@ fn vec_append_owned<T>(a: &mut Vec<T>, mut b: Vec<T>) {
} }
} }
/// https://drafts.csswg.org/css2/visuren.html#relative-positioning /// <https://drafts.csswg.org/css2/visuren.html#relative-positioning>
pub(crate) fn relative_adjustement( pub(crate) fn relative_adjustement(
style: &ComputedValues, style: &ComputedValues,
containing_block: &ContainingBlock, containing_block: &ContainingBlock,

View file

@ -199,7 +199,7 @@ pub fn process_node_scroll_id_request<'dom>(
layout_node.generate_scroll_id(id) layout_node.generate_scroll_id(id)
} }
/// https://drafts.csswg.org/cssom-view/#scrolling-area /// <https://drafts.csswg.org/cssom-view/#scrolling-area>
pub fn process_node_scroll_area_request( pub fn process_node_scroll_area_request(
requested_node: Option<OpaqueNode>, requested_node: Option<OpaqueNode>,
fragment_tree: Option<Arc<FragmentTree>>, fragment_tree: Option<Arc<FragmentTree>>,

View file

@ -38,18 +38,18 @@ pub(crate) struct ReplacedContent {
/// * Raster images always have an intrinsic width and height, with 1 image pixel = 1px. /// * Raster images always have an intrinsic width and height, with 1 image pixel = 1px.
/// The intrinsic ratio should be based on dividing those. /// The intrinsic ratio should be based on dividing those.
/// See https://github.com/w3c/csswg-drafts/issues/4572 for the case where either is zero. /// See <https://github.com/w3c/csswg-drafts/issues/4572> for the case where either is zero.
/// PNG specifically disallows this but I (SimonSapin) am not sure about other formats. /// PNG specifically disallows this but I (SimonSapin) am not sure about other formats.
/// ///
/// * Form controls have both intrinsic width and height **but no intrinsic ratio**. /// * Form controls have both intrinsic width and height **but no intrinsic ratio**.
/// See https://github.com/w3c/csswg-drafts/issues/1044 and /// See <https://github.com/w3c/csswg-drafts/issues/1044> and
/// https://drafts.csswg.org/css-images/#intrinsic-dimensions “In general, […]” /// <https://drafts.csswg.org/css-images/#intrinsic-dimensions> “In general, […]”
/// ///
/// * For SVG, see https://svgwg.org/svg2-draft/coords.html#SizingSVGInCSS /// * For SVG, see <https://svgwg.org/svg2-draft/coords.html#SizingSVGInCSS>
/// and again https://github.com/w3c/csswg-drafts/issues/4572. /// and again <https://github.com/w3c/csswg-drafts/issues/4572>.
/// ///
/// * IFrames do not have intrinsic width and height or intrinsic ratio according /// * IFrames do not have intrinsic width and height or intrinsic ratio according
/// to https://drafts.csswg.org/css-images/#intrinsic-dimensions. /// to <https://drafts.csswg.org/css-images/#intrinsic-dimensions>.
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
pub(crate) struct IntrinsicSizes { pub(crate) struct IntrinsicSizes {
pub width: Option<Au>, pub width: Option<Au>,
@ -318,11 +318,11 @@ impl ReplacedContent {
} }
} }
/// https://drafts.csswg.org/css2/visudet.html#inline-replaced-width /// <https://drafts.csswg.org/css2/visudet.html#inline-replaced-width>
/// https://drafts.csswg.org/css2/visudet.html#inline-replaced-height /// <https://drafts.csswg.org/css2/visudet.html#inline-replaced-height>
/// ///
/// Also used in other cases, for example /// Also used in other cases, for example
/// https://drafts.csswg.org/css2/visudet.html#block-replaced-width /// <https://drafts.csswg.org/css2/visudet.html#block-replaced-width>
pub fn used_size_as_if_inline_element( pub fn used_size_as_if_inline_element(
&self, &self,
containing_block: &ContainingBlock, containing_block: &ContainingBlock,

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! https://drafts.csswg.org/css-sizing/ //! <https://drafts.csswg.org/css-sizing/>
use serde::Serialize; use serde::Serialize;
use style::logical_geometry::WritingMode; use style::logical_geometry::WritingMode;
@ -19,7 +19,7 @@ pub(crate) struct ContentSizes {
pub max_content: Length, pub max_content: Length,
} }
/// https://drafts.csswg.org/css-sizing/#intrinsic-sizes /// <https://drafts.csswg.org/css-sizing/#intrinsic-sizes>
impl ContentSizes { impl ContentSizes {
pub fn zero() -> Self { pub fn zero() -> Self {
Self { Self {
@ -51,7 +51,7 @@ impl ContentSizes {
} }
impl ContentSizes { impl ContentSizes {
/// https://drafts.csswg.org/css2/visudet.html#shrink-to-fit-float /// <https://drafts.csswg.org/css2/visudet.html#shrink-to-fit-float>
pub fn shrink_to_fit(&self, available_size: Length) -> Length { pub fn shrink_to_fit(&self, available_size: Length) -> Length {
available_size.max(self.min_content).min(self.max_content) available_size.max(self.min_content).min(self.max_content)
} }

View file

@ -39,7 +39,7 @@ pub(crate) enum DisplayGeneratingBox {
outside: DisplayOutside, outside: DisplayOutside,
inside: DisplayInside, inside: DisplayInside,
}, },
// https://drafts.csswg.org/css-display-3/#layout-specific-display /// <https://drafts.csswg.org/css-display-3/#layout-specific-display>
LayoutInternal(DisplayLayoutInternal), LayoutInternal(DisplayLayoutInternal),
} }
@ -63,7 +63,7 @@ pub(crate) enum DisplayOutside {
#[derive(Clone, Copy, Eq, PartialEq)] #[derive(Clone, Copy, Eq, PartialEq)]
pub(crate) enum DisplayInside { pub(crate) enum DisplayInside {
// “list-items are limited to the Flow Layout display types” // “list-items are limited to the Flow Layout display types”
// https://drafts.csswg.org/css-display/#list-items // <https://drafts.csswg.org/css-display/#list-items>
Flow { is_list_item: bool }, Flow { is_list_item: bool },
FlowRoot { is_list_item: bool }, FlowRoot { is_list_item: bool },
Flex, Flex,
@ -71,7 +71,7 @@ pub(crate) enum DisplayInside {
} }
#[derive(Clone, Copy, Debug, Eq, PartialEq)] #[derive(Clone, Copy, Debug, Eq, PartialEq)]
/// https://drafts.csswg.org/css-display-3/#layout-specific-display /// <https://drafts.csswg.org/css-display-3/#layout-specific-display>
pub(crate) enum DisplayLayoutInternal { pub(crate) enum DisplayLayoutInternal {
TableCaption, TableCaption,
TableCell, TableCell,
@ -84,7 +84,7 @@ pub(crate) enum DisplayLayoutInternal {
} }
impl DisplayLayoutInternal { impl DisplayLayoutInternal {
/// https://drafts.csswg.org/css-display-3/#layout-specific-displa /// <https://drafts.csswg.org/css-display-3/#layout-specific-displa>
pub(crate) fn display_inside(&self) -> DisplayInside { pub(crate) fn display_inside(&self) -> DisplayInside {
// When we add ruby, the display_inside of ruby must be Flow. // When we add ruby, the display_inside of ruby must be Flow.
// TODO: this should be unreachable for everything but // TODO: this should be unreachable for everything but
@ -407,7 +407,7 @@ impl ComputedValuesExt for ComputedValues {
} }
/// Get the effective z-index of this fragment. Z-indices only apply to positioned elements /// Get the effective z-index of this fragment. Z-indices only apply to positioned elements
/// per CSS 2 9.9.1 (http://www.w3.org/TR/CSS2/visuren.html#z-index), so this value may differ /// per CSS 2 9.9.1 (<http://www.w3.org/TR/CSS2/visuren.html#z-index>), so this value may differ
/// from the value specified in the style. /// from the value specified in the style.
fn effective_z_index(&self) -> i32 { fn effective_z_index(&self) -> i32 {
match self.get_box().position { match self.get_box().position {

View file

@ -303,7 +303,7 @@ impl TableBuilder {
} }
} }
/// https://html.spec.whatwg.org/multipage/#algorithm-for-processing-rows /// <https://html.spec.whatwg.org/multipage/#algorithm-for-processing-rows>
/// Push a single cell onto the slot map, handling any colspans it may have, and /// Push a single cell onto the slot map, handling any colspans it may have, and
/// setting up the outgoing rowspans. /// setting up the outgoing rowspans.
pub fn add_cell(&mut self, cell: TableSlotCell) { pub fn add_cell(&mut self, cell: TableSlotCell) {
@ -468,7 +468,7 @@ where
.push(AnonymousTableContent::Text(info.clone(), text)); .push(AnonymousTableContent::Text(info.clone(), text));
} }
/// https://html.spec.whatwg.org/multipage/#forming-a-table /// <https://html.spec.whatwg.org/multipage/#forming-a-table>
fn handle_element( fn handle_element(
&mut self, &mut self,
info: &NodeAndStyleInfo<Node>, info: &NodeAndStyleInfo<Node>,
@ -646,7 +646,7 @@ where
.push(AnonymousTableContent::Text(info.clone(), text)); .push(AnonymousTableContent::Text(info.clone(), text));
} }
/// https://html.spec.whatwg.org/multipage/#algorithm-for-processing-rows /// <https://html.spec.whatwg.org/multipage/#algorithm-for-processing-rows>
fn handle_element( fn handle_element(
&mut self, &mut self,
info: &NodeAndStyleInfo<Node>, info: &NodeAndStyleInfo<Node>,

View file

@ -139,7 +139,7 @@ pub enum TableSlot {
/// ///
/// If there is more than one cell that spans a slot, this is a table model error, but /// If there is more than one cell that spans a slot, this is a table model error, but
/// we still keep track of it. See /// we still keep track of it. See
/// https://html.spec.whatwg.org/multipage/#table-model-error /// <https://html.spec.whatwg.org/multipage/#table-model-error>
Spanned(Vec<TableSlotOffset>), Spanned(Vec<TableSlotOffset>),
/// An empty spot in the table. This can happen when there is a gap in columns between /// An empty spot in the table. This can happen when there is a gap in columns between

View file

@ -137,7 +137,7 @@ pub enum CACertificates {
/// ///
/// FIXME: The `ignore_certificate_errors` argument ignores all certificate errors. This /// FIXME: The `ignore_certificate_errors` argument ignores all certificate errors. This
/// is used when running the WPT tests, because rustls currently rejects the WPT certificiate. /// is used when running the WPT tests, because rustls currently rejects the WPT certificiate.
/// See https://github.com/servo/servo/issues/30080 /// See <https://github.com/servo/servo/issues/30080>
pub fn create_tls_config( pub fn create_tls_config(
ca_certificates: CACertificates, ca_certificates: CACertificates,
ignore_certificate_errors: bool, ignore_certificate_errors: bool,

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Implementation of cookie creation and matching as specified by //! Implementation of cookie creation and matching as specified by
//! http://tools.ietf.org/html/rfc6265 //! <http://tools.ietf.org/html/rfc6265>
use std::borrow::ToOwned; use std::borrow::ToOwned;
use std::net::{Ipv4Addr, Ipv6Addr}; use std::net::{Ipv4Addr, Ipv6Addr};

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Implementation of cookie storage as specified in //! Implementation of cookie storage as specified in
//! http://tools.ietf.org/html/rfc6265 //! <http://tools.ietf.org/html/rfc6265>
use std::cmp::Ordering; use std::cmp::Ordering;
use std::collections::hash_map::Entry; use std::collections::hash_map::Entry;

View file

@ -164,7 +164,7 @@ pub async fn fetch_with_cors_cache(
main_fetch(request, cache, false, false, target, &mut None, &context).await; main_fetch(request, cache, false, false, target, &mut None, &context).await;
} }
/// https://www.w3.org/TR/CSP/#should-block-request /// <https://www.w3.org/TR/CSP/#should-block-request>
pub fn should_request_be_blocked_by_csp(request: &Request) -> csp::CheckResult { pub fn should_request_be_blocked_by_csp(request: &Request) -> csp::CheckResult {
let origin = match &request.origin { let origin = match &request.origin {
Origin::Client => return csp::CheckResult::Allowed, Origin::Client => return csp::CheckResult::Allowed,

View file

@ -144,7 +144,7 @@ impl HstsList {
} }
} }
/// Step 2.9 of https://fetch.spec.whatwg.org/#concept-main-fetch. /// Step 2.9 of <https://fetch.spec.whatwg.org/#concept-main-fetch>.
pub fn apply_hsts_rules(&self, url: &mut ServoUrl) { pub fn apply_hsts_rules(&self, url: &mut ServoUrl) {
if url.scheme() != "http" && url.scheme() != "ws" { if url.scheme() != "http" && url.scheme() != "ws" {
return; return;

View file

@ -223,7 +223,7 @@ fn strict_origin_when_cross_origin(
strip_url_for_use_as_referrer(referrer_url, true) strip_url_for_use_as_referrer(referrer_url, true)
} }
/// https://html.spec.whatwg.org/multipage/#schemelessly-same-site /// <https://html.spec.whatwg.org/multipage/#schemelessly-same-site>
fn is_schemelessy_same_site(site_a: &ImmutableOrigin, site_b: &ImmutableOrigin) -> bool { fn is_schemelessy_same_site(site_a: &ImmutableOrigin, site_b: &ImmutableOrigin) -> bool {
// Step 1 // Step 1
if !site_a.is_tuple() && !site_b.is_tuple() && site_a == site_b { if !site_a.is_tuple() && !site_b.is_tuple() && site_a == site_b {

View file

@ -94,7 +94,7 @@ fn set_webrender_image_key(webrender_api: &WebrenderIpcSender, image: &mut Image
// Aux structs and enums. // Aux structs and enums.
// ====================================================================== // ======================================================================
/// https://html.spec.whatwg.org/multipage/#list-of-available-images /// <https://html.spec.whatwg.org/multipage/#list-of-available-images>
type ImageKey = (ServoUrl, ImmutableOrigin, Option<CorsSettings>); type ImageKey = (ServoUrl, ImmutableOrigin, Option<CorsSettings>);
// Represents all the currently pending loads/decodings. For // Represents all the currently pending loads/decodings. For

View file

@ -7,7 +7,7 @@
//! Re-entrant mutexes are like mutexes, but where it is expected //! Re-entrant mutexes are like mutexes, but where it is expected
//! that a single thread may own a lock more than once. //! that a single thread may own a lock more than once.
//! It provides the same interface as https://github.com/rust-lang/rust/blob/5edaa7eefd76d4996dcf85dfc1c1a3f737087257/src/libstd/sys_common/remutex.rs //! It provides the same interface as <https://github.com/rust-lang/rust/blob/5edaa7eefd76d4996dcf85dfc1c1a3f737087257/src/libstd/sys_common/remutex.rs>
//! so if those types are ever exported, we should be able to replace this implemtation. //! so if those types are ever exported, we should be able to replace this implemtation.
use std::cell::{Cell, UnsafeCell}; use std::cell::{Cell, UnsafeCell};
@ -148,7 +148,7 @@ unsafe impl Send for HandOverHandMutex {}
/// A type for re-entrant mutexes. /// A type for re-entrant mutexes.
/// ///
/// It provides the same interface as https://github.com/rust-lang/rust/blob/5edaa7eefd76d4996dcf85dfc1c1a3f737087257/src/libstd/sys_common/remutex.rs /// It provides the same interface as <https://github.com/rust-lang/rust/blob/5edaa7eefd76d4996dcf85dfc1c1a3f737087257/src/libstd/sys_common/remutex.rs>
pub struct ReentrantMutex<T> { pub struct ReentrantMutex<T> {
mutex: HandOverHandMutex, mutex: HandOverHandMutex,

View file

@ -342,7 +342,7 @@ impl Callback for TransmitBodyPromiseRejectionHandler {
} }
} }
/// The result of https://fetch.spec.whatwg.org/#concept-bodyinit-extract /// The result of <https://fetch.spec.whatwg.org/#concept-bodyinit-extract>
pub struct ExtractedBody { pub struct ExtractedBody {
pub stream: DomRoot<ReadableStream>, pub stream: DomRoot<ReadableStream>,
pub source: BodySource, pub source: BodySource,
@ -353,12 +353,12 @@ pub struct ExtractedBody {
impl ExtractedBody { impl ExtractedBody {
/// Build a request body from the extracted body, /// Build a request body from the extracted body,
/// to be sent over IPC to net to use with `concept-request-transmit-body`, /// to be sent over IPC to net to use with `concept-request-transmit-body`,
/// see https://fetch.spec.whatwg.org/#concept-request-transmit-body. /// see <https://fetch.spec.whatwg.org/#concept-request-transmit-body>.
/// ///
/// Also returning the corresponding readable stream, /// Also returning the corresponding readable stream,
/// to be stored on the request in script, /// to be stored on the request in script,
/// and potentially used as part of `consume_body`, /// and potentially used as part of `consume_body`,
/// see https://fetch.spec.whatwg.org/#concept-body-consume-body /// see <https://fetch.spec.whatwg.org/#concept-body-consume-body>
/// ///
/// Transmitting a body over fetch, and consuming it in script, /// Transmitting a body over fetch, and consuming it in script,
/// are mutually exclusive operations, since each will lock the stream to a reader. /// are mutually exclusive operations, since each will lock the stream to a reader.

View file

@ -150,7 +150,7 @@ pub(crate) struct CanvasState {
#[no_trace] #[no_trace]
image_cache: Arc<dyn ImageCache>, image_cache: Arc<dyn ImageCache>,
/// The base URL for resolving CSS image URL values. /// The base URL for resolving CSS image URL values.
/// Needed because of https://github.com/servo/servo/issues/17625 /// Needed because of <https://github.com/servo/servo/issues/17625>
#[no_trace] #[no_trace]
base_url: ServoUrl, base_url: ServoUrl,
#[no_trace] #[no_trace]

View file

@ -129,7 +129,7 @@ impl AnalyserNode {
Ok(object) Ok(object)
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-analysernode /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-analysernode>
#[allow(non_snake_case)] #[allow(non_snake_case)]
pub fn Constructor( pub fn Constructor(
window: &Window, window: &Window,
@ -147,7 +147,7 @@ impl AnalyserNode {
impl AnalyserNodeMethods for AnalyserNode { impl AnalyserNodeMethods for AnalyserNode {
#[allow(unsafe_code)] #[allow(unsafe_code)]
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-getfloatfrequencydata /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-getfloatfrequencydata>
fn GetFloatFrequencyData(&self, mut array: CustomAutoRooterGuard<Float32Array>) { fn GetFloatFrequencyData(&self, mut array: CustomAutoRooterGuard<Float32Array>) {
// Invariant to maintain: No JS code that may touch the array should // Invariant to maintain: No JS code that may touch the array should
// run whilst we're writing to it // run whilst we're writing to it
@ -156,7 +156,7 @@ impl AnalyserNodeMethods for AnalyserNode {
} }
#[allow(unsafe_code)] #[allow(unsafe_code)]
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-getbytefrequencydata /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-getbytefrequencydata>
fn GetByteFrequencyData(&self, mut array: CustomAutoRooterGuard<Uint8Array>) { fn GetByteFrequencyData(&self, mut array: CustomAutoRooterGuard<Uint8Array>) {
// Invariant to maintain: No JS code that may touch the array should // Invariant to maintain: No JS code that may touch the array should
// run whilst we're writing to it // run whilst we're writing to it
@ -165,7 +165,7 @@ impl AnalyserNodeMethods for AnalyserNode {
} }
#[allow(unsafe_code)] #[allow(unsafe_code)]
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-getfloattimedomaindata /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-getfloattimedomaindata>
fn GetFloatTimeDomainData(&self, mut array: CustomAutoRooterGuard<Float32Array>) { fn GetFloatTimeDomainData(&self, mut array: CustomAutoRooterGuard<Float32Array>) {
// Invariant to maintain: No JS code that may touch the array should // Invariant to maintain: No JS code that may touch the array should
// run whilst we're writing to it // run whilst we're writing to it
@ -174,7 +174,7 @@ impl AnalyserNodeMethods for AnalyserNode {
} }
#[allow(unsafe_code)] #[allow(unsafe_code)]
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-getbytetimedomaindata /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-getbytetimedomaindata>
fn GetByteTimeDomainData(&self, mut array: CustomAutoRooterGuard<Uint8Array>) { fn GetByteTimeDomainData(&self, mut array: CustomAutoRooterGuard<Uint8Array>) {
// Invariant to maintain: No JS code that may touch the array should // Invariant to maintain: No JS code that may touch the array should
// run whilst we're writing to it // run whilst we're writing to it
@ -182,7 +182,7 @@ impl AnalyserNodeMethods for AnalyserNode {
self.engine.borrow().fill_byte_time_domain_data(dest); self.engine.borrow().fill_byte_time_domain_data(dest);
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-fftsize /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-fftsize>
fn SetFftSize(&self, value: u32) -> Fallible<()> { fn SetFftSize(&self, value: u32) -> Fallible<()> {
if value > 32768 || value < 32 || (value & (value - 1) != 0) { if value > 32768 || value < 32 || (value & (value - 1) != 0) {
return Err(Error::IndexSize); return Err(Error::IndexSize);
@ -191,22 +191,22 @@ impl AnalyserNodeMethods for AnalyserNode {
Ok(()) Ok(())
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-fftsize /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-fftsize>
fn FftSize(&self) -> u32 { fn FftSize(&self) -> u32 {
self.engine.borrow().get_fft_size() as u32 self.engine.borrow().get_fft_size() as u32
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-frequencybincount /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-frequencybincount>
fn FrequencyBinCount(&self) -> u32 { fn FrequencyBinCount(&self) -> u32 {
self.FftSize() / 2 self.FftSize() / 2
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-mindecibels /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-mindecibels>
fn MinDecibels(&self) -> Finite<f64> { fn MinDecibels(&self) -> Finite<f64> {
Finite::wrap(self.engine.borrow().get_min_decibels()) Finite::wrap(self.engine.borrow().get_min_decibels())
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-mindecibels /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-mindecibels>
fn SetMinDecibels(&self, value: Finite<f64>) -> Fallible<()> { fn SetMinDecibels(&self, value: Finite<f64>) -> Fallible<()> {
if *value >= self.engine.borrow().get_max_decibels() { if *value >= self.engine.borrow().get_max_decibels() {
return Err(Error::IndexSize); return Err(Error::IndexSize);
@ -215,12 +215,12 @@ impl AnalyserNodeMethods for AnalyserNode {
Ok(()) Ok(())
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-maxdecibels /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-maxdecibels>
fn MaxDecibels(&self) -> Finite<f64> { fn MaxDecibels(&self) -> Finite<f64> {
Finite::wrap(self.engine.borrow().get_max_decibels()) Finite::wrap(self.engine.borrow().get_max_decibels())
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-maxdecibels /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-maxdecibels>
fn SetMaxDecibels(&self, value: Finite<f64>) -> Fallible<()> { fn SetMaxDecibels(&self, value: Finite<f64>) -> Fallible<()> {
if *value <= self.engine.borrow().get_min_decibels() { if *value <= self.engine.borrow().get_min_decibels() {
return Err(Error::IndexSize); return Err(Error::IndexSize);
@ -229,12 +229,12 @@ impl AnalyserNodeMethods for AnalyserNode {
Ok(()) Ok(())
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-smoothingtimeconstant /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-smoothingtimeconstant>
fn SmoothingTimeConstant(&self) -> Finite<f64> { fn SmoothingTimeConstant(&self) -> Finite<f64> {
Finite::wrap(self.engine.borrow().get_smoothing_constant()) Finite::wrap(self.engine.borrow().get_smoothing_constant())
} }
/// https://webaudio.github.io/web-audio-api/#dom-analysernode-smoothingtimeconstant /// <https://webaudio.github.io/web-audio-api/#dom-analysernode-smoothingtimeconstant>
fn SetSmoothingTimeConstant(&self, value: Finite<f64>) -> Fallible<()> { fn SetSmoothingTimeConstant(&self, value: Finite<f64>) -> Fallible<()> {
if *value < 0. || *value > 1. { if *value < 0. || *value > 1. {
return Err(Error::IndexSize); return Err(Error::IndexSize);

View file

@ -34,7 +34,7 @@ pub const MAX_SAMPLE_RATE: f32 = 192000.;
/// ///
/// js_channels buffers are (re)attached right before calling GetChannelData /// js_channels buffers are (re)attached right before calling GetChannelData
/// and remain attached until its contents are needed by some other API /// and remain attached until its contents are needed by some other API
/// implementation. Follow https://webaudio.github.io/web-audio-api/#acquire-the-content /// implementation. Follow <https://webaudio.github.io/web-audio-api/#acquire-the-content>
/// to know in which situations js_channels buffers must be detached. /// to know in which situations js_channels buffers must be detached.
/// ///
#[dom_struct] #[dom_struct]
@ -48,13 +48,13 @@ pub struct AudioBuffer {
#[ignore_malloc_size_of = "servo_media"] #[ignore_malloc_size_of = "servo_media"]
#[no_trace] #[no_trace]
shared_channels: DomRefCell<Option<ServoMediaAudioBuffer>>, shared_channels: DomRefCell<Option<ServoMediaAudioBuffer>>,
/// https://webaudio.github.io/web-audio-api/#dom-audiobuffer-samplerate /// <https://webaudio.github.io/web-audio-api/#dom-audiobuffer-samplerate>
sample_rate: f32, sample_rate: f32,
/// https://webaudio.github.io/web-audio-api/#dom-audiobuffer-length /// <https://webaudio.github.io/web-audio-api/#dom-audiobuffer-length>
length: u32, length: u32,
/// https://webaudio.github.io/web-audio-api/#dom-audiobuffer-duration /// <https://webaudio.github.io/web-audio-api/#dom-audiobuffer-duration>
duration: f64, duration: f64,
/// https://webaudio.github.io/web-audio-api/#dom-audiobuffer-numberofchannels /// <https://webaudio.github.io/web-audio-api/#dom-audiobuffer-numberofchannels>
number_of_channels: u32, number_of_channels: u32,
} }

View file

@ -39,9 +39,9 @@ use crate::task_source::TaskSource;
pub struct AudioContext { pub struct AudioContext {
context: BaseAudioContext, context: BaseAudioContext,
latency_hint: AudioContextLatencyCategory, latency_hint: AudioContextLatencyCategory,
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-baselatency /// <https://webaudio.github.io/web-audio-api/#dom-audiocontext-baselatency>
base_latency: f64, base_latency: f64,
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-outputlatency /// <https://webaudio.github.io/web-audio-api/#dom-audiocontext-outputlatency>
output_latency: f64, output_latency: f64,
} }
@ -256,7 +256,7 @@ impl AudioContextMethods for AudioContext {
promise promise
} }
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediaelementsource /// <https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediaelementsource>
fn CreateMediaElementSource( fn CreateMediaElementSource(
&self, &self,
media_element: &HTMLMediaElement, media_element: &HTMLMediaElement,
@ -266,7 +266,7 @@ impl AudioContextMethods for AudioContext {
MediaElementAudioSourceNode::new(window, self, media_element) MediaElementAudioSourceNode::new(window, self, media_element)
} }
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamsource /// <https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamsource>
fn CreateMediaStreamSource( fn CreateMediaStreamSource(
&self, &self,
stream: &MediaStream, stream: &MediaStream,
@ -276,7 +276,7 @@ impl AudioContextMethods for AudioContext {
MediaStreamAudioSourceNode::new(window, self, stream) MediaStreamAudioSourceNode::new(window, self, stream)
} }
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamtracksource /// <https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamtracksource>
fn CreateMediaStreamTrackSource( fn CreateMediaStreamTrackSource(
&self, &self,
track: &MediaStreamTrack, track: &MediaStreamTrack,
@ -286,7 +286,7 @@ impl AudioContextMethods for AudioContext {
MediaStreamTrackAudioSourceNode::new(window, self, track) MediaStreamTrackAudioSourceNode::new(window, self, track)
} }
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamdestination /// <https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamdestination>
fn CreateMediaStreamDestination(&self) -> Fallible<DomRoot<MediaStreamAudioDestinationNode>> { fn CreateMediaStreamDestination(&self) -> Fallible<DomRoot<MediaStreamAudioDestinationNode>> {
let global = self.global(); let global = self.global();
let window = global.as_window(); let window = global.as_window();

View file

@ -86,20 +86,20 @@ pub struct BaseAudioContext {
#[ignore_malloc_size_of = "servo_media"] #[ignore_malloc_size_of = "servo_media"]
#[no_trace] #[no_trace]
audio_context_impl: Arc<Mutex<AudioContext>>, audio_context_impl: Arc<Mutex<AudioContext>>,
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-destination /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-destination>
destination: MutNullableDom<AudioDestinationNode>, destination: MutNullableDom<AudioDestinationNode>,
listener: MutNullableDom<AudioListener>, listener: MutNullableDom<AudioListener>,
/// Resume promises which are soon to be fulfilled by a queued task. /// Resume promises which are soon to be fulfilled by a queued task.
#[ignore_malloc_size_of = "promises are hard"] #[ignore_malloc_size_of = "promises are hard"]
in_flight_resume_promises_queue: DomRefCell<VecDeque<(Box<[Rc<Promise>]>, ErrorResult)>>, in_flight_resume_promises_queue: DomRefCell<VecDeque<(Box<[Rc<Promise>]>, ErrorResult)>>,
/// https://webaudio.github.io/web-audio-api/#pendingresumepromises /// <https://webaudio.github.io/web-audio-api/#pendingresumepromises>
#[ignore_malloc_size_of = "promises are hard"] #[ignore_malloc_size_of = "promises are hard"]
pending_resume_promises: DomRefCell<Vec<Rc<Promise>>>, pending_resume_promises: DomRefCell<Vec<Rc<Promise>>>,
#[ignore_malloc_size_of = "promises are hard"] #[ignore_malloc_size_of = "promises are hard"]
decode_resolvers: DomRefCell<HashMap<String, DecodeResolver>>, decode_resolvers: DomRefCell<HashMap<String, DecodeResolver>>,
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-samplerate /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-samplerate>
sample_rate: f32, sample_rate: f32,
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-state /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-state>
/// Although servo-media already keeps track of the control thread state, /// Although servo-media already keeps track of the control thread state,
/// we keep a state flag here as well. This is so that we can synchronously /// we keep a state flag here as well. This is so that we can synchronously
/// throw when trying to do things on the context when the context has just /// throw when trying to do things on the context when the context has just
@ -268,23 +268,23 @@ impl BaseAudioContext {
} }
impl BaseAudioContextMethods for BaseAudioContext { impl BaseAudioContextMethods for BaseAudioContext {
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-samplerate /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-samplerate>
fn SampleRate(&self) -> Finite<f32> { fn SampleRate(&self) -> Finite<f32> {
Finite::wrap(self.sample_rate) Finite::wrap(self.sample_rate)
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-currenttime /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-currenttime>
fn CurrentTime(&self) -> Finite<f64> { fn CurrentTime(&self) -> Finite<f64> {
let current_time = self.audio_context_impl.lock().unwrap().current_time(); let current_time = self.audio_context_impl.lock().unwrap().current_time();
Finite::wrap(current_time) Finite::wrap(current_time)
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-state /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-state>
fn State(&self) -> AudioContextState { fn State(&self) -> AudioContextState {
self.state.get() self.state.get()
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-resume /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-resume>
fn Resume(&self, comp: InRealm) -> Rc<Promise> { fn Resume(&self, comp: InRealm) -> Rc<Promise> {
// Step 1. // Step 1.
let promise = Promise::new_in_current_realm(comp); let promise = Promise::new_in_current_realm(comp);
@ -315,7 +315,7 @@ impl BaseAudioContextMethods for BaseAudioContext {
promise promise
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-destination /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-destination>
fn Destination(&self) -> DomRoot<AudioDestinationNode> { fn Destination(&self) -> DomRoot<AudioDestinationNode> {
let global = self.global(); let global = self.global();
self.destination.or_init(|| { self.destination.or_init(|| {
@ -327,7 +327,7 @@ impl BaseAudioContextMethods for BaseAudioContext {
}) })
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-listener /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-listener>
fn Listener(&self) -> DomRoot<AudioListener> { fn Listener(&self) -> DomRoot<AudioListener> {
let global = self.global(); let global = self.global();
let window = global.as_window(); let window = global.as_window();
@ -337,7 +337,7 @@ impl BaseAudioContextMethods for BaseAudioContext {
// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-onstatechange // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-onstatechange
event_handler!(statechange, GetOnstatechange, SetOnstatechange); event_handler!(statechange, GetOnstatechange, SetOnstatechange);
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createoscillator /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createoscillator>
fn CreateOscillator(&self) -> Fallible<DomRoot<OscillatorNode>> { fn CreateOscillator(&self) -> Fallible<DomRoot<OscillatorNode>> {
OscillatorNode::new( OscillatorNode::new(
&self.global().as_window(), &self.global().as_window(),
@ -346,22 +346,22 @@ impl BaseAudioContextMethods for BaseAudioContext {
) )
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-creategain /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-creategain>
fn CreateGain(&self) -> Fallible<DomRoot<GainNode>> { fn CreateGain(&self) -> Fallible<DomRoot<GainNode>> {
GainNode::new(&self.global().as_window(), &self, &GainOptions::empty()) GainNode::new(&self.global().as_window(), &self, &GainOptions::empty())
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createpanner /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createpanner>
fn CreatePanner(&self) -> Fallible<DomRoot<PannerNode>> { fn CreatePanner(&self) -> Fallible<DomRoot<PannerNode>> {
PannerNode::new(&self.global().as_window(), &self, &PannerOptions::empty()) PannerNode::new(&self.global().as_window(), &self, &PannerOptions::empty())
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createanalyser /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createanalyser>
fn CreateAnalyser(&self) -> Fallible<DomRoot<AnalyserNode>> { fn CreateAnalyser(&self) -> Fallible<DomRoot<AnalyserNode>> {
AnalyserNode::new(&self.global().as_window(), &self, &AnalyserOptions::empty()) AnalyserNode::new(&self.global().as_window(), &self, &AnalyserOptions::empty())
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbiquadfilter /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbiquadfilter>
fn CreateBiquadFilter(&self) -> Fallible<DomRoot<BiquadFilterNode>> { fn CreateBiquadFilter(&self) -> Fallible<DomRoot<BiquadFilterNode>> {
BiquadFilterNode::new( BiquadFilterNode::new(
&self.global().as_window(), &self.global().as_window(),
@ -370,7 +370,7 @@ impl BaseAudioContextMethods for BaseAudioContext {
) )
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createstereopanner /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createstereopanner>
fn CreateStereoPanner(&self) -> Fallible<DomRoot<StereoPannerNode>> { fn CreateStereoPanner(&self) -> Fallible<DomRoot<StereoPannerNode>> {
StereoPannerNode::new( StereoPannerNode::new(
&self.global().as_window(), &self.global().as_window(),
@ -379,7 +379,7 @@ impl BaseAudioContextMethods for BaseAudioContext {
) )
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createconstantsource /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createconstantsource>
fn CreateConstantSource(&self) -> Fallible<DomRoot<ConstantSourceNode>> { fn CreateConstantSource(&self) -> Fallible<DomRoot<ConstantSourceNode>> {
ConstantSourceNode::new( ConstantSourceNode::new(
&self.global().as_window(), &self.global().as_window(),
@ -388,21 +388,21 @@ impl BaseAudioContextMethods for BaseAudioContext {
) )
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelmerger /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelmerger>
fn CreateChannelMerger(&self, count: u32) -> Fallible<DomRoot<ChannelMergerNode>> { fn CreateChannelMerger(&self, count: u32) -> Fallible<DomRoot<ChannelMergerNode>> {
let mut opts = ChannelMergerOptions::empty(); let mut opts = ChannelMergerOptions::empty();
opts.numberOfInputs = count; opts.numberOfInputs = count;
ChannelMergerNode::new(&self.global().as_window(), &self, &opts) ChannelMergerNode::new(&self.global().as_window(), &self, &opts)
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelsplitter /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelsplitter>
fn CreateChannelSplitter(&self, count: u32) -> Fallible<DomRoot<ChannelSplitterNode>> { fn CreateChannelSplitter(&self, count: u32) -> Fallible<DomRoot<ChannelSplitterNode>> {
let mut opts = ChannelSplitterOptions::empty(); let mut opts = ChannelSplitterOptions::empty();
opts.numberOfOutputs = count; opts.numberOfOutputs = count;
ChannelSplitterNode::new(&self.global().as_window(), &self, &opts) ChannelSplitterNode::new(&self.global().as_window(), &self, &opts)
} }
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbuffer /// <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbuffer>
fn CreateBuffer( fn CreateBuffer(
&self, &self,
number_of_channels: u32, number_of_channels: u32,

View file

@ -224,8 +224,9 @@ where
/// A rooting mechanism for reflectors on the stack. /// A rooting mechanism for reflectors on the stack.
/// LIFO is not required. /// LIFO is not required.
/// ///
/// See also [*Exact Stack Rooting - Storing a GCPointer on the CStack*] /// See also [*Exact Stack Rooting - Storing a GCPointer on the CStack*][cstack].
/// (https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/GC/Exact_Stack_Rooting). ///
/// [cstack]: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/GC/Exact_Stack_Rooting
pub struct RootCollection { pub struct RootCollection {
roots: UnsafeCell<Vec<*const dyn JSTraceable>>, roots: UnsafeCell<Vec<*const dyn JSTraceable>>,
} }
@ -340,7 +341,7 @@ impl<T> Dom<T> {
} }
impl<T: DomObject> Dom<T> { impl<T: DomObject> Dom<T> {
/// Create a Dom<T> from a &T /// Create a `Dom<T>` from a `&T`
#[allow(crown::unrooted_must_root)] #[allow(crown::unrooted_must_root)]
pub fn from_ref(obj: &T) -> Dom<T> { pub fn from_ref(obj: &T) -> Dom<T> {
assert_in_script(); assert_in_script();
@ -758,7 +759,7 @@ where
self.value self.value
} }
/// Transforms a slice of Dom<T> into a slice of LayoutDom<T>. /// Transforms a slice of `Dom<T>` into a slice of `LayoutDom<T>`.
// FIXME(nox): This should probably be done through a ToLayout trait. // FIXME(nox): This should probably be done through a ToLayout trait.
pub unsafe fn to_layout_slice(slice: &'dom [Dom<T>]) -> &'dom [LayoutDom<'dom, T>] { pub unsafe fn to_layout_slice(slice: &'dom [Dom<T>]) -> &'dom [LayoutDom<'dom, T>] {
// This doesn't compile if Dom and LayoutDom don't have the same // This doesn't compile if Dom and LayoutDom don't have the same

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//! Trait representing the concept of [serializable objects] //! Trait representing the concept of [serializable objects]
//! (https://html.spec.whatwg.org/multipage/#serializable-objects). //! (<https://html.spec.whatwg.org/multipage/#serializable-objects>).
use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::reflector::DomObject;
use crate::dom::bindings::structuredclone::StructuredDataHolder; use crate::dom::bindings::structuredclone::StructuredDataHolder;

View file

@ -316,12 +316,12 @@ impl DOMString {
/// A valid date string should be "YYYY-MM-DD" /// A valid date string should be "YYYY-MM-DD"
/// YYYY must be four or more digits, MM and DD both must be two digits /// YYYY must be four or more digits, MM and DD both must be two digits
/// https://html.spec.whatwg.org/multipage/#valid-date-string /// <https://html.spec.whatwg.org/multipage/#valid-date-string>
pub fn is_valid_date_string(&self) -> bool { pub fn is_valid_date_string(&self) -> bool {
self.parse_date_string().is_ok() self.parse_date_string().is_ok()
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-date-string /// <https://html.spec.whatwg.org/multipage/#parse-a-date-string>
pub fn parse_date_string(&self) -> Result<(i32, u32, u32), ()> { pub fn parse_date_string(&self) -> Result<(i32, u32, u32), ()> {
let value = &self.0; let value = &self.0;
// Step 1, 2, 3 // Step 1, 2, 3
@ -336,7 +336,7 @@ impl DOMString {
Ok((year_int, month_int, day_int)) Ok((year_int, month_int, day_int))
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-time-string /// <https://html.spec.whatwg.org/multipage/#parse-a-time-string>
pub fn parse_time_string(&self) -> Result<(u32, u32, f64), ()> { pub fn parse_time_string(&self) -> Result<(u32, u32, f64), ()> {
let value = &self.0; let value = &self.0;
// Step 1, 2, 3 // Step 1, 2, 3
@ -353,12 +353,12 @@ impl DOMString {
/// A valid month string should be "YYYY-MM" /// A valid month string should be "YYYY-MM"
/// YYYY must be four or more digits, MM both must be two digits /// YYYY must be four or more digits, MM both must be two digits
/// https://html.spec.whatwg.org/multipage/#valid-month-string /// <https://html.spec.whatwg.org/multipage/#valid-month-string>
pub fn is_valid_month_string(&self) -> bool { pub fn is_valid_month_string(&self) -> bool {
self.parse_month_string().is_ok() self.parse_month_string().is_ok()
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-month-string /// <https://html.spec.whatwg.org/multipage/#parse-a-month-string>
pub fn parse_month_string(&self) -> Result<(i32, u32), ()> { pub fn parse_month_string(&self) -> Result<(i32, u32), ()> {
let value = &self; let value = &self;
// Step 1, 2, 3 // Step 1, 2, 3
@ -374,12 +374,12 @@ impl DOMString {
/// A valid week string should be like {YYYY}-W{WW}, such as "2017-W52" /// A valid week string should be like {YYYY}-W{WW}, such as "2017-W52"
/// YYYY must be four or more digits, WW both must be two digits /// YYYY must be four or more digits, WW both must be two digits
/// https://html.spec.whatwg.org/multipage/#valid-week-string /// <https://html.spec.whatwg.org/multipage/#valid-week-string>
pub fn is_valid_week_string(&self) -> bool { pub fn is_valid_week_string(&self) -> bool {
self.parse_week_string().is_ok() self.parse_week_string().is_ok()
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-week-string /// <https://html.spec.whatwg.org/multipage/#parse-a-week-string>
pub fn parse_week_string(&self) -> Result<(i32, u32), ()> { pub fn parse_week_string(&self) -> Result<(i32, u32), ()> {
let value = &self.0; let value = &self.0;
// Step 1, 2, 3 // Step 1, 2, 3
@ -422,7 +422,7 @@ impl DOMString {
Ok((year_int, week_int)) Ok((year_int, week_int))
} }
/// https://html.spec.whatwg.org/multipage/#valid-floating-point-number /// <https://html.spec.whatwg.org/multipage/#valid-floating-point-number>
pub fn is_valid_floating_point_number_string(&self) -> bool { pub fn is_valid_floating_point_number_string(&self) -> bool {
lazy_static! { lazy_static! {
static ref RE: Regex = static ref RE: Regex =
@ -431,7 +431,7 @@ impl DOMString {
RE.is_match(&self.0) && self.parse_floating_point_number().is_ok() RE.is_match(&self.0) && self.parse_floating_point_number().is_ok()
} }
/// https://html.spec.whatwg.org/multipage/#rules-for-parsing-floating-point-number-values /// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-floating-point-number-values>
pub fn parse_floating_point_number(&self) -> Result<f64, ()> { pub fn parse_floating_point_number(&self) -> Result<f64, ()> {
// Steps 15-16 are telling us things about IEEE rounding modes // Steps 15-16 are telling us things about IEEE rounding modes
// for floating-point significands; this code assumes the Rust // for floating-point significands; this code assumes the Rust
@ -456,7 +456,7 @@ impl DOMString {
} }
} }
/// https://html.spec.whatwg.org/multipage/#best-representation-of-the-number-as-a-floating-point-number /// <https://html.spec.whatwg.org/multipage/#best-representation-of-the-number-as-a-floating-point-number>
pub fn set_best_representation_of_the_floating_point_number(&mut self) { pub fn set_best_representation_of_the_floating_point_number(&mut self) {
if let Ok(val) = self.parse_floating_point_number() { if let Ok(val) = self.parse_floating_point_number() {
self.0 = val.to_string(); self.0 = val.to_string();
@ -465,7 +465,7 @@ impl DOMString {
/// A valid normalized local date and time string should be "{date}T{time}" /// A valid normalized local date and time string should be "{date}T{time}"
/// where date and time are both valid, and the time string must be as short as possible /// where date and time are both valid, and the time string must be as short as possible
/// https://html.spec.whatwg.org/multipage/#valid-normalised-local-date-and-time-string /// <https://html.spec.whatwg.org/multipage/#valid-normalised-local-date-and-time-string>
pub fn convert_valid_normalized_local_date_and_time_string(&mut self) -> Result<(), ()> { pub fn convert_valid_normalized_local_date_and_time_string(&mut self) -> Result<(), ()> {
let ((year, month, day), (hour, minute, second)) = let ((year, month, day), (hour, minute, second)) =
self.parse_local_date_and_time_string()?; self.parse_local_date_and_time_string()?;
@ -491,7 +491,7 @@ impl DOMString {
Ok(()) Ok(())
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-local-date-and-time-string /// <https://html.spec.whatwg.org/multipage/#parse-a-local-date-and-time-string>
pub fn parse_local_date_and_time_string( pub fn parse_local_date_and_time_string(
&self, &self,
) -> Result<((i32, u32, u32), (u32, u32, f64)), ()> { ) -> Result<((i32, u32, u32), (u32, u32, f64)), ()> {
@ -520,7 +520,7 @@ impl DOMString {
Ok((date_tuple, time_tuple)) Ok((date_tuple, time_tuple))
} }
/// https://html.spec.whatwg.org/multipage/#valid-e-mail-address /// <https://html.spec.whatwg.org/multipage/#valid-e-mail-address>
pub fn is_valid_email_address_string(&self) -> bool { pub fn is_valid_email_address_string(&self) -> bool {
lazy_static! { lazy_static! {
static ref RE: Regex = Regex::new(concat!( static ref RE: Regex = Regex::new(concat!(
@ -532,7 +532,7 @@ impl DOMString {
RE.is_match(&self.0) RE.is_match(&self.0)
} }
/// https://html.spec.whatwg.org/multipage/#valid-simple-colour /// <https://html.spec.whatwg.org/multipage/#valid-simple-colour>
pub fn is_valid_simple_color_string(&self) -> bool { pub fn is_valid_simple_color_string(&self) -> bool {
let mut chars = self.0.chars(); let mut chars = self.0.chars();
if self.0.len() == 7 && chars.next() == Some('#') { if self.0.len() == 7 && chars.next() == Some('#') {
@ -669,7 +669,7 @@ impl Extend<char> for DOMString {
} }
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-month-component /// <https://html.spec.whatwg.org/multipage/#parse-a-month-component>
fn parse_month_component(value: &str) -> Result<(i32, u32), ()> { fn parse_month_component(value: &str) -> Result<(i32, u32), ()> {
// Step 3 // Step 3
let mut iterator = value.split('-'); let mut iterator = value.split('-');
@ -692,7 +692,7 @@ fn parse_month_component(value: &str) -> Result<(i32, u32), ()> {
Ok((year_int, month_int)) Ok((year_int, month_int))
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-date-component /// <https://html.spec.whatwg.org/multipage/#parse-a-date-component>
fn parse_date_component(value: &str) -> Result<(i32, u32, u32), ()> { fn parse_date_component(value: &str) -> Result<(i32, u32, u32), ()> {
// Step 1 // Step 1
let (year_int, month_int) = parse_month_component(value)?; let (year_int, month_int) = parse_month_component(value)?;
@ -714,7 +714,7 @@ fn parse_date_component(value: &str) -> Result<(i32, u32, u32), ()> {
Ok((year_int, month_int, day_int)) Ok((year_int, month_int, day_int))
} }
/// https://html.spec.whatwg.org/multipage/#parse-a-time-component /// <https://html.spec.whatwg.org/multipage/#parse-a-time-component>
fn parse_time_component(value: &str) -> Result<(u32, u32, f64), ()> { fn parse_time_component(value: &str) -> Result<(u32, u32, f64), ()> {
// Step 1 // Step 1
let mut iterator = value.split(':'); let mut iterator = value.split(':');
@ -781,7 +781,7 @@ fn max_day_in_month(year_num: i32, month_num: u32) -> Result<u32, ()> {
} }
} }
/// https://html.spec.whatwg.org/multipage/#week-number-of-the-last-day /// <https://html.spec.whatwg.org/multipage/#week-number-of-the-last-day>
fn max_week_in_year(year: i32) -> u32 { fn max_week_in_year(year: i32) -> u32 {
Utc.with_ymd_and_hms(year as i32, 1, 1, 0, 0, 0) Utc.with_ymd_and_hms(year as i32, 1, 1, 0, 0, 0)
.earliest() .earliest()

View file

@ -2,8 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! This module implements structured cloning, as defined by [HTML] //! This module implements structured cloning, as defined by [HTML](https://html.spec.whatwg.org/multipage/#safe-passing-of-structured-data).
//! (https://html.spec.whatwg.org/multipage/#safe-passing-of-structured-data).
use std::collections::HashMap; use std::collections::HashMap;
use std::os::raw; use std::os::raw;
@ -253,7 +252,7 @@ static STRUCTURED_CLONE_CALLBACKS: JSStructuredCloneCallbacks = JSStructuredClon
}; };
/// A data holder for results from, and inputs to, structured-data read/write operations. /// A data holder for results from, and inputs to, structured-data read/write operations.
/// https://html.spec.whatwg.org/multipage/#safe-passing-of-structured-data /// <https://html.spec.whatwg.org/multipage/#safe-passing-of-structured-data>
pub enum StructuredDataHolder { pub enum StructuredDataHolder {
Read { Read {
/// A map of deserialized blobs, stored temporarily here to keep them rooted. /// A map of deserialized blobs, stored temporarily here to keep them rooted.

View file

@ -579,7 +579,7 @@ impl<'a, T: 'static + JSTraceable> RootedVec<'a, T> {
} }
impl<'a, T: 'static + JSTraceable + DomObject> RootedVec<'a, Dom<T>> { impl<'a, T: 'static + JSTraceable + DomObject> RootedVec<'a, Dom<T>> {
/// Create a vector of items of type Dom<T> that is rooted for /// Create a vector of items of type `Dom<T>` that is rooted for
/// the lifetime of this struct /// the lifetime of this struct
pub fn from_iter<I>(root: &'a mut RootableVec<Dom<T>>, iter: I) -> Self pub fn from_iter<I>(root: &'a mut RootableVec<Dom<T>>, iter: I) -> Self
where where

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//! Trait representing the concept of [transferable objects] //! Trait representing the concept of [transferable objects]
//! (https://html.spec.whatwg.org/multipage/#transferable-objects). //! (<https://html.spec.whatwg.org/multipage/#transferable-objects>).
use js::jsapi::MutableHandleObject; use js::jsapi::MutableHandleObject;

View file

@ -9,7 +9,7 @@ use html5ever::{namespace_url, ns, LocalName, Namespace, Prefix};
use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::error::{Error, ErrorResult, Fallible};
use crate::dom::bindings::str::DOMString; use crate::dom::bindings::str::DOMString;
/// Validate a qualified name. See https://dom.spec.whatwg.org/#validate for details. /// Validate a qualified name. See <https://dom.spec.whatwg.org/#validate> for details.
pub fn validate_qualified_name(qualified_name: &str) -> ErrorResult { pub fn validate_qualified_name(qualified_name: &str) -> ErrorResult {
// Step 2. // Step 2.
match xml_name_type(qualified_name) { match xml_name_type(qualified_name) {
@ -20,7 +20,7 @@ pub fn validate_qualified_name(qualified_name: &str) -> ErrorResult {
} }
/// Validate a namespace and qualified name and extract their parts. /// Validate a namespace and qualified name and extract their parts.
/// See https://dom.spec.whatwg.org/#validate-and-extract for details. /// See <https://dom.spec.whatwg.org/#validate-and-extract> for details.
pub fn validate_and_extract( pub fn validate_and_extract(
namespace: Option<DOMString>, namespace: Option<DOMString>,
qualified_name: &str, qualified_name: &str,
@ -86,7 +86,7 @@ pub enum XMLName {
InvalidXMLName, InvalidXMLName,
} }
/// Check if an element name is valid. See http://www.w3.org/TR/xml/#NT-Name /// Check if an element name is valid. See <http://www.w3.org/TR/xml/#NT-Name>
/// for details. /// for details.
pub fn xml_name_type(name: &str) -> XMLName { pub fn xml_name_type(name: &str) -> XMLName {
fn is_valid_start(c: char) -> bool { fn is_valid_start(c: char) -> bool {

View file

@ -307,7 +307,7 @@ impl BlobMethods for Blob {
/// <https://w3c.github.io/FileAPI/#dfn-type> /// <https://w3c.github.io/FileAPI/#dfn-type>
/// XXX: We will relax the restriction here, /// XXX: We will relax the restriction here,
/// since the spec has some problem over this part. /// since the spec has some problem over this part.
/// see https://github.com/w3c/FileAPI/issues/43 /// see <https://github.com/w3c/FileAPI/issues/43>
pub fn normalize_type_string(s: &str) -> String { pub fn normalize_type_string(s: &str) -> String {
if is_ascii_printable(s) { if is_ascii_printable(s) {
let s_lower = s.to_ascii_lowercase(); let s_lower = s.to_ascii_lowercase();
@ -322,6 +322,6 @@ pub fn normalize_type_string(s: &str) -> String {
fn is_ascii_printable(string: &str) -> bool { fn is_ascii_printable(string: &str) -> bool {
// Step 5.1 in Sec 5.1 of File API spec // Step 5.1 in Sec 5.1 of File API spec
// https://w3c.github.io/FileAPI/#constructorBlob // <https://w3c.github.io/FileAPI/#constructorBlob>
string.chars().all(|c| c >= '\x20' && c <= '\x7E') string.chars().all(|c| c >= '\x20' && c <= '\x7E')
} }

View file

@ -464,7 +464,7 @@ impl CustomElementRegistryMethods for CustomElementRegistry {
// Step 6 // Step 6
promise promise
} }
/// https://html.spec.whatwg.org/multipage/#dom-customelementregistry-upgrade /// <https://html.spec.whatwg.org/multipage/#dom-customelementregistry-upgrade>
fn Upgrade(&self, node: &Node) { fn Upgrade(&self, node: &Node) {
// Spec says to make a list first and then iterate the list, but // Spec says to make a list first and then iterate the list, but
// try-to-upgrade only queues upgrade reactions and doesn't itself // try-to-upgrade only queues upgrade reactions and doesn't itself
@ -540,7 +540,7 @@ impl CustomElementDefinition {
self.name == self.local_name self.name == self.local_name
} }
/// https://dom.spec.whatwg.org/#concept-create-element Step 6.1 /// <https://dom.spec.whatwg.org/#concept-create-element> Step 6.1
#[allow(unsafe_code)] #[allow(unsafe_code)]
pub fn create_element( pub fn create_element(
&self, &self,

View file

@ -649,7 +649,7 @@ unsafe extern "C" fn interrupt_callback(cx: *mut JSContext) -> bool {
} }
impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope { impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope {
/// https://html.spec.whatwg.org/multipage/#dom-dedicatedworkerglobalscope-postmessage /// <https://html.spec.whatwg.org/multipage/#dom-dedicatedworkerglobalscope-postmessage>
fn PostMessage( fn PostMessage(
&self, &self,
cx: SafeJSContext, cx: SafeJSContext,
@ -659,7 +659,7 @@ impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope {
self.post_message_impl(cx, message, transfer) self.post_message_impl(cx, message, transfer)
} }
/// https://html.spec.whatwg.org/multipage/#dom-dedicatedworkerglobalscope-postmessage /// <https://html.spec.whatwg.org/multipage/#dom-dedicatedworkerglobalscope-postmessage>
fn PostMessage_( fn PostMessage_(
&self, &self,
cx: SafeJSContext, cx: SafeJSContext,

View file

@ -135,7 +135,7 @@ impl DissimilarOriginWindowMethods for DissimilarOriginWindow {
false false
} }
/// https://html.spec.whatwg.org/multipage/#dom-window-postmessage /// <https://html.spec.whatwg.org/multipage/#dom-window-postmessage>
fn PostMessage( fn PostMessage(
&self, &self,
cx: JSContext, cx: JSContext,
@ -146,7 +146,7 @@ impl DissimilarOriginWindowMethods for DissimilarOriginWindow {
self.post_message_impl(&target_origin, cx, message, transfer) self.post_message_impl(&target_origin, cx, message, transfer)
} }
/// https://html.spec.whatwg.org/multipage/#dom-window-postmessage-options /// <https://html.spec.whatwg.org/multipage/#dom-window-postmessage-options>
fn PostMessage_( fn PostMessage_(
&self, &self,
cx: JSContext, cx: JSContext,
@ -195,7 +195,7 @@ impl DissimilarOriginWindowMethods for DissimilarOriginWindow {
} }
impl DissimilarOriginWindow { impl DissimilarOriginWindow {
/// https://html.spec.whatwg.org/multipage/#window-post-message-steps /// <https://html.spec.whatwg.org/multipage/#window-post-message-steps>
fn post_message_impl( fn post_message_impl(
&self, &self,
target_origin: &USVString, target_origin: &USVString,
@ -209,7 +209,7 @@ impl DissimilarOriginWindow {
self.post_message(target_origin, data) self.post_message(target_origin, data)
} }
/// https://html.spec.whatwg.org/multipage/#window-post-message-steps /// <https://html.spec.whatwg.org/multipage/#window-post-message-steps>
pub fn post_message( pub fn post_message(
&self, &self,
target_origin: &USVString, target_origin: &USVString,

View file

@ -289,7 +289,7 @@ pub struct Document {
pending_parsing_blocking_script: DomRefCell<Option<PendingScript>>, pending_parsing_blocking_script: DomRefCell<Option<PendingScript>>,
/// Number of stylesheets that block executing the next parser-inserted script /// Number of stylesheets that block executing the next parser-inserted script
script_blocking_stylesheets_count: Cell<u32>, script_blocking_stylesheets_count: Cell<u32>,
/// https://html.spec.whatwg.org/multipage/#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing /// <https://html.spec.whatwg.org/multipage/#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing>
deferred_scripts: PendingInOrderScriptVec, deferred_scripts: PendingInOrderScriptVec,
/// <https://html.spec.whatwg.org/multipage/#list-of-scripts-that-will-execute-in-order-as-soon-as-possible> /// <https://html.spec.whatwg.org/multipage/#list-of-scripts-that-will-execute-in-order-as-soon-as-possible>
asap_in_order_scripts_list: PendingInOrderScriptVec, asap_in_order_scripts_list: PendingInOrderScriptVec,
@ -346,7 +346,7 @@ pub struct Document {
/// The document's origin. /// The document's origin.
#[no_trace] #[no_trace]
origin: MutableOrigin, origin: MutableOrigin,
/// https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-states /// <https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-states>
#[no_trace] #[no_trace]
referrer_policy: Cell<Option<ReferrerPolicy>>, referrer_policy: Cell<Option<ReferrerPolicy>>,
/// <https://html.spec.whatwg.org/multipage/#dom-document-referrer> /// <https://html.spec.whatwg.org/multipage/#dom-document-referrer>
@ -370,7 +370,7 @@ pub struct Document {
/// This is sent to the layout thread every time a reflow is done; /// This is sent to the layout thread every time a reflow is done;
/// layout uses this to determine if the gains from parallel layout will be worth the overhead. /// layout uses this to determine if the gains from parallel layout will be worth the overhead.
/// ///
/// See also: https://github.com/servo/servo/issues/10110 /// See also: <https://github.com/servo/servo/issues/10110>
dom_count: Cell<u32>, dom_count: Cell<u32>,
/// Entry node for fullscreen. /// Entry node for fullscreen.
fullscreen_element: MutNullableDom<Element>, fullscreen_element: MutNullableDom<Element>,
@ -378,7 +378,7 @@ pub struct Document {
/// their 'form' content attribute. Used to reset form controls /// their 'form' content attribute. Used to reset form controls
/// whenever any element with the same ID as the form attribute /// whenever any element with the same ID as the form attribute
/// is inserted or removed from the document. /// is inserted or removed from the document.
/// See https://html.spec.whatwg.org/multipage/#form-owner /// See <https://html.spec.whatwg.org/multipage/#form-owner>
form_id_listener_map: DomRefCell<HashMapTracedValues<Atom, HashSet<Dom<Element>>>>, form_id_listener_map: DomRefCell<HashMapTracedValues<Atom, HashSet<Dom<Element>>>>,
#[no_trace] #[no_trace]
interactive_time: DomRefCell<InteractiveMetrics>, interactive_time: DomRefCell<InteractiveMetrics>,
@ -386,9 +386,9 @@ pub struct Document {
tti_window: DomRefCell<InteractiveWindow>, tti_window: DomRefCell<InteractiveWindow>,
/// RAII canceller for Fetch /// RAII canceller for Fetch
canceller: FetchCanceller, canceller: FetchCanceller,
/// https://html.spec.whatwg.org/multipage/#throw-on-dynamic-markup-insertion-counter /// <https://html.spec.whatwg.org/multipage/#throw-on-dynamic-markup-insertion-counter>
throw_on_dynamic_markup_insertion_counter: Cell<u64>, throw_on_dynamic_markup_insertion_counter: Cell<u64>,
/// https://html.spec.whatwg.org/multipage/#page-showing /// <https://html.spec.whatwg.org/multipage/#page-showing>
page_showing: Cell<bool>, page_showing: Cell<bool>,
/// Whether the document is salvageable. /// Whether the document is salvageable.
salvageable: Cell<bool>, salvageable: Cell<bool>,
@ -405,7 +405,7 @@ pub struct Document {
/// List of tasks to execute as soon as last script/layout blocker is removed. /// List of tasks to execute as soon as last script/layout blocker is removed.
#[ignore_malloc_size_of = "Measuring trait objects is hard"] #[ignore_malloc_size_of = "Measuring trait objects is hard"]
delayed_tasks: DomRefCell<Vec<Box<dyn TaskBox>>>, delayed_tasks: DomRefCell<Vec<Box<dyn TaskBox>>>,
/// https://html.spec.whatwg.org/multipage/#completely-loaded /// <https://html.spec.whatwg.org/multipage/#completely-loaded>
completely_loaded: Cell<bool>, completely_loaded: Cell<bool>,
/// Set of shadow roots connected to the document tree. /// Set of shadow roots connected to the document tree.
shadow_roots: DomRefCell<HashSet<Dom<ShadowRoot>>>, shadow_roots: DomRefCell<HashSet<Dom<ShadowRoot>>>,
@ -422,14 +422,14 @@ pub struct Document {
DomRefCell<HashMapTracedValues<WebGLContextId, Dom<WebGLRenderingContext>>>, DomRefCell<HashMapTracedValues<WebGLContextId, Dom<WebGLRenderingContext>>>,
/// List of all WebGPU context IDs that need flushing. /// List of all WebGPU context IDs that need flushing.
dirty_webgpu_contexts: DomRefCell<HashMap<WebGPUContextId, Dom<GPUCanvasContext>>>, dirty_webgpu_contexts: DomRefCell<HashMap<WebGPUContextId, Dom<GPUCanvasContext>>>,
/// https://html.spec.whatwg.org/multipage/#concept-document-csp-list /// <https://html.spec.whatwg.org/multipage/#concept-document-csp-list>
#[ignore_malloc_size_of = "Defined in rust-content-security-policy"] #[ignore_malloc_size_of = "Defined in rust-content-security-policy"]
#[no_trace] #[no_trace]
csp_list: DomRefCell<Option<CspList>>, csp_list: DomRefCell<Option<CspList>>,
/// https://w3c.github.io/slection-api/#dfn-selection /// <https://w3c.github.io/slection-api/#dfn-selection>
selection: MutNullableDom<Selection>, selection: MutNullableDom<Selection>,
/// A timeline for animations which is used for synchronizing animations. /// A timeline for animations which is used for synchronizing animations.
/// https://drafts.csswg.org/web-animations/#timeline /// <https://drafts.csswg.org/web-animations/#timeline>
animation_timeline: DomRefCell<AnimationTimeline>, animation_timeline: DomRefCell<AnimationTimeline>,
/// Animations for this Document /// Animations for this Document
animations: DomRefCell<Animations>, animations: DomRefCell<Animations>,
@ -2426,7 +2426,7 @@ impl Document {
self.pending_parsing_blocking_script.borrow().is_some() self.pending_parsing_blocking_script.borrow().is_some()
} }
/// https://html.spec.whatwg.org/multipage/#prepare-a-script step 22.d. /// <https://html.spec.whatwg.org/multipage/#prepare-a-script> step 22.d.
pub fn pending_parsing_blocking_script_loaded( pub fn pending_parsing_blocking_script_loaded(
&self, &self,
element: &HTMLScriptElement, element: &HTMLScriptElement,
@ -2465,8 +2465,8 @@ impl Document {
.push(Dom::from_ref(script)); .push(Dom::from_ref(script));
} }
/// https://html.spec.whatwg.org/multipage/#the-end step 5. /// <https://html.spec.whatwg.org/multipage/#the-end> step 5.
/// https://html.spec.whatwg.org/multipage/#prepare-a-script step 22.d. /// <https://html.spec.whatwg.org/multipage/#prepare-a-script> step 22.d.
pub fn asap_script_loaded(&self, element: &HTMLScriptElement, result: ScriptResult) { pub fn asap_script_loaded(&self, element: &HTMLScriptElement, result: ScriptResult) {
{ {
let mut scripts = self.asap_scripts_set.borrow_mut(); let mut scripts = self.asap_scripts_set.borrow_mut();
@ -2484,8 +2484,8 @@ impl Document {
self.asap_in_order_scripts_list.push(script); self.asap_in_order_scripts_list.push(script);
} }
/// https://html.spec.whatwg.org/multipage/#the-end step 5. /// <https://html.spec.whatwg.org/multipage/#the-end> step 5.
/// https://html.spec.whatwg.org/multipage/#prepare-a-script step 22.c. /// <https://html.spec.whatwg.org/multipage/#prepare-a-script> step> 22.c.
pub fn asap_in_order_script_loaded(&self, element: &HTMLScriptElement, result: ScriptResult) { pub fn asap_in_order_script_loaded(&self, element: &HTMLScriptElement, result: ScriptResult) {
self.asap_in_order_scripts_list.loaded(element, result); self.asap_in_order_scripts_list.loaded(element, result);
while let Some((element, result)) = self while let Some((element, result)) = self
@ -2501,14 +2501,14 @@ impl Document {
self.deferred_scripts.push(script); self.deferred_scripts.push(script);
} }
/// https://html.spec.whatwg.org/multipage/#the-end step 3. /// <https://html.spec.whatwg.org/multipage/#the-end> step 3.
/// https://html.spec.whatwg.org/multipage/#prepare-a-script step 22.d. /// <https://html.spec.whatwg.org/multipage/#prepare-a-script> step 22.d.
pub fn deferred_script_loaded(&self, element: &HTMLScriptElement, result: ScriptResult) { pub fn deferred_script_loaded(&self, element: &HTMLScriptElement, result: ScriptResult) {
self.deferred_scripts.loaded(element, result); self.deferred_scripts.loaded(element, result);
self.process_deferred_scripts(); self.process_deferred_scripts();
} }
/// https://html.spec.whatwg.org/multipage/#the-end step 3. /// <https://html.spec.whatwg.org/multipage/#the-end> step 3.
fn process_deferred_scripts(&self) { fn process_deferred_scripts(&self) {
if self.ready_state.get() != DocumentReadyState::Interactive { if self.ready_state.get() != DocumentReadyState::Interactive {
return; return;
@ -3207,7 +3207,7 @@ impl Document {
ref_filter_map(self.csp_list.borrow(), Option::as_ref) ref_filter_map(self.csp_list.borrow(), Option::as_ref)
} }
/// https://www.w3.org/TR/CSP/#should-block-inline /// <https://www.w3.org/TR/CSP/#should-block-inline>
pub fn should_elements_inline_type_behavior_be_blocked( pub fn should_elements_inline_type_behavior_be_blocked(
&self, &self,
el: &Element, el: &Element,

View file

@ -491,7 +491,7 @@ impl Element {
self.shadow_root().is_some() self.shadow_root().is_some()
} }
/// https://dom.spec.whatwg.org/#dom-element-attachshadow /// <https://dom.spec.whatwg.org/#dom-element-attachshadow>
/// XXX This is not exposed to web content yet. It is meant to be used /// XXX This is not exposed to web content yet. It is meant to be used
/// for UA widgets only. /// for UA widgets only.
pub fn attach_shadow(&self, is_ua_widget: IsUserAgentWidget) -> Fallible<DomRoot<ShadowRoot>> { pub fn attach_shadow(&self, is_ua_widget: IsUserAgentWidget) -> Fallible<DomRoot<ShadowRoot>> {

View file

@ -29,16 +29,16 @@ use crate::script_runtime::JSContext;
#[dom_struct] #[dom_struct]
#[allow(non_snake_case)] #[allow(non_snake_case)]
pub struct ExtendableMessageEvent { pub struct ExtendableMessageEvent {
/// https://w3c.github.io/ServiceWorker/#extendableevent /// <https://w3c.github.io/ServiceWorker/#extendableevent>
event: ExtendableEvent, event: ExtendableEvent,
/// https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-data /// <https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-data>
#[ignore_malloc_size_of = "mozjs"] #[ignore_malloc_size_of = "mozjs"]
data: Heap<JSVal>, data: Heap<JSVal>,
/// <https://w3c.github.io/ServiceWorker/#extendablemessage-event-origin> /// <https://w3c.github.io/ServiceWorker/#extendablemessage-event-origin>
origin: DOMString, origin: DOMString,
/// https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-lasteventid /// <https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-lasteventid>
lastEventId: DOMString, lastEventId: DOMString,
/// https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-ports /// <https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-ports>
ports: Vec<Dom<MessagePort>>, ports: Vec<Dom<MessagePort>>,
#[ignore_malloc_size_of = "mozjs"] #[ignore_malloc_size_of = "mozjs"]
frozen_ports: DomRefCell<Option<Heap<JSVal>>>, frozen_ports: DomRefCell<Option<Heap<JSVal>>>,
@ -193,7 +193,7 @@ impl ExtendableMessageEventMethods for ExtendableMessageEvent {
self.event.IsTrusted() self.event.IsTrusted()
} }
/// https://w3c.github.io/ServiceWorker/#extendablemessage-event-ports /// <https://w3c.github.io/ServiceWorker/#extendablemessage-event-ports>
fn Ports(&self, cx: JSContext) -> JSVal { fn Ports(&self, cx: JSContext) -> JSVal {
if let Some(ports) = &*self.frozen_ports.borrow() { if let Some(ports) = &*self.frozen_ports.borrow() {
return ports.get(); return ports.get();

View file

@ -184,7 +184,7 @@ impl From<FakeXRRegionType> for EntityType {
} }
impl FakeXRDeviceMethods for FakeXRDevice { impl FakeXRDeviceMethods for FakeXRDevice {
/// https://github.com/immersive-web/webxr-test-api/blob/master/explainer.md /// <https://github.com/immersive-web/webxr-test-api/blob/master/explainer.md>
fn SetViews(&self, views: Vec<FakeXRViewInit>) -> Fallible<()> { fn SetViews(&self, views: Vec<FakeXRViewInit>) -> Fallible<()> {
let _ = self let _ = self
.sender .sender
@ -192,7 +192,7 @@ impl FakeXRDeviceMethods for FakeXRDevice {
Ok(()) Ok(())
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-setviewerorigin /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-setviewerorigin>
fn SetViewerOrigin( fn SetViewerOrigin(
&self, &self,
origin: &FakeXRRigidTransformInit, origin: &FakeXRRigidTransformInit,
@ -204,17 +204,17 @@ impl FakeXRDeviceMethods for FakeXRDevice {
Ok(()) Ok(())
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-clearviewerorigin /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-clearviewerorigin>
fn ClearViewerOrigin(&self) { fn ClearViewerOrigin(&self) {
let _ = self.sender.send(MockDeviceMsg::SetViewerOrigin(None)); let _ = self.sender.send(MockDeviceMsg::SetViewerOrigin(None));
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-clearfloororigin /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-clearfloororigin>
fn ClearFloorOrigin(&self) { fn ClearFloorOrigin(&self) {
let _ = self.sender.send(MockDeviceMsg::SetFloorOrigin(None)); let _ = self.sender.send(MockDeviceMsg::SetFloorOrigin(None));
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-setfloororigin /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-setfloororigin>
fn SetFloorOrigin(&self, origin: &FakeXRRigidTransformInit) -> Fallible<()> { fn SetFloorOrigin(&self, origin: &FakeXRRigidTransformInit) -> Fallible<()> {
let _ = self let _ = self
.sender .sender
@ -222,18 +222,18 @@ impl FakeXRDeviceMethods for FakeXRDevice {
Ok(()) Ok(())
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-clearworld /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-clearworld>
fn ClearWorld(&self) { fn ClearWorld(&self) {
let _ = self.sender.send(MockDeviceMsg::ClearWorld); let _ = self.sender.send(MockDeviceMsg::ClearWorld);
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-setworld /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-setworld>
fn SetWorld(&self, world: &FakeXRWorldInit) -> Fallible<()> { fn SetWorld(&self, world: &FakeXRWorldInit) -> Fallible<()> {
let _ = self.sender.send(MockDeviceMsg::SetWorld(get_world(world)?)); let _ = self.sender.send(MockDeviceMsg::SetWorld(get_world(world)?));
Ok(()) Ok(())
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-simulatevisibilitychange /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-simulatevisibilitychange>
fn SimulateVisibilityChange(&self, v: XRVisibilityState) { fn SimulateVisibilityChange(&self, v: XRVisibilityState) {
let v = match v { let v = match v {
XRVisibilityState::Visible => Visibility::Visible, XRVisibilityState::Visible => Visibility::Visible,
@ -243,7 +243,7 @@ impl FakeXRDeviceMethods for FakeXRDevice {
let _ = self.sender.send(MockDeviceMsg::VisibilityChange(v)); let _ = self.sender.send(MockDeviceMsg::VisibilityChange(v));
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-simulateinputsourceconnection /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-simulateinputsourceconnection>
fn SimulateInputSourceConnection( fn SimulateInputSourceConnection(
&self, &self,
init: &FakeXRInputSourceInit, init: &FakeXRInputSourceInit,
@ -289,7 +289,7 @@ impl FakeXRDeviceMethods for FakeXRDevice {
Ok(controller) Ok(controller)
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-disconnect /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-disconnect>
fn Disconnect(&self) -> Rc<Promise> { fn Disconnect(&self) -> Rc<Promise> {
let global = self.global(); let global = self.global();
let p = Promise::new(&global); let p = Promise::new(&global);

View file

@ -59,34 +59,34 @@ impl FakeXRInputController {
} }
impl FakeXRInputControllerMethods for FakeXRInputController { impl FakeXRInputControllerMethods for FakeXRInputController {
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setpointerorigin /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setpointerorigin>
fn SetPointerOrigin(&self, origin: &FakeXRRigidTransformInit, _emulated: bool) -> Fallible<()> { fn SetPointerOrigin(&self, origin: &FakeXRRigidTransformInit, _emulated: bool) -> Fallible<()> {
self.send_message(MockInputMsg::SetPointerOrigin(Some(get_origin(origin)?))); self.send_message(MockInputMsg::SetPointerOrigin(Some(get_origin(origin)?)));
Ok(()) Ok(())
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setgriporigin /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setgriporigin>
fn SetGripOrigin(&self, origin: &FakeXRRigidTransformInit, _emulated: bool) -> Fallible<()> { fn SetGripOrigin(&self, origin: &FakeXRRigidTransformInit, _emulated: bool) -> Fallible<()> {
self.send_message(MockInputMsg::SetGripOrigin(Some(get_origin(origin)?))); self.send_message(MockInputMsg::SetGripOrigin(Some(get_origin(origin)?)));
Ok(()) Ok(())
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-cleargriporigin /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-cleargriporigin>
fn ClearGripOrigin(&self) { fn ClearGripOrigin(&self) {
self.send_message(MockInputMsg::SetGripOrigin(None)) self.send_message(MockInputMsg::SetGripOrigin(None))
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-disconnect /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-disconnect>
fn Disconnect(&self) { fn Disconnect(&self) {
self.send_message(MockInputMsg::Disconnect) self.send_message(MockInputMsg::Disconnect)
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-reconnect /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-reconnect>
fn Reconnect(&self) { fn Reconnect(&self) {
self.send_message(MockInputMsg::Reconnect) self.send_message(MockInputMsg::Reconnect)
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-startselection /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-startselection>
fn StartSelection(&self) { fn StartSelection(&self) {
self.send_message(MockInputMsg::TriggerSelect( self.send_message(MockInputMsg::TriggerSelect(
SelectKind::Select, SelectKind::Select,
@ -94,7 +94,7 @@ impl FakeXRInputControllerMethods for FakeXRInputController {
)) ))
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-endselection /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-endselection>
fn EndSelection(&self) { fn EndSelection(&self) {
self.send_message(MockInputMsg::TriggerSelect( self.send_message(MockInputMsg::TriggerSelect(
SelectKind::Select, SelectKind::Select,
@ -102,7 +102,7 @@ impl FakeXRInputControllerMethods for FakeXRInputController {
)) ))
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-simulateselect /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-simulateselect>
fn SimulateSelect(&self) { fn SimulateSelect(&self) {
self.send_message(MockInputMsg::TriggerSelect( self.send_message(MockInputMsg::TriggerSelect(
SelectKind::Select, SelectKind::Select,
@ -110,7 +110,7 @@ impl FakeXRInputControllerMethods for FakeXRInputController {
)) ))
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-sethandedness /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-sethandedness>
fn SetHandedness(&self, handedness: XRHandedness) { fn SetHandedness(&self, handedness: XRHandedness) {
let h = match handedness { let h = match handedness {
XRHandedness::None => Handedness::None, XRHandedness::None => Handedness::None,
@ -120,7 +120,7 @@ impl FakeXRInputControllerMethods for FakeXRInputController {
let _ = self.send_message(MockInputMsg::SetHandedness(h)); let _ = self.send_message(MockInputMsg::SetHandedness(h));
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-settargetraymode /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-settargetraymode>
fn SetTargetRayMode(&self, target_ray_mode: XRTargetRayMode) { fn SetTargetRayMode(&self, target_ray_mode: XRTargetRayMode) {
let t = match target_ray_mode { let t = match target_ray_mode {
XRTargetRayMode::Gaze => TargetRayMode::Gaze, XRTargetRayMode::Gaze => TargetRayMode::Gaze,
@ -130,7 +130,7 @@ impl FakeXRInputControllerMethods for FakeXRInputController {
let _ = self.send_message(MockInputMsg::SetTargetRayMode(t)); let _ = self.send_message(MockInputMsg::SetTargetRayMode(t));
} }
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setprofiles /// <https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setprofiles>
fn SetProfiles(&self, profiles: Vec<DOMString>) { fn SetProfiles(&self, profiles: Vec<DOMString>) {
let t = profiles.into_iter().map(String::from).collect(); let t = profiles.into_iter().map(String::from).collect();
let _ = self.send_message(MockInputMsg::SetProfiles(t)); let _ = self.send_message(MockInputMsg::SetProfiles(t));

View file

@ -131,7 +131,7 @@ use crate::timers::{
#[derive(JSTraceable)] #[derive(JSTraceable)]
pub struct AutoCloseWorker { pub struct AutoCloseWorker {
/// https://html.spec.whatwg.org/multipage/#dom-workerglobalscope-closing /// <https://html.spec.whatwg.org/multipage/#dom-workerglobalscope-closing>
closing: Arc<AtomicBool>, closing: Arc<AtomicBool>,
/// A handle to join on the worker thread. /// A handle to join on the worker thread.
join_handle: Option<JoinHandle<()>>, join_handle: Option<JoinHandle<()>>,
@ -207,7 +207,7 @@ pub struct GlobalScope {
console_timers: DomRefCell<HashMap<DOMString, Instant>>, console_timers: DomRefCell<HashMap<DOMString, Instant>>,
/// module map is used when importing JavaScript modules /// module map is used when importing JavaScript modules
/// https://html.spec.whatwg.org/multipage/#concept-settings-object-module-map /// <https://html.spec.whatwg.org/multipage/#concept-settings-object-module-map>
#[ignore_malloc_size_of = "mozjs"] #[ignore_malloc_size_of = "mozjs"]
module_map: DomRefCell<HashMapTracedValues<ServoUrl, Rc<ModuleTree>>>, module_map: DomRefCell<HashMapTracedValues<ServoUrl, Rc<ModuleTree>>>,
@ -257,7 +257,7 @@ pub struct GlobalScope {
#[no_trace] #[no_trace]
origin: MutableOrigin, origin: MutableOrigin,
/// https://html.spec.whatwg.org/multipage/#concept-environment-creation-url /// <https://html.spec.whatwg.org/multipage/#concept-environment-creation-url>
#[no_trace] #[no_trace]
creation_url: Option<ServoUrl>, creation_url: Option<ServoUrl>,
@ -442,7 +442,7 @@ pub struct ManagedMessagePort {
pub enum BroadcastChannelState { pub enum BroadcastChannelState {
/// The broadcast-channel router id for this global, and a queue of managed channels. /// The broadcast-channel router id for this global, and a queue of managed channels.
/// Step 9, "sort destinations" /// Step 9, "sort destinations"
/// of https://html.spec.whatwg.org/multipage/#dom-broadcastchannel-postmessage /// of <https://html.spec.whatwg.org/multipage/#dom-broadcastchannel-postmessage>
/// requires keeping track of creation order, hence the queue. /// requires keeping track of creation order, hence the queue.
Managed( Managed(
#[no_trace] BroadcastChannelRouterId, #[no_trace] BroadcastChannelRouterId,
@ -1339,7 +1339,7 @@ impl GlobalScope {
} }
} }
/// https://html.spec.whatwg.org/multipage/#ports-and-garbage-collection /// <https://html.spec.whatwg.org/multipage/#ports-and-garbage-collection>
pub fn perform_a_message_port_garbage_collection_checkpoint(&self) { pub fn perform_a_message_port_garbage_collection_checkpoint(&self) {
let is_empty = if let MessagePortState::Managed(_id, message_ports) = let is_empty = if let MessagePortState::Managed(_id, message_ports) =
&mut *self.message_port_state.borrow_mut() &mut *self.message_port_state.borrow_mut()
@ -1373,7 +1373,7 @@ impl GlobalScope {
/// Remove broadcast-channels that are closed. /// Remove broadcast-channels that are closed.
/// TODO: Also remove them if they do not have an event-listener. /// TODO: Also remove them if they do not have an event-listener.
/// see https://github.com/servo/servo/issues/25772 /// see <https://github.com/servo/servo/issues/25772>
pub fn perform_a_broadcast_channel_garbage_collection_checkpoint(&self) { pub fn perform_a_broadcast_channel_garbage_collection_checkpoint(&self) {
let is_empty = if let BroadcastChannelState::Managed(router_id, ref mut channels) = let is_empty = if let BroadcastChannelState::Managed(router_id, ref mut channels) =
&mut *self.broadcast_channel_state.borrow_mut() &mut *self.broadcast_channel_state.borrow_mut()
@ -1791,7 +1791,7 @@ impl GlobalScope {
} }
} }
/// https://w3c.github.io/FileAPI/#dfn-size /// <https://w3c.github.io/FileAPI/#dfn-size>
pub fn get_blob_size(&self, blob_id: &BlobId) -> u64 { pub fn get_blob_size(&self, blob_id: &BlobId) -> u64 {
let blob_state = self.blob_state.borrow(); let blob_state = self.blob_state.borrow();
if let BlobState::Managed(blobs_map) = &*blob_state { if let BlobState::Managed(blobs_map) = &*blob_state {
@ -3055,7 +3055,7 @@ impl GlobalScope {
false false
} }
/// https://www.w3.org/TR/CSP/#get-csp-of-object /// <https://www.w3.org/TR/CSP/#get-csp-of-object>
pub fn get_csp_list(&self) -> Option<CspList> { pub fn get_csp_list(&self) -> Option<CspList> {
if let Some(window) = self.downcast::<Window>() { if let Some(window) = self.downcast::<Window>() {
return window.Document().get_csp_list().map(|c| c.clone()); return window.Document().get_csp_list().map(|c| c.clone());

View file

@ -86,7 +86,7 @@ impl GPUAdapter {
} }
impl GPUAdapterMethods for GPUAdapter { impl GPUAdapterMethods for GPUAdapter {
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapter-requestdevice /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapter-requestdevice>
fn RequestDevice(&self, descriptor: &GPUDeviceDescriptor, comp: InRealm) -> Rc<Promise> { fn RequestDevice(&self, descriptor: &GPUDeviceDescriptor, comp: InRealm) -> Rc<Promise> {
// Step 2 // Step 2
let promise = Promise::new_in_current_realm(comp); let promise = Promise::new_in_current_realm(comp);
@ -205,13 +205,13 @@ impl GPUAdapterMethods for GPUAdapter {
promise promise
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapter-isfallbackadapter /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapter-isfallbackadapter>
fn IsFallbackAdapter(&self) -> bool { fn IsFallbackAdapter(&self) -> bool {
//TODO //TODO
false false
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapter-requestadapterinfo /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapter-requestadapterinfo>
fn RequestAdapterInfo(&self, unmask_hints: Vec<DOMString>, comp: InRealm) -> Rc<Promise> { fn RequestAdapterInfo(&self, unmask_hints: Vec<DOMString>, comp: InRealm) -> Rc<Promise> {
// XXX: Adapter info should be generated here ... // XXX: Adapter info should be generated here ...
// Step 1 // Step 1
@ -225,12 +225,12 @@ impl GPUAdapterMethods for GPUAdapter {
promise promise
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapter-features /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapter-features>
fn Features(&self) -> DomRoot<GPUSupportedFeatures> { fn Features(&self) -> DomRoot<GPUSupportedFeatures> {
DomRoot::from_ref(&self.features) DomRoot::from_ref(&self.features)
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapter-limits /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapter-limits>
fn Limits(&self) -> DomRoot<GPUSupportedLimits> { fn Limits(&self) -> DomRoot<GPUSupportedLimits> {
DomRoot::from_ref(&self.limits) DomRoot::from_ref(&self.limits)
} }

View file

@ -35,22 +35,22 @@ impl GPUAdapterInfo {
// TODO: wgpu does not expose right fields right now // TODO: wgpu does not expose right fields right now
impl GPUAdapterInfoMethods for GPUAdapterInfo { impl GPUAdapterInfoMethods for GPUAdapterInfo {
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-vendor /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-vendor>
fn Vendor(&self) -> DOMString { fn Vendor(&self) -> DOMString {
DOMString::new() DOMString::new()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-architecture /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-architecture>
fn Architecture(&self) -> DOMString { fn Architecture(&self) -> DOMString {
DOMString::new() DOMString::new()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-device /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-device>
fn Device(&self) -> DOMString { fn Device(&self) -> DOMString {
DOMString::new() DOMString::new()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-description /// <https://gpuweb.github.io/gpuweb/#dom-gpuadapterinfo-description>
fn Description(&self) -> DOMString { fn Description(&self) -> DOMString {
DOMString::from_string(self.info.driver_info.clone()) DOMString::from_string(self.info.driver_info.clone())
} }

View file

@ -63,12 +63,12 @@ impl GPUBindGroup {
} }
impl GPUBindGroupMethods for GPUBindGroup { impl GPUBindGroupMethods for GPUBindGroup {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }

View file

@ -48,12 +48,12 @@ impl GPUBindGroupLayout {
} }
impl GPUBindGroupLayoutMethods for GPUBindGroupLayout { impl GPUBindGroupLayoutMethods for GPUBindGroupLayout {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }

View file

@ -135,7 +135,7 @@ impl Drop for GPUBuffer {
impl GPUBufferMethods for GPUBuffer { impl GPUBufferMethods for GPUBuffer {
#[allow(unsafe_code)] #[allow(unsafe_code)]
/// https://gpuweb.github.io/gpuweb/#dom-gpubuffer-unmap /// <https://gpuweb.github.io/gpuweb/#dom-gpubuffer-unmap>
fn Unmap(&self) -> Fallible<()> { fn Unmap(&self) -> Fallible<()> {
let cx = GlobalScope::get_cx(); let cx = GlobalScope::get_cx();
// Step 1 // Step 1
@ -181,7 +181,7 @@ impl GPUBufferMethods for GPUBuffer {
Ok(()) Ok(())
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpubuffer-destroy /// <https://gpuweb.github.io/gpuweb/#dom-gpubuffer-destroy>
fn Destroy(&self) -> Fallible<()> { fn Destroy(&self) -> Fallible<()> {
let state = self.state.get(); let state = self.state.get();
match state { match state {
@ -206,7 +206,7 @@ impl GPUBufferMethods for GPUBuffer {
} }
#[allow(unsafe_code)] #[allow(unsafe_code)]
/// https://gpuweb.github.io/gpuweb/#dom-gpubuffer-mapasync-offset-size /// <https://gpuweb.github.io/gpuweb/#dom-gpubuffer-mapasync-offset-size>
fn MapAsync( fn MapAsync(
&self, &self,
mode: u32, mode: u32,
@ -278,7 +278,7 @@ impl GPUBufferMethods for GPUBuffer {
promise promise
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpubuffer-getmappedrange /// <https://gpuweb.github.io/gpuweb/#dom-gpubuffer-getmappedrange>
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn GetMappedRange( fn GetMappedRange(
&self, &self,
@ -333,12 +333,12 @@ impl GPUBufferMethods for GPUBuffer {
Ok(NonNull::new(array_buffer).unwrap()) Ok(NonNull::new(array_buffer).unwrap())
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }

View file

@ -100,14 +100,14 @@ pub struct GPUCanvasContext {
#[ignore_malloc_size_of = "channels are hard"] #[ignore_malloc_size_of = "channels are hard"]
#[no_trace] #[no_trace]
channel: WebGPU, channel: WebGPU,
/// https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-canvas /// <https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-canvas>
canvas: HTMLCanvasElementOrOffscreenCanvas, canvas: HTMLCanvasElementOrOffscreenCanvas,
// TODO: can we have wgpu surface that is hw accelerated inside wr ... // TODO: can we have wgpu surface that is hw accelerated inside wr ...
#[ignore_malloc_size_of = "Defined in webrender"] #[ignore_malloc_size_of = "Defined in webrender"]
#[no_trace] #[no_trace]
webrender_image: Cell<Option<webrender_api::ImageKey>>, webrender_image: Cell<Option<webrender_api::ImageKey>>,
context_id: WebGPUContextId, context_id: WebGPUContextId,
/// https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-currenttexture-slot /// <https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-currenttexture-slot>
texture: MutNullableDom<GPUTexture>, texture: MutNullableDom<GPUTexture>,
} }
@ -206,12 +206,12 @@ impl LayoutCanvasRenderingContextHelpers for LayoutDom<'_, GPUCanvasContext> {
} }
impl GPUCanvasContextMethods for GPUCanvasContext { impl GPUCanvasContextMethods for GPUCanvasContext {
/// https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-canvas /// <https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-canvas>
fn Canvas(&self) -> HTMLCanvasElementOrOffscreenCanvas { fn Canvas(&self) -> HTMLCanvasElementOrOffscreenCanvas {
self.canvas.clone() self.canvas.clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-configure /// <https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-configure>
fn Configure(&self, descriptor: &GPUCanvasConfiguration) { fn Configure(&self, descriptor: &GPUCanvasConfiguration) {
// Step 1 is let // Step 1 is let
// Step 2 // Step 2
@ -293,7 +293,7 @@ impl GPUCanvasContextMethods for GPUCanvasContext {
self.webrender_image.set(Some(receiver.recv().unwrap())); self.webrender_image.set(Some(receiver.recv().unwrap()));
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-unconfigure /// <https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-unconfigure>
fn Unconfigure(&self) { fn Unconfigure(&self) {
if let Some(image_key) = self.webrender_image.take() { if let Some(image_key) = self.webrender_image.take() {
if let Err(e) = self.channel.0.send(( if let Err(e) = self.channel.0.send((
@ -312,7 +312,7 @@ impl GPUCanvasContextMethods for GPUCanvasContext {
self.texture.take(); self.texture.take();
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-getcurrenttexture /// <https://gpuweb.github.io/gpuweb/#dom-gpucanvascontext-getcurrenttexture>
fn GetCurrentTexture(&self) -> Fallible<DomRoot<GPUTexture>> { fn GetCurrentTexture(&self) -> Fallible<DomRoot<GPUTexture>> {
// Step 5. // Step 5.
self.mark_as_dirty(); self.mark_as_dirty();

View file

@ -95,12 +95,12 @@ impl GPUCommandBuffer {
} }
impl GPUCommandBufferMethods for GPUCommandBuffer { impl GPUCommandBufferMethods for GPUCommandBuffer {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }

View file

@ -107,17 +107,17 @@ impl GPUCommandEncoder {
} }
impl GPUCommandEncoderMethods for GPUCommandEncoder { impl GPUCommandEncoderMethods for GPUCommandEncoder {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-begincomputepass /// <https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-begincomputepass>
fn BeginComputePass( fn BeginComputePass(
&self, &self,
descriptor: &GPUComputePassDescriptor, descriptor: &GPUComputePassDescriptor,
@ -152,7 +152,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-beginrenderpass /// <https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-beginrenderpass>
fn BeginRenderPass( fn BeginRenderPass(
&self, &self,
descriptor: &GPURenderPassDescriptor, descriptor: &GPURenderPassDescriptor,
@ -250,7 +250,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-copybuffertobuffer /// <https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-copybuffertobuffer>
fn CopyBufferToBuffer( fn CopyBufferToBuffer(
&self, &self,
source: &GPUBuffer, source: &GPUBuffer,
@ -284,7 +284,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
.expect("Failed to send CopyBufferToBuffer"); .expect("Failed to send CopyBufferToBuffer");
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-copybuffertotexture /// <https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-copybuffertotexture>
fn CopyBufferToTexture( fn CopyBufferToTexture(
&self, &self,
source: &GPUImageCopyBuffer, source: &GPUImageCopyBuffer,
@ -316,7 +316,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
.expect("Failed to send CopyBufferToTexture"); .expect("Failed to send CopyBufferToTexture");
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-copybuffertotexture /// <https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-copybuffertotexture>
fn CopyTextureToBuffer( fn CopyTextureToBuffer(
&self, &self,
source: &GPUImageCopyTexture, source: &GPUImageCopyTexture,
@ -348,7 +348,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
.expect("Failed to send CopyTextureToBuffer"); .expect("Failed to send CopyTextureToBuffer");
} }
/// https://gpuweb.github.io/gpuweb/#GPUCommandEncoder-copyTextureToTexture /// <https://gpuweb.github.io/gpuweb/#GPUCommandEncoder-copyTextureToTexture>
fn CopyTextureToTexture( fn CopyTextureToTexture(
&self, &self,
source: &GPUImageCopyTexture, source: &GPUImageCopyTexture,
@ -376,7 +376,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
.expect("Failed to send CopyTextureToTexture"); .expect("Failed to send CopyTextureToTexture");
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-finish /// <https://gpuweb.github.io/gpuweb/#dom-gpucommandencoder-finish>
fn Finish(&self, descriptor: &GPUCommandBufferDescriptor) -> DomRoot<GPUCommandBuffer> { fn Finish(&self, descriptor: &GPUCommandBufferDescriptor) -> DomRoot<GPUCommandBuffer> {
self.channel self.channel
.0 .0

View file

@ -19,7 +19,7 @@ pub struct GPUCompilationInfo {
// TODO: wgpu does not expose right fields right now // TODO: wgpu does not expose right fields right now
impl GPUCompilationInfoMethods for GPUCompilationInfo { impl GPUCompilationInfoMethods for GPUCompilationInfo {
/// https://gpuweb.github.io/gpuweb/#dom-gpucompilationinfo-messages /// <https://gpuweb.github.io/gpuweb/#dom-gpucompilationinfo-messages>
fn Messages(&self, _cx: JSContext) -> JSVal { fn Messages(&self, _cx: JSContext) -> JSVal {
todo!() todo!()
} }

View file

@ -65,32 +65,32 @@ impl GPUCompilationMessage {
} }
impl GPUCompilationMessageMethods for GPUCompilationMessage { impl GPUCompilationMessageMethods for GPUCompilationMessage {
/// https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-message /// <https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-message>
fn Message(&self) -> DOMString { fn Message(&self) -> DOMString {
self.message.to_owned() self.message.to_owned()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-type /// <https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-type>
fn Type(&self) -> GPUCompilationMessageType { fn Type(&self) -> GPUCompilationMessageType {
self.mtype self.mtype
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-linenum /// <https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-linenum>
fn LineNum(&self) -> u64 { fn LineNum(&self) -> u64 {
self.line_num self.line_num
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-linepos /// <https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-linepos>
fn LinePos(&self) -> u64 { fn LinePos(&self) -> u64 {
self.line_pos self.line_pos
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-offset /// <https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-offset>
fn Offset(&self) -> u64 { fn Offset(&self) -> u64 {
self.offset self.offset
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-length /// <https://gpuweb.github.io/gpuweb/#dom-gpucompilationmessage-length>
fn Length(&self) -> u64 { fn Length(&self) -> u64 {
self.length self.length
} }

View file

@ -67,24 +67,24 @@ impl GPUComputePassEncoder {
} }
impl GPUComputePassEncoderMethods for GPUComputePassEncoder { impl GPUComputePassEncoderMethods for GPUComputePassEncoder {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucomputepassencoder-dispatchworkgroups /// <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassencoder-dispatchworkgroups>
fn DispatchWorkgroups(&self, x: u32, y: u32, z: u32) { fn DispatchWorkgroups(&self, x: u32, y: u32, z: u32) {
if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() { if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() {
wgpu_comp::wgpu_compute_pass_dispatch_workgroups(compute_pass, x, y, z); wgpu_comp::wgpu_compute_pass_dispatch_workgroups(compute_pass, x, y, z);
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucomputepassencoder-dispatchworkgroupsindirect /// <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassencoder-dispatchworkgroupsindirect>
fn DispatchWorkgroupsIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) { fn DispatchWorkgroupsIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) {
if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() { if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() {
wgpu_comp::wgpu_compute_pass_dispatch_workgroups_indirect( wgpu_comp::wgpu_compute_pass_dispatch_workgroups_indirect(
@ -95,7 +95,7 @@ impl GPUComputePassEncoderMethods for GPUComputePassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-endpass /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-endpass>
fn End(&self) -> Fallible<()> { fn End(&self) -> Fallible<()> {
let compute_pass = self.compute_pass.borrow_mut().take(); let compute_pass = self.compute_pass.borrow_mut().take();
self.channel self.channel
@ -116,7 +116,7 @@ impl GPUComputePassEncoderMethods for GPUComputePassEncoder {
Ok(()) Ok(())
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablepassencoder-setbindgroup /// <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablepassencoder-setbindgroup>
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn SetBindGroup(&self, index: u32, bind_group: &GPUBindGroup, dynamic_offsets: Vec<u32>) { fn SetBindGroup(&self, index: u32, bind_group: &GPUBindGroup, dynamic_offsets: Vec<u32>) {
if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() { if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() {
@ -132,7 +132,7 @@ impl GPUComputePassEncoderMethods for GPUComputePassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpucomputepassencoder-setpipeline /// <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassencoder-setpipeline>
fn SetPipeline(&self, pipeline: &GPUComputePipeline) { fn SetPipeline(&self, pipeline: &GPUComputePipeline) {
if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() { if let Some(compute_pass) = self.compute_pass.borrow_mut().as_mut() {
wgpu_comp::wgpu_compute_pass_set_pipeline(compute_pass, pipeline.id().0); wgpu_comp::wgpu_compute_pass_set_pipeline(compute_pass, pipeline.id().0);

View file

@ -70,17 +70,17 @@ impl GPUComputePipeline {
} }
impl GPUComputePipelineMethods for GPUComputePipeline { impl GPUComputePipelineMethods for GPUComputePipeline {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpupipelinebase-getbindgrouplayout /// <https://gpuweb.github.io/gpuweb/#dom-gpupipelinebase-getbindgrouplayout>
fn GetBindGroupLayout(&self, index: u32) -> Fallible<DomRoot<GPUBindGroupLayout>> { fn GetBindGroupLayout(&self, index: u32) -> Fallible<DomRoot<GPUBindGroupLayout>> {
if index > self.bind_group_layouts.len() as u32 { if index > self.bind_group_layouts.len() as u32 {
return Err(Error::Range(String::from("Index out of bounds"))); return Err(Error::Range(String::from("Index out of bounds")));

View file

@ -311,7 +311,7 @@ impl GPUDevice {
} }
} }
/// https://gpuweb.github.io/gpuweb/#lose-the-device /// <https://gpuweb.github.io/gpuweb/#lose-the-device>
pub fn lose(&self, reason: GPUDeviceLostReason) { pub fn lose(&self, reason: GPUDeviceLostReason) {
if let Some(ref lost_promise) = *self.lost_promise.borrow() { if let Some(ref lost_promise) = *self.lost_promise.borrow() {
let global = &self.global(); let global = &self.global();
@ -328,39 +328,39 @@ impl GPUDevice {
} }
impl GPUDeviceMethods for GPUDevice { impl GPUDeviceMethods for GPUDevice {
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-features /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-features>
fn Features(&self) -> DomRoot<GPUSupportedFeatures> { fn Features(&self) -> DomRoot<GPUSupportedFeatures> {
DomRoot::from_ref(&self.features) DomRoot::from_ref(&self.features)
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-limits /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-limits>
fn Limits(&self) -> DomRoot<GPUSupportedLimits> { fn Limits(&self) -> DomRoot<GPUSupportedLimits> {
DomRoot::from_ref(&self.limits) DomRoot::from_ref(&self.limits)
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-queue /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-queue>
fn GetQueue(&self) -> DomRoot<GPUQueue> { fn GetQueue(&self) -> DomRoot<GPUQueue> {
DomRoot::from_ref(&self.default_queue) DomRoot::from_ref(&self.default_queue)
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-lost /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-lost>
fn GetLost(&self, comp: InRealm) -> Fallible<Rc<Promise>> { fn GetLost(&self, comp: InRealm) -> Fallible<Rc<Promise>> {
let promise = Promise::new_in_current_realm(comp); let promise = Promise::new_in_current_realm(comp);
*self.lost_promise.borrow_mut() = Some(promise.clone()); *self.lost_promise.borrow_mut() = Some(promise.clone());
Ok(promise) Ok(promise)
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createbuffer /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createbuffer>
fn CreateBuffer(&self, descriptor: &GPUBufferDescriptor) -> Fallible<DomRoot<GPUBuffer>> { fn CreateBuffer(&self, descriptor: &GPUBufferDescriptor) -> Fallible<DomRoot<GPUBuffer>> {
let desc = let desc =
wgt::BufferUsages::from_bits(descriptor.usage).map(|usg| wgpu_res::BufferDescriptor { wgt::BufferUsages::from_bits(descriptor.usage).map(|usg| wgpu_res::BufferDescriptor {
@ -425,7 +425,7 @@ impl GPUDeviceMethods for GPUDevice {
)) ))
} }
/// https://gpuweb.github.io/gpuweb/#GPUDevice-createBindGroupLayout /// <https://gpuweb.github.io/gpuweb/#GPUDevice-createBindGroupLayout>
#[allow(non_snake_case)] #[allow(non_snake_case)]
fn CreateBindGroupLayout( fn CreateBindGroupLayout(
&self, &self,
@ -546,7 +546,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createpipelinelayout /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createpipelinelayout>
fn CreatePipelineLayout( fn CreatePipelineLayout(
&self, &self,
descriptor: &GPUPipelineLayoutDescriptor, descriptor: &GPUPipelineLayoutDescriptor,
@ -596,7 +596,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createbindgroup /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createbindgroup>
fn CreateBindGroup(&self, descriptor: &GPUBindGroupDescriptor) -> DomRoot<GPUBindGroup> { fn CreateBindGroup(&self, descriptor: &GPUBindGroupDescriptor) -> DomRoot<GPUBindGroup> {
let entries = descriptor let entries = descriptor
.entries .entries
@ -657,7 +657,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createshadermodule /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createshadermodule>
fn CreateShaderModule( fn CreateShaderModule(
&self, &self,
descriptor: RootedTraceableBox<GPUShaderModuleDescriptor>, descriptor: RootedTraceableBox<GPUShaderModuleDescriptor>,
@ -690,7 +690,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createcomputepipeline /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createcomputepipeline>
fn CreateComputePipeline( fn CreateComputePipeline(
&self, &self,
descriptor: &GPUComputePipelineDescriptor, descriptor: &GPUComputePipelineDescriptor,
@ -736,7 +736,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createcommandencoder /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createcommandencoder>
fn CreateCommandEncoder( fn CreateCommandEncoder(
&self, &self,
descriptor: &GPUCommandEncoderDescriptor, descriptor: &GPUCommandEncoderDescriptor,
@ -770,7 +770,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createtexture /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createtexture>
fn CreateTexture(&self, descriptor: &GPUTextureDescriptor) -> DomRoot<GPUTexture> { fn CreateTexture(&self, descriptor: &GPUTextureDescriptor) -> DomRoot<GPUTexture> {
let size = convert_texture_size_to_dict(&descriptor.size); let size = convert_texture_size_to_dict(&descriptor.size);
let desc = wgt::TextureUsages::from_bits(descriptor.usage).map(|usg| { let desc = wgt::TextureUsages::from_bits(descriptor.usage).map(|usg| {
@ -836,7 +836,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createsampler /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createsampler>
fn CreateSampler(&self, descriptor: &GPUSamplerDescriptor) -> DomRoot<GPUSampler> { fn CreateSampler(&self, descriptor: &GPUSamplerDescriptor) -> DomRoot<GPUSampler> {
let sampler_id = self let sampler_id = self
.global() .global()
@ -885,7 +885,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createrenderpipeline /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createrenderpipeline>
fn CreateRenderPipeline( fn CreateRenderPipeline(
&self, &self,
descriptor: &GPURenderPipelineDescriptor, descriptor: &GPURenderPipelineDescriptor,
@ -1039,7 +1039,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createrenderbundleencoder /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createrenderbundleencoder>
fn CreateRenderBundleEncoder( fn CreateRenderBundleEncoder(
&self, &self,
descriptor: &GPURenderBundleEncoderDescriptor, descriptor: &GPURenderBundleEncoderDescriptor,
@ -1078,7 +1078,7 @@ impl GPUDeviceMethods for GPUDevice {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-pusherrorscope /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-pusherrorscope>
fn PushErrorScope(&self, filter: GPUErrorFilter) { fn PushErrorScope(&self, filter: GPUErrorFilter) {
let mut context = self.scope_context.borrow_mut(); let mut context = self.scope_context.borrow_mut();
let scope_id = context.next_scope_id; let scope_id = context.next_scope_id;
@ -1097,7 +1097,7 @@ impl GPUDeviceMethods for GPUDevice {
assert!(res.is_none()); assert!(res.is_none());
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-poperrorscope /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-poperrorscope>
fn PopErrorScope(&self, comp: InRealm) -> Rc<Promise> { fn PopErrorScope(&self, comp: InRealm) -> Rc<Promise> {
let mut context = self.scope_context.borrow_mut(); let mut context = self.scope_context.borrow_mut();
let promise = Promise::new_in_current_realm(comp); let promise = Promise::new_in_current_realm(comp);
@ -1131,7 +1131,7 @@ impl GPUDeviceMethods for GPUDevice {
// https://gpuweb.github.io/gpuweb/#dom-gpudevice-onuncapturederror // https://gpuweb.github.io/gpuweb/#dom-gpudevice-onuncapturederror
event_handler!(uncapturederror, GetOnuncapturederror, SetOnuncapturederror); event_handler!(uncapturederror, GetOnuncapturederror, SetOnuncapturederror);
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-destroy /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-destroy>
fn Destroy(&self) { fn Destroy(&self) {
if self.valid.get() { if self.valid.get() {
self.valid.set(false); self.valid.set(false);
@ -1148,7 +1148,7 @@ impl GPUDeviceMethods for GPUDevice {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createcomputepipelineasync /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createcomputepipelineasync>
fn CreateComputePipelineAsync( fn CreateComputePipelineAsync(
&self, &self,
_descriptor: &GPUComputePipelineDescriptor, _descriptor: &GPUComputePipelineDescriptor,
@ -1156,7 +1156,7 @@ impl GPUDeviceMethods for GPUDevice {
todo!() todo!()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createrenderpipelineasync /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-createrenderpipelineasync>
fn CreateRenderPipelineAsync(&self, _descriptor: &GPURenderPipelineDescriptor) -> Rc<Promise> { fn CreateRenderPipelineAsync(&self, _descriptor: &GPURenderPipelineDescriptor) -> Rc<Promise> {
todo!() todo!()
} }

View file

@ -42,12 +42,12 @@ impl GPUDeviceLostInfo {
} }
impl GPUDeviceLostInfoMethods for GPUDeviceLostInfo { impl GPUDeviceLostInfoMethods for GPUDeviceLostInfo {
/// https://gpuweb.github.io/gpuweb/#dom-gpudevicelostinfo-message /// <https://gpuweb.github.io/gpuweb/#dom-gpudevicelostinfo-message>
fn Message(&self) -> DOMString { fn Message(&self) -> DOMString {
self.message.clone() self.message.clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpudevicelostinfo-reason /// <https://gpuweb.github.io/gpuweb/#dom-gpudevicelostinfo-reason>
fn Reason(&self) -> GPUDeviceLostReason { fn Reason(&self) -> GPUDeviceLostReason {
self.reason self.reason
} }

View file

@ -33,7 +33,7 @@ impl GPUOutOfMemoryError {
) )
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuoutofmemoryerror-gpuoutofmemoryerror /// <https://gpuweb.github.io/gpuweb/#dom-gpuoutofmemoryerror-gpuoutofmemoryerror>
#[allow(non_snake_case)] #[allow(non_snake_case)]
pub fn Constructor(global: &GlobalScope, proto: Option<HandleObject>) -> DomRoot<Self> { pub fn Constructor(global: &GlobalScope, proto: Option<HandleObject>) -> DomRoot<Self> {
GPUOutOfMemoryError::new_with_proto(global, proto) GPUOutOfMemoryError::new_with_proto(global, proto)

View file

@ -64,12 +64,12 @@ impl GPUPipelineLayout {
} }
impl GPUPipelineLayoutMethods for GPUPipelineLayout { impl GPUPipelineLayoutMethods for GPUPipelineLayout {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }

View file

@ -18,17 +18,17 @@ pub struct GPUQuerySet {
// TODO: wgpu does not expose right fields right now // TODO: wgpu does not expose right fields right now
impl GPUQuerySetMethods for GPUQuerySet { impl GPUQuerySetMethods for GPUQuerySet {
/// https://gpuweb.github.io/gpuweb/#dom-gpuqueryset-destroy /// <https://gpuweb.github.io/gpuweb/#dom-gpuqueryset-destroy>
fn Destroy(&self) { fn Destroy(&self) {
todo!() todo!()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
todo!() todo!()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, _value: USVString) { fn SetLabel(&self, _value: USVString) {
todo!() todo!()
} }

View file

@ -58,17 +58,17 @@ impl GPUQueue {
} }
impl GPUQueueMethods for GPUQueue { impl GPUQueueMethods for GPUQueue {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuqueue-submit /// <https://gpuweb.github.io/gpuweb/#dom-gpuqueue-submit>
fn Submit(&self, command_buffers: Vec<DomRoot<GPUCommandBuffer>>) { fn Submit(&self, command_buffers: Vec<DomRoot<GPUCommandBuffer>>) {
let valid = command_buffers.iter().all(|cb| { let valid = command_buffers.iter().all(|cb| {
cb.buffers().iter().all(|b| match b.state() { cb.buffers().iter().all(|b| match b.state() {
@ -99,7 +99,7 @@ impl GPUQueueMethods for GPUQueue {
.unwrap(); .unwrap();
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writebuffer /// <https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writebuffer>
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn WriteBuffer( fn WriteBuffer(
&self, &self,
@ -146,7 +146,7 @@ impl GPUQueueMethods for GPUQueue {
Ok(()) Ok(())
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writetexture /// <https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writetexture>
fn WriteTexture( fn WriteTexture(
&self, &self,
destination: &GPUImageCopyTexture, destination: &GPUImageCopyTexture,

View file

@ -67,12 +67,12 @@ impl GPURenderBundle {
} }
impl GPURenderBundleMethods for GPURenderBundle { impl GPURenderBundleMethods for GPURenderBundle {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }

View file

@ -70,17 +70,17 @@ impl GPURenderBundleEncoder {
} }
impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder { impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablepassencoder-setbindgroup /// <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablepassencoder-setbindgroup>
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn SetBindGroup(&self, index: u32, bind_group: &GPUBindGroup, dynamic_offsets: Vec<u32>) { fn SetBindGroup(&self, index: u32, bind_group: &GPUBindGroup, dynamic_offsets: Vec<u32>) {
if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() {
@ -96,14 +96,14 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setpipeline /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setpipeline>
fn SetPipeline(&self, pipeline: &GPURenderPipeline) { fn SetPipeline(&self, pipeline: &GPURenderPipeline) {
if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() {
wgpu_bundle::wgpu_render_bundle_set_pipeline(encoder, pipeline.id().0); wgpu_bundle::wgpu_render_bundle_set_pipeline(encoder, pipeline.id().0);
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setindexbuffer /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setindexbuffer>
fn SetIndexBuffer( fn SetIndexBuffer(
&self, &self,
buffer: &GPUBuffer, buffer: &GPUBuffer,
@ -125,7 +125,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setvertexbuffer /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setvertexbuffer>
fn SetVertexBuffer(&self, slot: u32, buffer: &GPUBuffer, offset: u64, size: u64) { fn SetVertexBuffer(&self, slot: u32, buffer: &GPUBuffer, offset: u64, size: u64) {
if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() {
wgpu_bundle::wgpu_render_bundle_set_vertex_buffer( wgpu_bundle::wgpu_render_bundle_set_vertex_buffer(
@ -138,7 +138,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-draw /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-draw>
fn Draw(&self, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32) { fn Draw(&self, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32) {
if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() {
wgpu_bundle::wgpu_render_bundle_draw( wgpu_bundle::wgpu_render_bundle_draw(
@ -151,7 +151,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexed /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexed>
fn DrawIndexed( fn DrawIndexed(
&self, &self,
index_count: u32, index_count: u32,
@ -172,7 +172,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindirect /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindirect>
fn DrawIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) { fn DrawIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) {
if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() {
wgpu_bundle::wgpu_render_bundle_draw_indirect( wgpu_bundle::wgpu_render_bundle_draw_indirect(
@ -183,7 +183,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexedindirect /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexedindirect>
fn DrawIndexedIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) { fn DrawIndexedIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) {
if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() {
wgpu_bundle::wgpu_render_bundle_draw_indexed_indirect( wgpu_bundle::wgpu_render_bundle_draw_indexed_indirect(
@ -194,7 +194,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoder-finish /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoder-finish>
fn Finish(&self, descriptor: &GPURenderBundleDescriptor) -> DomRoot<GPURenderBundle> { fn Finish(&self, descriptor: &GPURenderBundleDescriptor) -> DomRoot<GPURenderBundle> {
let desc = wgt::RenderBundleDescriptor { let desc = wgt::RenderBundleDescriptor {
label: convert_label(&descriptor.parent), label: convert_label(&descriptor.parent),

View file

@ -72,17 +72,17 @@ impl GPURenderPassEncoder {
} }
impl GPURenderPassEncoderMethods for GPURenderPassEncoder { impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablepassencoder-setbindgroup /// <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablepassencoder-setbindgroup>
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn SetBindGroup(&self, index: u32, bind_group: &GPUBindGroup, dynamic_offsets: Vec<u32>) { fn SetBindGroup(&self, index: u32, bind_group: &GPUBindGroup, dynamic_offsets: Vec<u32>) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
@ -98,7 +98,7 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setviewport /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setviewport>
fn SetViewport( fn SetViewport(
&self, &self,
x: Finite<f32>, x: Finite<f32>,
@ -121,14 +121,14 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setscissorrect /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setscissorrect>
fn SetScissorRect(&self, x: u32, y: u32, width: u32, height: u32) { fn SetScissorRect(&self, x: u32, y: u32, width: u32, height: u32) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
wgpu_render::wgpu_render_pass_set_scissor_rect(render_pass, x, y, width, height); wgpu_render::wgpu_render_pass_set_scissor_rect(render_pass, x, y, width, height);
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setblendcolor /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setblendcolor>
fn SetBlendConstant(&self, color: GPUColor) { fn SetBlendConstant(&self, color: GPUColor) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
let colors = match color { let colors = match color {
@ -155,14 +155,14 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setstencilreference /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setstencilreference>
fn SetStencilReference(&self, reference: u32) { fn SetStencilReference(&self, reference: u32) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
wgpu_render::wgpu_render_pass_set_stencil_reference(render_pass, reference); wgpu_render::wgpu_render_pass_set_stencil_reference(render_pass, reference);
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-end /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-end>
fn End(&self) -> Fallible<()> { fn End(&self) -> Fallible<()> {
let render_pass = self.render_pass.borrow_mut().take(); let render_pass = self.render_pass.borrow_mut().take();
self.channel self.channel
@ -183,14 +183,14 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
Ok(()) Ok(())
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setpipeline /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setpipeline>
fn SetPipeline(&self, pipeline: &GPURenderPipeline) { fn SetPipeline(&self, pipeline: &GPURenderPipeline) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
wgpu_render::wgpu_render_pass_set_pipeline(render_pass, pipeline.id().0); wgpu_render::wgpu_render_pass_set_pipeline(render_pass, pipeline.id().0);
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurendercommandsmixin-setindexbuffer /// <https://gpuweb.github.io/gpuweb/#dom-gpurendercommandsmixin-setindexbuffer>
fn SetIndexBuffer( fn SetIndexBuffer(
&self, &self,
buffer: &GPUBuffer, buffer: &GPUBuffer,
@ -212,7 +212,7 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setvertexbuffer /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setvertexbuffer>
fn SetVertexBuffer(&self, slot: u32, buffer: &GPUBuffer, offset: u64, size: u64) { fn SetVertexBuffer(&self, slot: u32, buffer: &GPUBuffer, offset: u64, size: u64) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
wgpu_render::wgpu_render_pass_set_vertex_buffer( wgpu_render::wgpu_render_pass_set_vertex_buffer(
@ -225,7 +225,7 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-draw /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-draw>
fn Draw(&self, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32) { fn Draw(&self, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
wgpu_render::wgpu_render_pass_draw( wgpu_render::wgpu_render_pass_draw(
@ -238,7 +238,7 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexed /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexed>
fn DrawIndexed( fn DrawIndexed(
&self, &self,
index_count: u32, index_count: u32,
@ -259,7 +259,7 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindirect /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindirect>
fn DrawIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) { fn DrawIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
wgpu_render::wgpu_render_pass_draw_indirect( wgpu_render::wgpu_render_pass_draw_indirect(
@ -270,7 +270,7 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexedindirect /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexedindirect>
fn DrawIndexedIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) { fn DrawIndexedIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) {
if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() { if let Some(render_pass) = self.render_pass.borrow_mut().as_mut() {
wgpu_render::wgpu_render_pass_draw_indexed_indirect( wgpu_render::wgpu_render_pass_draw_indexed_indirect(
@ -281,7 +281,7 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
} }
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-executebundles /// <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-executebundles>
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn ExecuteBundles(&self, bundles: Vec<DomRoot<GPURenderBundle>>) { fn ExecuteBundles(&self, bundles: Vec<DomRoot<GPURenderBundle>>) {
let bundle_ids = bundles.iter().map(|b| b.id().0).collect::<Vec<_>>(); let bundle_ids = bundles.iter().map(|b| b.id().0).collect::<Vec<_>>();

View file

@ -70,17 +70,17 @@ impl GPURenderPipeline {
} }
impl GPURenderPipelineMethods for GPURenderPipeline { impl GPURenderPipelineMethods for GPURenderPipeline {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpupipelinebase-getbindgrouplayout /// <https://gpuweb.github.io/gpuweb/#dom-gpupipelinebase-getbindgrouplayout>
fn GetBindGroupLayout(&self, index: u32) -> Fallible<DomRoot<GPUBindGroupLayout>> { fn GetBindGroupLayout(&self, index: u32) -> Fallible<DomRoot<GPUBindGroupLayout>> {
if index > self.bind_group_layouts.len() as u32 { if index > self.bind_group_layouts.len() as u32 {
return Err(Error::Range(String::from("Index out of bounds"))); return Err(Error::Range(String::from("Index out of bounds")));

View file

@ -65,12 +65,12 @@ impl GPUSampler {
} }
impl GPUSamplerMethods for GPUSampler { impl GPUSamplerMethods for GPUSampler {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }

View file

@ -52,17 +52,17 @@ impl GPUShaderModule {
} }
impl GPUShaderModuleMethods for GPUShaderModule { impl GPUShaderModuleMethods for GPUShaderModule {
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn Label(&self) -> USVString { fn Label(&self) -> USVString {
self.label.borrow().clone() self.label.borrow().clone()
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label /// <https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label>
fn SetLabel(&self, value: USVString) { fn SetLabel(&self, value: USVString) {
*self.label.borrow_mut() = value; *self.label.borrow_mut() = value;
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpushadermodule-getcompilationinfo /// <https://gpuweb.github.io/gpuweb/#dom-gpushadermodule-getcompilationinfo>
fn GetCompilationInfo(&self) -> Fallible<Rc<Promise>> { fn GetCompilationInfo(&self) -> Fallible<Rc<Promise>> {
todo!("Missing in wgpu: https://github.com/gfx-rs/wgpu/issues/2170") todo!("Missing in wgpu: https://github.com/gfx-rs/wgpu/issues/2170")
} }

View file

@ -34,142 +34,142 @@ impl GPUSupportedLimits {
} }
impl GPUSupportedLimitsMethods for GPUSupportedLimits { impl GPUSupportedLimitsMethods for GPUSupportedLimits {
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturedimension1d /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturedimension1d>
fn MaxTextureDimension1D(&self) -> u32 { fn MaxTextureDimension1D(&self) -> u32 {
self.limits.max_texture_dimension_1d self.limits.max_texture_dimension_1d
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturedimension2d /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturedimension2d>
fn MaxTextureDimension2D(&self) -> u32 { fn MaxTextureDimension2D(&self) -> u32 {
self.limits.max_texture_dimension_2d self.limits.max_texture_dimension_2d
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturedimension3d /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturedimension3d>
fn MaxTextureDimension3D(&self) -> u32 { fn MaxTextureDimension3D(&self) -> u32 {
self.limits.max_texture_dimension_3d self.limits.max_texture_dimension_3d
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturearraylayers /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxtexturearraylayers>
fn MaxTextureArrayLayers(&self) -> u32 { fn MaxTextureArrayLayers(&self) -> u32 {
self.limits.max_texture_array_layers self.limits.max_texture_array_layers
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbindgroups /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbindgroups>
fn MaxBindGroups(&self) -> u32 { fn MaxBindGroups(&self) -> u32 {
self.limits.max_bind_groups self.limits.max_bind_groups
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbindingsperbindgroup /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbindingsperbindgroup>
fn MaxBindingsPerBindGroup(&self) -> u32 { fn MaxBindingsPerBindGroup(&self) -> u32 {
self.limits.max_bindings_per_bind_group self.limits.max_bindings_per_bind_group
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxdynamicuniformbuffersperpipelinelayout /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxdynamicuniformbuffersperpipelinelayout>
fn MaxDynamicUniformBuffersPerPipelineLayout(&self) -> u32 { fn MaxDynamicUniformBuffersPerPipelineLayout(&self) -> u32 {
self.limits.max_dynamic_uniform_buffers_per_pipeline_layout self.limits.max_dynamic_uniform_buffers_per_pipeline_layout
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxdynamicstoragebuffersperpipelinelayout /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxdynamicstoragebuffersperpipelinelayout>
fn MaxDynamicStorageBuffersPerPipelineLayout(&self) -> u32 { fn MaxDynamicStorageBuffersPerPipelineLayout(&self) -> u32 {
self.limits.max_dynamic_storage_buffers_per_pipeline_layout self.limits.max_dynamic_storage_buffers_per_pipeline_layout
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxsampledtexturespershaderstage /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxsampledtexturespershaderstage>
fn MaxSampledTexturesPerShaderStage(&self) -> u32 { fn MaxSampledTexturesPerShaderStage(&self) -> u32 {
self.limits.max_sampled_textures_per_shader_stage self.limits.max_sampled_textures_per_shader_stage
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxsamplerspershaderstage /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxsamplerspershaderstage>
fn MaxSamplersPerShaderStage(&self) -> u32 { fn MaxSamplersPerShaderStage(&self) -> u32 {
self.limits.max_samplers_per_shader_stage self.limits.max_samplers_per_shader_stage
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebufferspershaderstage /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebufferspershaderstage>
fn MaxStorageBuffersPerShaderStage(&self) -> u32 { fn MaxStorageBuffersPerShaderStage(&self) -> u32 {
self.limits.max_storage_buffers_per_shader_stage self.limits.max_storage_buffers_per_shader_stage
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragetexturespershaderstage /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragetexturespershaderstage>
fn MaxStorageTexturesPerShaderStage(&self) -> u32 { fn MaxStorageTexturesPerShaderStage(&self) -> u32 {
self.limits.max_storage_textures_per_shader_stage self.limits.max_storage_textures_per_shader_stage
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxuniformbufferspershaderstage /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxuniformbufferspershaderstage>
fn MaxUniformBuffersPerShaderStage(&self) -> u32 { fn MaxUniformBuffersPerShaderStage(&self) -> u32 {
self.limits.max_uniform_buffers_per_shader_stage self.limits.max_uniform_buffers_per_shader_stage
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxuniformbufferbindingsize /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxuniformbufferbindingsize>
fn MaxUniformBufferBindingSize(&self) -> u64 { fn MaxUniformBufferBindingSize(&self) -> u64 {
self.limits.max_uniform_buffer_binding_size as u64 self.limits.max_uniform_buffer_binding_size as u64
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebufferbindingsize /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebufferbindingsize>
fn MaxStorageBufferBindingSize(&self) -> u64 { fn MaxStorageBufferBindingSize(&self) -> u64 {
self.limits.max_storage_buffer_binding_size as u64 self.limits.max_storage_buffer_binding_size as u64
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-minuniformbufferoffsetalignment /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-minuniformbufferoffsetalignment>
fn MinUniformBufferOffsetAlignment(&self) -> u32 { fn MinUniformBufferOffsetAlignment(&self) -> u32 {
self.limits.min_uniform_buffer_offset_alignment self.limits.min_uniform_buffer_offset_alignment
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-minstoragebufferoffsetalignment /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-minstoragebufferoffsetalignment>
fn MinStorageBufferOffsetAlignment(&self) -> u32 { fn MinStorageBufferOffsetAlignment(&self) -> u32 {
self.limits.min_storage_buffer_offset_alignment self.limits.min_storage_buffer_offset_alignment
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxvertexbuffers /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxvertexbuffers>
fn MaxVertexBuffers(&self) -> u32 { fn MaxVertexBuffers(&self) -> u32 {
self.limits.max_vertex_buffers self.limits.max_vertex_buffers
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbuffersize /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbuffersize>
fn MaxBufferSize(&self) -> u64 { fn MaxBufferSize(&self) -> u64 {
self.limits.max_buffer_size self.limits.max_buffer_size
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxvertexattributes /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxvertexattributes>
fn MaxVertexAttributes(&self) -> u32 { fn MaxVertexAttributes(&self) -> u32 {
self.limits.max_vertex_attributes self.limits.max_vertex_attributes
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxvertexbufferarraystride /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxvertexbufferarraystride>
fn MaxVertexBufferArrayStride(&self) -> u32 { fn MaxVertexBufferArrayStride(&self) -> u32 {
self.limits.max_vertex_buffer_array_stride self.limits.max_vertex_buffer_array_stride
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxinterstageshadercomponents /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxinterstageshadercomponents>
fn MaxInterStageShaderComponents(&self) -> u32 { fn MaxInterStageShaderComponents(&self) -> u32 {
self.limits.max_inter_stage_shader_components self.limits.max_inter_stage_shader_components
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupstoragesize /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupstoragesize>
fn MaxComputeWorkgroupStorageSize(&self) -> u32 { fn MaxComputeWorkgroupStorageSize(&self) -> u32 {
self.limits.max_compute_workgroup_storage_size self.limits.max_compute_workgroup_storage_size
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeinvocationsperworkgroup /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeinvocationsperworkgroup>
fn MaxComputeInvocationsPerWorkgroup(&self) -> u32 { fn MaxComputeInvocationsPerWorkgroup(&self) -> u32 {
self.limits.max_compute_invocations_per_workgroup self.limits.max_compute_invocations_per_workgroup
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsizex /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsizex>
fn MaxComputeWorkgroupSizeX(&self) -> u32 { fn MaxComputeWorkgroupSizeX(&self) -> u32 {
self.limits.max_compute_workgroup_size_x self.limits.max_compute_workgroup_size_x
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsizey /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsizey>
fn MaxComputeWorkgroupSizeY(&self) -> u32 { fn MaxComputeWorkgroupSizeY(&self) -> u32 {
self.limits.max_compute_workgroup_size_y self.limits.max_compute_workgroup_size_y
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsizez /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsizez>
fn MaxComputeWorkgroupSizeZ(&self) -> u32 { fn MaxComputeWorkgroupSizeZ(&self) -> u32 {
self.limits.max_compute_workgroup_size_z self.limits.max_compute_workgroup_size_z
} }
/// https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsperdimension /// <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxcomputeworkgroupsperdimension>
fn MaxComputeWorkgroupsPerDimension(&self) -> u32 { fn MaxComputeWorkgroupsPerDimension(&self) -> u32 {
self.limits.max_compute_workgroups_per_dimension self.limits.max_compute_workgroups_per_dimension
} }

Some files were not shown because too many files have changed in this diff Show more