This adds the WebIDl and implementation for the HTMLMarqueeElement type.
The `<marquee>` HTML is now assigned this type.
None of the contained properties or methods are implemented yet.
Testing: Existing WPTs
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
Move CookieStore methods from CanGc to &mut JSContext.
Testing: Just refactor.
Fixes: Part of #42638
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Move `CSSGroupingRule` methods from `CanGc` to `&mut JSContext`.
Testing: Just refactor.
Fixes: Part of #42638
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Some values of the WebIDL were wrapped two types in nullable (from not
having `required` and having a `?`). Simplify that so we don't get
`Option<Option<...>>`.
Testing: Existing tests
Part of: #36027
Depends on: #43566
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Move `CSSStyleRule::Style` from `CanGc` to `&mut JSContext`. Also fix
the caller in `devtools.rs` to pass `cx` directly.
Testing: Refactoring, It compiles.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Moves the cleanup logic to a separate helper struct to comply with the
prohibition of manual `Drop` implementations for DOM types.
Testing: WebGL tests just cover its cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
Move `CSSKeyframesRule` methods (`CssRules`, `AppendRule`, `DeleteRule`,
`FindRule`) from `CanGc` to `&mut JSContext`.
Testing: It compiles.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Move `CSSNestedDeclarations::Style` from `CanGc` to `&mut JSContext`.
Testing: It compiles.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Follow up of #43526. This addresses Nico's comment:
https://github.com/servo/servo/pull/43526#issuecomment-4104953308
- `bluetooth_traits` -> `servo_bluetooth_traits`
- `base` -> `servo_base`
- `bluetooth` -> `servo_bluetooth`
- `background_hang_monitor` -> `servo_background_hang_monitor`
Testing: This should not change any behaviour.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Implement TurboSHAKE algorithm in our WebCrypto API. This includes a
WebIDL dictionary `TurboSHAKE` and the "digest" operation of TurboSHAKE.
Specification: https://wicg.github.io/webcrypto-modern-algos/#turboshake
Testing: Pass TurboSHAKE-related WPT tests.
Fixes: Part of #40687
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Move `CSSKeyframeRule::Style` from `CanGc` to `&mut JSContext`.
Testing: Just a refactor, Existing tests suffice.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Moves the cleanup logic to a separate helper struct to comply with the
prohibition of manual `Drop` implementations for DOM types.
Testing: WebGL tests just cover its parts
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
Pass `&mut JSContext` to `CustomElementReaction::invoke` and
`upgrade_element` algorithm.
Testing: A successful build is enough
Part of #40600
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Modern Algorithms in WebCrypto API specification was updated to rename
the `length` parameter of the `CShakeParams` dictionary to
`outputLength`. We update our implementation accordingly.
Specification update:
41434899e8
WPT update:
0acea989ac
The final step of the "digest" operation of cSHAKE was also updated to
clarify that it outputs a byte sequence, rather than a bit sequence.
This matches our current implementation. No change in our implementation
is needed. The specification text in our code is updated.
Specification update:
5dd19e3a9f
Testing: Pass updated WPT tests.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
script: Add longdesc reflection to HTMLIFrameElement and
HTMLFrameElement
Also corrects the reflection for HTMLImageElement to use USVString.
Testing: Covered by WPTs
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
Add a check for a valid key path when create index on idb object store
Testing: `./mach test-wpt
tests/wpt/tests/IndexedDB/keypath_invalid.any.js`
Fixes: #42434
---------
Signed-off-by: Jerens Lensun <jerensslensun@gmail.com>
This fixes two assertions observed in Servo using debug mozjs builds:
* `Assertion failure: !IsInsideNursery(obj)` for every promise object
reflected into Rust code
* `Missing calls to JS::RemoveAssociatedMemory` when shutting down the
browser
Testing: Verified locally that WPT tests can run to completion in debug
mozjs builds, but we don't run those on CI.
Fixes: #43486
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Previously arrays were falling back to Object previewer which was
showing indices as properties- which was not correct. This PR implements
dedicated `ArrayPreviewer` that follows Firefox's `ArrayLike` pattern.
Currently array preview support only length display, it does not
implement showing array items yet.
Now(Correct and follows Firefox pattern, Array items coming in a
follow-up PR):
<img width="510" height="167" alt="image"
src="https://github.com/user-attachments/assets/a51f04d4-333c-4d7c-8159-18121c967670"
/>
Before(We shouldn't see these values- it's incorrect):
<img width="1294" height="721" alt="image"
src="https://github.com/user-attachments/assets/2218a622-c791-4436-958e-1a5553de7864"
/>
Testing: Current tests are passing.
Fixes: Part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Fixes the following error:
```
error: failed to verify package tarball
Caused by:
Source directory was modified by build.rs during cargo publish. Build scripts should not modify anything outside of OUT_DIR.
Added: /Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/codegen/__pycache__
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/codegen/__pycache__/codegen.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/codegen/__pycache__/configuration.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/WebIDL/__pycache__
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/WebIDL/__pycache__/WebIDL.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__/__init__.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__/lex.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__/yacc.cpython-311.pyc
```
Testing: Manual testing. The same approach was already successfully
applied in `mozjs`.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Add further missing repository keys / descriptions, which I missed in
#43451 due to a suboptimal grep (assuming that rust-version.workspace is
always the last item).
Additionally fix crate self-references, which caused cargo-publish to
fail, due to it trying to fetch the crate from crates.io.
When specifying the current crate in `[dev-dependencies]` to enable a
test feature or similar, apparently one should not use `workspace =
true` and instead use `path`.
This requires extending the previously added `tidy` check, to allow
`path` dependencies in this specific case outside of the workspace
Cargo.toml.
Testing: Covered by existing tests
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Instead of always doing the newline fixup on the `<textarea>`
placeholder, only do it when the placeholder attribute itself changes.
This avoids doing string replacements when they are not necessary (such
as when a `<textarea>` switches from having text to only having the
placeholder and viceversa).
In addition make it so that `DOMString::clear` preserves the string
allocation when called.
Testing: This is just a small optimization so testing should not be
necessary. Existing behavior is verified via WPT tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Pass `&mut JsContext` to `TransformStreamDefaultController::enqueue`, in
preparation of porting the remaining BlobMethods.
Testing: Just a refactor, ./mach test-unit still passes.
Fixes: Part of #42638
---------
Signed-off-by: Uiniel <174327181+uiniel@users.noreply.github.com>
Pass `&mut JSContext` to `ReadableStream::cancel`, in preparation of
porting the remaining `BlobMethods`.
Testing: Just a refactor, ./mach test-unit still passes.
Fixes: Part of #42638
Signed-off-by: Uiniel <174327181+uiniel@users.noreply.github.com>
Pass `&mut JSContext` and `&mut CurrentRealm` to more functions in
`dom/stream`, focusing on functions that need to be ported to finish
porting the remaining methods in `Blob`.
Testing: Just a refactor, ./mach test-unit still passes.
Fixes: Part of #42638
---------
Signed-off-by: Uiniel <174327181+uiniel@users.noreply.github.com>
Correct data type of poster in `HTMLVideoElement` interface
Successful compilation is enough to verify the change.
Testing: `tests/wpt/meta/html/dom/reflection-embedded.html`
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
This change implements showing scope variable in Debugger tab. This is
still early and we have more work to do.
Next step is building correct data structure and showing different types
of variables.
Testing: Manual as well as current tests are passing.
Fixes: part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Mission No.2
Divided into three parts
- Import `js::context::JSContext;` and use it. This is fine as we
already renamed the traditional one.
- Major mission of porting
- Add space between functions
Testing: It compiles
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Implementing `Drop` for DOM types is being forbidden. This moves the
resource cleanup logic for `GPUShaderModule`, `GPUTexture`, and
`GPUTextureView` to separate helper structs and removes the
`allowDropImpl` flag from the bindings configuration.
Testing: WebGpu tests just cover their cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
In order to prepare for publishing this PR does the following steps (see
commits):
- Move all `path` dependencies to the workspace Cargo.toml, and
reference that.
- Move all path dependencies in the workspace Cargo.toml into a
dedicated section, to make bumping version numbers easier later.
- Add the version requirement. Note that we currently only version bump
servoshell. There was agreement to version everything with the same
version as servoshell, but that be done in a follow-up. The diff is
already large enough as is.
- Add a tidy lint to catch `path` usages outside the root Cargo.toml. I
switched to [`tomllib`] (which was added to the python stdlib in 3.11),
since the third-party `toml` library failed to parse Cargo.toml files
with `workspace.version` (did not like the `.` in a `key`).
[`tomllib`]: https://docs.python.org/3/library/tomllib.html
Testing: Should be covered by regular CI testing.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Also rename the method and consolidate the sink to be consistent with
both `TrustedHTML` and `TrustedScript`
Part of #42638
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>