summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/typed_arrays/dom_data_view.cc
diff options
context:
space:
mode:
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.cc19
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