summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-05-20 09:47:09 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-06-07 11:15:42 +0000
commit189d4fd8fad9e3c776873be51938cd31a42b6177 (patch)
tree6497caeff5e383937996768766ab3bb2081a40b2 /chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.cc
parent8bc75099d364490b22f43a7ce366b366c08f4164 (diff)
downloadqtwebengine-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.cc28
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>