v157 · web bluetooth · live probe · no hardware needed

Prototype chain probe

The whole feature is a change to an interface's ancestry, and ancestry is inspectable from any page: no device, no pairing, no permission prompt. Walk the real chain, run the exact checks, and see every Web Bluetooth interface's parentage side by side.

The headline check

probing…

Walk the chain

Each press runs one real Object.getPrototypeOf() step from BluetoothRemoteGATTServer.prototype, listing that link's own properties as it goes.

  1. Not started. In a browser without Web Bluetooth this walk reports the missing interface instead.

The exact contracts

The whole family

Which Web Bluetooth interfaces inherit EventTarget in this browser?
Interfacedefined?: EventTarget?

The spec says Bluetooth, BluetoothDevice, BluetoothRemoteGATTService and BluetoothRemoteGATTCharacteristic all extend EventTarget — only the passive BluetoothRemoteGATTDescriptor (no events) legitimately answers "no". Chrome 157 moves the server from the wrong column to the right one; if your build also shows "NO" for BluetoothRemoteGATTService, you are looking at a real spec-vs-implementation gap this table just measured.

code path

// Contract 1: ancestry
BluetoothRemoteGATTServer.prototype instanceof EventTarget;          // true
Object.getPrototypeOf(BluetoothRemoteGATTServer.prototype)
  === EventTarget.prototype;                                         // true

// Contract 2: the methods are INHERITED, not redefined copies
BluetoothRemoteGATTServer.prototype.addEventListener
  === EventTarget.prototype.addEventListener;                        // true
Object.getOwnPropertyNames(BluetoothRemoteGATTServer.prototype)
  .includes("addEventListener");                                     // false

// Contract 3: the first server-level event has its IDL handler
"onmaxwritewithoutresponsesizechanged" in
  BluetoothRemoteGATTServer.prototype;                               // true

see also