Files
react-native-devtools-frontend/front_end/common/EventTarget.js
T
Tim van der Lippe 351be820ba Add tests to verify sources panel shows lazy-loaded files
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>
2020-03-03 13:14:14 +00:00

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;