add_gin_converter_support_for_arraybufferview.patch 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
  2. From: Jeremy Rose <[email protected]>
  3. Date: Wed, 8 Mar 2023 14:53:17 -0800
  4. Subject: add gin::Converter support for ArrayBufferView
  5. This should be upstreamed.
  6. diff --git a/gin/converter.cc b/gin/converter.cc
  7. index 04bfeb77157ea168de6a382852e7163e0f8d9949..c4d0c2d332f2e09bfa411998abe4c172b135ca23 100644
  8. --- a/gin/converter.cc
  9. +++ b/gin/converter.cc
  10. @@ -20,6 +20,7 @@
  11. #include "v8/include/v8-value.h"
  12. using v8::ArrayBuffer;
  13. +using v8::ArrayBufferView;
  14. using v8::External;
  15. using v8::Function;
  16. using v8::Int32;
  17. @@ -244,6 +245,20 @@ bool Converter<Local<ArrayBuffer>>::FromV8(Isolate* isolate,
  18. return true;
  19. }
  20. +Local<Value> Converter<Local<ArrayBufferView>>::ToV8(Isolate* isolate,
  21. + Local<ArrayBufferView> val) {
  22. + return val.As<Value>();
  23. +}
  24. +
  25. +bool Converter<Local<ArrayBufferView>>::FromV8(Isolate* isolate,
  26. + Local<Value> val,
  27. + Local<ArrayBufferView>* out) {
  28. + if (!val->IsArrayBufferView())
  29. + return false;
  30. + *out = Local<ArrayBufferView>::Cast(val);
  31. + return true;
  32. +}
  33. +
  34. Local<Value> Converter<Local<External>>::ToV8(Isolate* isolate,
  35. Local<External> val) {
  36. return val.As<Value>();
  37. diff --git a/gin/converter.h b/gin/converter.h
  38. index 828e59f4640e84ae9e4517b9ed9bc13b154fa9f2..c3d97c4e46fe47076299e475be7eec74cbc5783c 100644
  39. --- a/gin/converter.h
  40. +++ b/gin/converter.h
  41. @@ -190,6 +190,15 @@ struct GIN_EXPORT Converter<v8::Local<v8::ArrayBuffer> > {
  42. v8::Local<v8::ArrayBuffer>* out);
  43. };
  44. +template<>
  45. +struct GIN_EXPORT Converter<v8::Local<v8::ArrayBufferView> > {
  46. + static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
  47. + v8::Local<v8::ArrayBufferView> val);
  48. + static bool FromV8(v8::Isolate* isolate,
  49. + v8::Local<v8::Value> val,
  50. + v8::Local<v8::ArrayBufferView>* out);
  51. +};
  52. +
  53. template<>
  54. struct GIN_EXPORT Converter<v8::Local<v8::External> > {
  55. static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,