diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-05-20 09:47:09 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-06-07 11:15:42 +0000 |
commit | 189d4fd8fad9e3c776873be51938cd31a42b6177 (patch) | |
tree | 6497caeff5e383937996768766ab3bb2081a40b2 /chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc | |
parent | 8bc75099d364490b22f43a7ce366b366c08f4164 (diff) | |
download | qtwebengine-chromium-189d4fd8fad9e3c776873be51938cd31a42b6177.tar.gz |
BASELINE: Update Chromium to 90.0.4430.221
Change-Id: Iff4d9d18d2fcf1a576f3b1f453010f744a232920
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc b/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc index 9ca42d46ed5..68748957739 100644 --- a/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc +++ b/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h" +#include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h" #include "third_party/blink/renderer/bindings/core/v8/v8_array_buffer.h" #include "third_party/blink/renderer/bindings/core/v8/v8_big_int_64_array.h" #include "third_party/blink/renderer/bindings/core/v8/v8_big_uint_64_array.h" @@ -45,6 +46,33 @@ v8::Local<v8::Value> DOMTypedArray<T, V8TypedArray, clamped>::Wrap( return AssociateWithWrapper(isolate, wrapper_type_info, wrapper); } +template <typename T, typename V8TypedArray, bool clamped> +v8::MaybeLocal<v8::Value> DOMTypedArray<T, V8TypedArray, clamped>::WrapV2( + ScriptState* script_state) { + DCHECK(!DOMDataStore::ContainsWrapper(this, script_state->GetIsolate())); + + const WrapperTypeInfo* wrapper_type_info = this->GetWrapperTypeInfo(); + DOMArrayBufferBase* buffer = this->BufferBase(); + v8::Local<v8::Value> v8_buffer; + if (!ToV8Traits<DOMArrayBufferBase>::ToV8(script_state, buffer) + .ToLocal(&v8_buffer)) { + return v8::MaybeLocal<v8::Value>(); + } + DCHECK_EQ(IsShared(), v8_buffer->IsSharedArrayBuffer()); + + v8::Local<v8::Object> wrapper; + if (IsShared()) { + wrapper = V8TypedArray::New(v8_buffer.As<v8::SharedArrayBuffer>(), + byteOffset(), length()); + } else { + wrapper = V8TypedArray::New(v8_buffer.As<v8::ArrayBuffer>(), byteOffset(), + length()); + } + + return AssociateWithWrapper(script_state->GetIsolate(), wrapper_type_info, + wrapper); +} + // TODO(tasak): The following traits should be auto-generated by binding // script and should be placed in bindings/core/v8/V8*Array.h. template <typename ArrayType> |