getPointerTypeOfBindingObject function
Implementation
JSPointerType getPointerTypeOfBindingObject(BindingObject bindingObject) {
if (bindingObject.pointer?.ref.instance != nullptr) {
return JSPointerType.nativeBindingObject;
}
if (bindingObject is DOMMatrix) {
return JSPointerType.domMatrix;
} else if (bindingObject is BoundingClientRect) {
return JSPointerType.boundingClientRect;
} else if (bindingObject is TextMetrics) {
return JSPointerType.textMetrics;
} else if (bindingObject is Screen) {
return JSPointerType.screen;
} else if (bindingObject is ComputedCSSStyleDeclaration) {
return JSPointerType.computedCSSStyleDeclaration;
} else if (bindingObject is DOMPoint) {
return JSPointerType.domPoint;
} else if (bindingObject is CanvasGradient) {
return JSPointerType.canvasGradient;
} else if (bindingObject is CanvasPattern) {
return JSPointerType.canvasPattern;
}
// Dart-side CSSOM binding objects are backed by NativeBindingObject pointers
// allocated in Dart. They must be treated as NativeBindingObject so the JS
// side can wrap them with DartBindingObject (see script_value.cc).
if (bindingObject is CSSStyleSheetBinding ||
bindingObject is CSSRuleListBinding ||
bindingObject is CSSRuleBinding ||
bindingObject is CSSLayerBlockRuleBinding ||
bindingObject is CSSLayerStatementRuleBinding) {
return JSPointerType.nativeBindingObject;
}
return JSPointerType.others;
}