* Don't throw exceptions twice when converting to Algorithm object
Removes match statements like
```rust
let Ok(ConversionResult::Success(algorithm)) = Algorithm::new(cx, value.handle())
else {
return Err(Error::Syntax);
};
```
These don't cause issues if `Algorithm::new` returns `Ok(ConversionResult::Failure`,
but in the case of `Err(())` the implementation already called `throw_type_error`
and we must not throw an additional Syntax error, otherwise we'll crash.
Luckily, this case is already handled elsewhere by the
`value_from_js_object` macro.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Test that calling subtlecrypto methods with empty algorithm objects throws a TypeError
The WebCryptoAPI spec does not tell us which error to throw exactly, but
according to https://webidl.spec.whatwg.org/ it should be a TypeError.
This previously crashed servo.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* ohos: Add basic IME and keyboard support
- Add extremely basic support for keyboard events
- Add basic IME support
- Showing and hiding the IME
- inserting text
- deleting characters
- very basic configuration of the IME
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Apply suggestions from code review
Improve the log message
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
* Update ports/servoshell/egl/ohos.rs
Co-authored-by: Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
* ohos: Bump the minimum required SDK version to 5.0
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* ohos: Remove pub from callbacks
The callbacks don't need to be public, as we will be registering them.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Rename composition event
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* ohos: clippy in log
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* ohos: address some clippy warnings
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* ohos: Raise Error in mach if unsupported SDK version is used.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Add keyboard-types dependency for android
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
---------
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
Co-authored-by: Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com>
As mentioned in https://github.com/servo/servo/pull/34257
we should also lock the cargo-deny version in mach bootstrap.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* fix: allow form submission for input [type=image]
Signed-off-by: Shane Handley <shanehandley@fastmail.com>
* Fix comments and use existing can_gc where available
Signed-off-by: Shane Handley <shanehandley@fastmail.com>
---------
Signed-off-by: Shane Handley <shanehandley@fastmail.com>
* servoshell: fix --no-default-features
The Embeddertraits only contain `register_webxr` if the
webxr feature is enabled, hence we also need to guard
the trait implementation.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* ohos/android: Make webxr optional in servoshell
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* Support justify-self on absolutely positioned elements
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* updating test expectations
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
---------
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
These following four OHOS specific arguments are being passed by the
OHOS runtime to the EntryAbility, which then passess them on to Servo's
argument parsing logic:
* `--debugApp=false`
* `--send_to_erms_targetAppDistType=os_integration`
* `--send_to_erms_targetAppProvisionType=release`
* `--send_to_erms_targetBundleType=0`
When Servo's argument parsing logic encounters an unrecognized argument,
it terminates the process after logging an error to stderr (which is not
visible in hilog).
This patch simply filters out these arguments so the parsing logic
doesn't fail.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
In order to support size keywords in block layout, we may need to call
`inline_content_sizes()` in order to compute the min/max-content sizes.
But this required a mutable reference in order the update the cache,
and in various places we already had mutable references.
So this switches the cache into a RwLock to avoid needing mutable refs.
Note OnceCell wouldn't work because it's not thread-safe.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* bump napi-ohos* crates to 1.0.2
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* dependabot: group napi-ohos related updates
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
In most cases we already had a LazyCell anyways, since we could need the
value for multiple properties. Instead of passing a callback that forces
the evaluation of the LazyCell, it's simpler to just pass the LazyCell
directly.
Also, this way we no longer need mutable references.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
To compute the min-content and max-content inline sizes of a replaced
element, we were only using the aspect ratio to transfer definite block
sizes resulting from clamping the preferred block size between the min
and max block sizes.
However, if the preferred block size is indefinite, then we weren't
transfering the min and max through the aspect ratio.
This patch adds a `SizeConstraint` enum that can represent these cases,
and a `ConstraintSpace` struct analogous to `IndefiniteContainingBlock`
but with no inline size, and a `SizeConstraint` block size.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Add simple fling implementation
Add a simple fling implementation, which depends on a refresh tick from the
embedder.
Currently this refresh tick is only implemented for OpenHarmony
(using the vsync signal).
The fling implementation is very simple, without any fancy things like acceleration.
This can be improved in the future.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Multiply initial velocity with 2
This makes the experience much more snappy.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* address review comments
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* Rename constants and add todo
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* fmt
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* Add a few periods to make comments consistent
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Update napi-ohos and migrate away from deprecated `JsFunction`
and use the new `Function` and `build_threadsafe_function()`
methods.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
When a flex item stretches in the cross axis in a row flex, the flex
container layout should depend on block constraints. In this case the
cross axis is the block axis (assuming horizontal writing modes --
vertical are not yet supported). This changes fixes an issue where the
cached layout was used in this case when stretching should trigger a new
layout.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
* Implement NormalizedAlgorithm::get_key_length
This is a minimal implementation, which will make
the DeriveKey operation work for AES-CTR keys in
the future.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Implement SubtleCrypto.deriveKey
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update WPT expectations
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Rather than relying on dead-code elimination to remove
the function in production builds, it is better if it is
never included in the first place.
On OpenHarmony we never want to include these files into the
binary, since we always bundle the test files into the `.hap` as part of the build process.
The original comment got the condition inverted and in all
normal builds the function will be checked as usual.
There shouldn't be any additional value in checking the
correctness of `resources_for_tests()` in production builds.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>