| Index: third_party/WebKit/Source/modules/bluetooth/BluetoothGATTCharacteristic.h | 
| diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothGATTCharacteristic.h b/third_party/WebKit/Source/modules/bluetooth/BluetoothGATTCharacteristic.h | 
| index 92d78eb0d2ac2b27db1035081ee4321784f641b3..e182232a1009726cec4464d484e2fa25eb0457d7 100644 | 
| --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothGATTCharacteristic.h | 
| +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothGATTCharacteristic.h | 
| @@ -6,8 +6,10 @@ | 
| #define BluetoothGATTCharacteristic_h | 
|  | 
| #include "bindings/core/v8/ScriptWrappable.h" | 
| +#include "core/dom/ActiveDOMObject.h" | 
| #include "core/dom/DOMArrayPiece.h" | 
| #include "platform/heap/Handle.h" | 
| +#include "public/platform/modules/bluetooth/WebBluetoothGATTCharacteristic.h" | 
| #include "public/platform/modules/bluetooth/WebBluetoothGATTCharacteristicInit.h" | 
| #include "wtf/OwnPtr.h" | 
| #include "wtf/PassOwnPtr.h" | 
| @@ -15,6 +17,7 @@ | 
|  | 
| namespace blink { | 
|  | 
| +class ExecutionContext; | 
| class ScriptPromise; | 
| class ScriptPromiseResolver; | 
| class ScriptState; | 
| @@ -29,25 +32,43 @@ class ScriptState; | 
| // CallbackPromiseAdapter class comments. | 
| class BluetoothGATTCharacteristic final | 
| : public GarbageCollectedFinalized<BluetoothGATTCharacteristic> | 
| -    , public ScriptWrappable { | 
| +    , public ScriptWrappable | 
| +    , public ActiveDOMObject | 
| +    , public WebBluetoothGATTCharacteristic { | 
| +    USING_PRE_FINALIZER(BluetoothGATTCharacteristic, dispose); | 
| +    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(BluetoothGATTCharacteristic); | 
| DEFINE_WRAPPERTYPEINFO(); | 
| public: | 
| -    explicit BluetoothGATTCharacteristic(PassOwnPtr<WebBluetoothGATTCharacteristicInit>); | 
| +    explicit BluetoothGATTCharacteristic(ExecutionContext*, PassOwnPtr<WebBluetoothGATTCharacteristicInit>); | 
|  | 
| // Interface required by CallbackPromiseAdapter. | 
| using WebType = OwnPtr<WebBluetoothGATTCharacteristicInit>; | 
| static BluetoothGATTCharacteristic* take(ScriptPromiseResolver*, PassOwnPtr<WebBluetoothGATTCharacteristicInit>); | 
|  | 
| +    // ActiveDOMObject interface. | 
| +    void stop() override; | 
| + | 
| +    // USING_PRE_FINALIZER interface. | 
| +    // Called before the object gets garbage collected. | 
| +    void dispose(); | 
| + | 
| +    // Notify our embedder that we should stop any notifications. | 
| +    // The function only notifies the embedder once. | 
| +    void notifyCharacteristicObjectRemoved(); | 
| + | 
| // Interface required by garbage collection. | 
| -    DEFINE_INLINE_TRACE() { } | 
| +    DECLARE_VIRTUAL_TRACE(); | 
|  | 
| // IDL exposed interface: | 
| String uuid() { return m_webCharacteristic->uuid; } | 
| ScriptPromise readValue(ScriptState*); | 
| ScriptPromise writeValue(ScriptState*, const DOMArrayPiece&); | 
| +    ScriptPromise startNotifications(ScriptState*); | 
| +    ScriptPromise stopNotifications(ScriptState*); | 
|  | 
| private: | 
| OwnPtr<WebBluetoothGATTCharacteristicInit> m_webCharacteristic; | 
| +    bool m_stopped; | 
| }; | 
|  | 
| } // namespace blink | 
|  |