mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-01 01:38:07 +08:00
This replaces https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/web_tests/http/tests/devtools/startup/dynamic-scripts.js;drc=77578ccb4082ae20a9326d9e673225f1189ebb63?originalUrl=https:%2F%2Fcs.chromium.org%2F as an e2etest It updates the server to properly serve CSS files. It also updates the sources-helpers to decouple the "opening the sources tab" and "opening a source file in the code editor". This allows the new test to only use the former and not the latter. R=aerotwist@chromium.org Bug: 1044632 Change-Id: I22597454117a5ae05a7bcd541389a9ce1424230e Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2083316 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Paul Lewis <aerotwist@chromium.org>
86 lines
2.1 KiB
JavaScript
86 lines
2.1 KiB
JavaScript
// Copyright 2019 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
/**
|
|
* @typedef {!{eventTarget: !EventTarget, eventType: (string|symbol), thisObject: (!Object|undefined), listener: function(!EventTargetEvent):void}}
|
|
*/
|
|
// @ts-ignore TS can't pick up that EventDescriptor is of this type
|
|
export let EventDescriptor;
|
|
|
|
/**
|
|
* @param {!Array<!EventDescriptor>} eventList
|
|
*/
|
|
export function removeEventListeners(eventList) {
|
|
for (const eventInfo of eventList) {
|
|
eventInfo.eventTarget.removeEventListener(eventInfo.eventType, eventInfo.listener, eventInfo.thisObject);
|
|
}
|
|
// Do not hold references on unused event descriptors.
|
|
eventList.splice(0);
|
|
}
|
|
|
|
/**
|
|
* @interface
|
|
*/
|
|
export class EventTarget {
|
|
/**
|
|
* @param {symbol} eventType
|
|
* @param {function(!EventTargetEvent):void} listener
|
|
* @param {!Object=} thisObject
|
|
* @return {!EventDescriptor}
|
|
*/
|
|
addEventListener(eventType, listener, thisObject) {
|
|
throw new Error('not implemented');
|
|
}
|
|
|
|
/**
|
|
* @param {string|symbol} eventType
|
|
* @return {!Promise<*>}
|
|
*/
|
|
once(eventType) {
|
|
throw new Error('not implemented');
|
|
}
|
|
|
|
/**
|
|
* @param {string|symbol} eventType
|
|
* @param {function(!EventTargetEvent):void} listener
|
|
* @param {!Object=} thisObject
|
|
*/
|
|
removeEventListener(eventType, listener, thisObject) {
|
|
throw new Error('not implemented');
|
|
}
|
|
|
|
/**
|
|
* @param {symbol} eventType
|
|
* @return {boolean}
|
|
*/
|
|
hasEventListeners(eventType) {
|
|
throw new Error('not implemented');
|
|
}
|
|
|
|
/**
|
|
* @param {symbol} eventType
|
|
* @param {*=} eventData
|
|
*/
|
|
dispatchEventToListeners(eventType, eventData) {
|
|
}
|
|
}
|
|
|
|
EventTarget.removeEventListeners = removeEventListeners;
|
|
|
|
/**
|
|
* @param {string} name
|
|
* @param {*} detail
|
|
* @param {!HTMLElement | !Window} target
|
|
*/
|
|
export function fireEvent(name, detail = {}, target = window) {
|
|
const evt = new CustomEvent(name, {bubbles: true, cancelable: true, detail});
|
|
target.dispatchEvent(evt);
|
|
}
|
|
|
|
/**
|
|
* @typedef {!{data: *}}
|
|
*/
|
|
// @ts-ignore TS can't pick up that EventTargetEvent is of this type
|
|
export let EventTargetEvent;
|