diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/typed_arrays/dom_data_view.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/typed_arrays/dom_data_view.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/core/typed_arrays/dom_data_view.cc b/chromium/third_party/blink/renderer/core/typed_arrays/dom_data_view.cc index 4c8dbaaac99..1e22255a331 100644 --- a/chromium/third_party/blink/renderer/core/typed_arrays/dom_data_view.cc +++ b/chromium/third_party/blink/renderer/core/typed_arrays/dom_data_view.cc @@ -5,6 +5,7 @@ #include "third_party/blink/renderer/core/typed_arrays/dom_data_view.h" #include "base/numerics/checked_math.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/platform/bindings/dom_data_store.h" @@ -35,4 +36,22 @@ v8::Local<v8::Value> DOMDataView::Wrap(v8::Isolate* isolate, return AssociateWithWrapper(isolate, wrapper_type_info, wrapper); } +v8::MaybeLocal<v8::Value> DOMDataView::WrapV2(ScriptState* script_state) { + DCHECK(!DOMDataStore::ContainsWrapper(this, script_state->GetIsolate())); + + const WrapperTypeInfo* wrapper_type_info = this->GetWrapperTypeInfo(); + v8::Local<v8::Value> v8_buffer; + if (!ToV8Traits<DOMArrayBuffer>::ToV8(script_state, buffer()) + .ToLocal(&v8_buffer)) { + return v8::MaybeLocal<v8::Value>(); + } + DCHECK(v8_buffer->IsArrayBuffer()); + + v8::Local<v8::Object> wrapper = v8::DataView::New( + v8_buffer.As<v8::ArrayBuffer>(), byteOffset(), byteLength()); + + return AssociateWithWrapper(script_state->GetIsolate(), wrapper_type_info, + wrapper); +} + } // namespace blink |