refactor: make node Buffers more friendly to base::span
/ std::span
(#46778)
* refactor: add electron::Buffer namespace; move the Buffer as_byte_span() into it Co-authored-by: Charles Kerr <charles@charleskerr.com> * feat: add electron::Buffer::Copy() a span-friendly version of node::Buffer::Copy() Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in electron_api_base_window.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in electron_api_data_pipe_holder.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in electron_api_safe_storage.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in electron_api_clipboard.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in osr_converter.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in electron_api_native_image.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in net_converter.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: use electron::Buffer::Copy() in electron_api_web_contents.cc Co-authored-by: Charles Kerr <charles@charleskerr.com> * refactor: make NewEmptyBuffer() return a Local<Value> Co-authored-by: Charles Kerr <charles@charleskerr.com> --------- Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
parent
4e8c09f46a
commit
5a4ef1cc33
10 changed files with 93 additions and 72 deletions
|
@ -31,6 +31,7 @@
|
|||
#include "shell/common/gin_helper/object_template_builder.h"
|
||||
#include "shell/common/gin_helper/persistent_dictionary.h"
|
||||
#include "shell/common/node_includes.h"
|
||||
#include "shell/common/node_util.h"
|
||||
#include "shell/common/options_switches.h"
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
|
@ -72,8 +73,9 @@ namespace {
|
|||
|
||||
#if !BUILDFLAG(IS_MAC)
|
||||
// Converts binary data to Buffer.
|
||||
v8::Local<v8::Value> ToBuffer(v8::Isolate* isolate, void* val, int size) {
|
||||
auto buffer = node::Buffer::Copy(isolate, static_cast<char*>(val), size);
|
||||
v8::Local<v8::Value> ToBuffer(v8::Isolate* isolate,
|
||||
const base::span<const uint8_t> val) {
|
||||
auto buffer = electron::Buffer::Copy(isolate, val);
|
||||
if (buffer.IsEmpty())
|
||||
return v8::Null(isolate);
|
||||
else
|
||||
|
@ -348,8 +350,8 @@ void BaseWindow::OnWindowMessage(UINT message, WPARAM w_param, LPARAM l_param) {
|
|||
v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
|
||||
v8::HandleScope scope(isolate);
|
||||
messages_callback_map_[message].Run(
|
||||
ToBuffer(isolate, static_cast<void*>(&w_param), sizeof(WPARAM)),
|
||||
ToBuffer(isolate, static_cast<void*>(&l_param), sizeof(LPARAM)));
|
||||
ToBuffer(isolate, base::byte_span_from_ref(w_param)),
|
||||
ToBuffer(isolate, base::byte_span_from_ref(l_param)));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -786,7 +788,7 @@ v8::Local<v8::Value> BaseWindow::GetNativeWindowHandle() {
|
|||
// https://chromium-review.googlesource.com/c/chromium/src/+/1253094/ has
|
||||
// landed
|
||||
NativeWindowHandle handle = window_->GetNativeWindowHandle();
|
||||
return ToBuffer(isolate(), &handle, sizeof(handle));
|
||||
return ToBuffer(isolate(), base::byte_span_from_ref(handle));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue