aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/promise.rs
diff options
context:
space:
mode:
authorSamson <16504129+sagudev@users.noreply.github.com>2024-08-27 09:54:55 +0200
committerGitHub <noreply@github.com>2024-08-27 07:54:55 +0000
commit7fce24f9d54a015db7ee813fc16c74d2feacbb12 (patch)
treee344ef00f1f1b99b59158b789c064fda52b495b6 /components/script/dom/promise.rs
parentbb5926b3291877fb47d44ea376881c2d52701bbf (diff)
downloadservo-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.rs18
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 {