diff --git a/bridge/CMakeLists.txt b/bridge/CMakeLists.txt index b63cf703c8..ca627ffa4a 100644 --- a/bridge/CMakeLists.txt +++ b/bridge/CMakeLists.txt @@ -558,7 +558,7 @@ if (${WEBF_JS_ENGINE} MATCHES "quickjs") out/qjs_union_double_sequencedouble.cc out/qjs_unionhtml_image_elementhtml_canvas_element.cc out/qjs_union_dom_stringcanvas_gradient.cc - out/qjs_union_sequencedoubledom_matrix_init.cc + out/qjs_union_sequencedoubledom_matrixdom_matrix_init.cc out/qjs_union_doubledom_point_init.cc out/canvas_types.cc out/qjs_html_button_element.cc diff --git a/bridge/core/geometry/dom_matrix.cc b/bridge/core/geometry/dom_matrix.cc index d49b44e15b..2ac5128208 100644 --- a/bridge/core/geometry/dom_matrix.cc +++ b/bridge/core/geometry/dom_matrix.cc @@ -8,7 +8,7 @@ namespace webf { DOMMatrix* DOMMatrix::Create(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state) { return MakeGarbageCollected<DOMMatrix>(context, init, exception_state); } @@ -27,7 +27,7 @@ DOMMatrix::DOMMatrix(webf::ExecutingContext* context, webf::ExceptionState& exce DOMMatrixReadOnly(context, exception_state) {} DOMMatrix::DOMMatrix(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state) : DOMMatrixReadOnly(context, init, exception_state) {} diff --git a/bridge/core/geometry/dom_matrix.d.ts b/bridge/core/geometry/dom_matrix.d.ts index 22b12d58ed..7a463af201 100644 --- a/bridge/core/geometry/dom_matrix.d.ts +++ b/bridge/core/geometry/dom_matrix.d.ts @@ -2,5 +2,5 @@ import {DOMMatrixInit} from "./dom_matrix_init"; import {DOMMatrixReadOnly} from "./dom_matrix_read_only"; interface DOMMatrix extends DOMMatrixReadOnly { - new(init?: number[] | DOMMatrixInit): DOMMatrix; + new(init?: number[] | DOMMatrix | DOMMatrixInit): DOMMatrix; } \ No newline at end of file diff --git a/bridge/core/geometry/dom_matrix.h b/bridge/core/geometry/dom_matrix.h index 5b2b93a4d0..9d4b6ca819 100644 --- a/bridge/core/geometry/dom_matrix.h +++ b/bridge/core/geometry/dom_matrix.h @@ -15,7 +15,7 @@ class DOMMatrix : public DOMMatrixReadOnly { public: using ImplType = DOMMatrix*; static DOMMatrix* Create(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state); static DOMMatrix* Create(ExecutingContext* context, ExceptionState& exception_state); @@ -27,7 +27,7 @@ class DOMMatrix : public DOMMatrixReadOnly { explicit DOMMatrix(ExecutingContext* context, ExceptionState& exception_state); explicit DOMMatrix(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state); explicit DOMMatrix(ExecutingContext* context, NativeBindingObject* native_binding_object); diff --git a/bridge/core/geometry/dom_matrix_read_only.cc b/bridge/core/geometry/dom_matrix_read_only.cc index d1f028b492..e8559551f5 100644 --- a/bridge/core/geometry/dom_matrix_read_only.cc +++ b/bridge/core/geometry/dom_matrix_read_only.cc @@ -13,7 +13,7 @@ namespace webf { DOMMatrixReadOnly* DOMMatrixReadOnly::Create(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state) { return MakeGarbageCollected<DOMMatrixReadOnly>(context, init, exception_state); } @@ -44,7 +44,7 @@ DOMMatrix* DOMMatrixReadOnly::fromMatrix(ExecutingContext* context, } DOMMatrixReadOnly::DOMMatrixReadOnly(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state) : BindingObject(context->ctx()) { @@ -54,6 +54,13 @@ DOMMatrixReadOnly::DOMMatrixReadOnly(ExecutingContext* context, GetExecutingContext()->dartMethodPtr()->createBindingObject(GetExecutingContext()->isDedicated(), GetExecutingContext()->contextId(), bindingObject(), CreateBindingObjectType::kCreateDOMMatrix, arguments, 1); + } else if(init->IsDOMMatrix()) { + auto domMatrix = init->GetAsDOMMatrix(); + NativeValue arguments[1]; + arguments[0] = NativeValueConverter<NativeTypePointer<DOMMatrix>>::ToNativeValue(init->GetAsDOMMatrix()); + GetExecutingContext()->dartMethodPtr()->createBindingObject(GetExecutingContext()->isDedicated(), + GetExecutingContext()->contextId(), bindingObject(), + CreateBindingObjectType::kCreateDOMMatrix, arguments, 1); } else if (init->IsDOMMatrixInit()) { std::vector<double> domMatrixInitVectorDouble; auto domMatrixInit = init->GetAsDOMMatrixInit(); diff --git a/bridge/core/geometry/dom_matrix_read_only.d.ts b/bridge/core/geometry/dom_matrix_read_only.d.ts index a81735efb2..ba46ce76a1 100644 --- a/bridge/core/geometry/dom_matrix_read_only.d.ts +++ b/bridge/core/geometry/dom_matrix_read_only.d.ts @@ -49,5 +49,5 @@ interface DOMMatrixReadOnly { // fromFloat32Array(): StaticMethod<DOMMatrix>; // fromFloat64Array(): StaticMethod<DOMMatrix>; fromMatrix(matrix: DOMMatrix): StaticMethod<DOMMatrix>; - new(init?: number[] | DOMMatrixInit): DOMMatrixReadOnly; + new(init?: number[] | DOMMatrix | DOMMatrixInit): DOMMatrixReadOnly; } \ No newline at end of file diff --git a/bridge/core/geometry/dom_matrix_read_only.h b/bridge/core/geometry/dom_matrix_read_only.h index dc489f6e49..99138cad4f 100644 --- a/bridge/core/geometry/dom_matrix_read_only.h +++ b/bridge/core/geometry/dom_matrix_read_only.h @@ -8,7 +8,7 @@ #include "bindings/qjs/script_wrappable.h" #include "core/binding_object.h" #include "qjs_dom_matrix_init.h" -#include "qjs_union_sequencedoubledom_matrix_init.h" +#include "qjs_union_sequencedoubledom_matrixdom_matrix_init.h" namespace webf { @@ -21,7 +21,7 @@ class DOMMatrixReadOnly : public BindingObject { public: using ImplType = DOMMatrixReadOnly*; static DOMMatrixReadOnly* Create(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state); static DOMMatrixReadOnly* Create(ExecutingContext* context, ExceptionState& exception_state); @@ -29,7 +29,7 @@ class DOMMatrixReadOnly : public BindingObject { DOMMatrixReadOnly() = delete; explicit DOMMatrixReadOnly(ExecutingContext* context, - const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixInit>& init, + const std::shared_ptr<QJSUnionSequenceDoubleDOMMatrixDOMMatrixInit>& init, ExceptionState& exception_state); explicit DOMMatrixReadOnly(ExecutingContext* context, ExceptionState& exception_state);