getPointerTypeOfBindingObject function

JSPointerType getPointerTypeOfBindingObject(
  1. BindingObject bindingObject
)

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;
}