diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2024-08-27 09:54:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-27 07:54:55 +0000 |
commit | 7fce24f9d54a015db7ee813fc16c74d2feacbb12 (patch) | |
tree | e344ef00f1f1b99b59158b789c064fda52b495b6 /components/script/dom/promise.rs | |
parent | bb5926b3291877fb47d44ea376881c2d52701bbf (diff) | |
download | servo-7fce24f9d54a015db7ee813fc16c74d2feacbb12.tar.gz servo-7fce24f9d54a015db7ee813fc16c74d2feacbb12.zip |
webgpu: Sync `GPUBuffer` (#33154)
* More helpers on `Promise`
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Sync `GPUBuffer`
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Set some good expectations
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Some bad expect
also on firefox
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Extract DataBlock, DataView impl from GPUBuffer
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Fix size check to work on 32bit platforms
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Diffstat (limited to 'components/script/dom/promise.rs')
-rw-r--r-- | components/script/dom/promise.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs index 7c98ddbd2ad..38e5a9112ac 100644 --- a/components/script/dom/promise.rs +++ b/components/script/dom/promise.rs @@ -52,6 +52,12 @@ pub struct Promise { permanent_js_root: Heap<JSVal>, } +impl PartialEq for Promise { + fn eq(&self, other: &Self) -> bool { + self.reflector == other.reflector + } +} + /// Private helper to enable adding new methods to `Rc<Promise>`. trait PromiseHelper { fn initialize(&self, cx: SafeJSContext); @@ -232,6 +238,18 @@ impl Promise { } #[allow(unsafe_code)] + pub fn is_rejected(&self) -> bool { + let state = unsafe { GetPromiseState(self.promise_obj()) }; + matches!(state, PromiseState::Rejected) + } + + #[allow(unsafe_code)] + pub fn is_pending(&self) -> bool { + let state = unsafe { GetPromiseState(self.promise_obj()) }; + matches!(state, PromiseState::Pending) + } + + #[allow(unsafe_code)] pub fn promise_obj(&self) -> HandleObject { let obj = self.reflector().get_jsobject(); unsafe { |