mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-30 17:27:22 +08:00
All of these were Closure-specific. R=szuend@chromium.org No-Presubmit: True Bug: 1011811 Change-Id: Ia580e21cd3b06f532bb5a63a770ccfa3d7c796ee Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2569761 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Simon Zünd <szuend@chromium.org>
116 lines
3.7 KiB
JavaScript
116 lines
3.7 KiB
JavaScript
// Copyright 2017 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.
|
|
|
|
/**
|
|
* @fileoverview using private properties isn't a Closure violation in tests.
|
|
*/
|
|
self.ElementsTestRunner = self.ElementsTestRunner || {};
|
|
|
|
ElementsTestRunner.events = [];
|
|
ElementsTestRunner.containerId;
|
|
|
|
ElementsTestRunner.setUpTestSuite = function(next) {
|
|
ElementsTestRunner.expandElementsTree(step1);
|
|
|
|
function step1() {
|
|
ElementsTestRunner.selectNodeWithId('container', step2);
|
|
}
|
|
|
|
function step2(node) {
|
|
ElementsTestRunner.containerId = node.id;
|
|
TestRunner.DOMAgent.getOuterHTML(ElementsTestRunner.containerId).then(step3);
|
|
}
|
|
|
|
function step3(text) {
|
|
ElementsTestRunner.containerText = text;
|
|
|
|
for (const key in SDK.DOMModel.Events) {
|
|
const eventName = SDK.DOMModel.Events[key];
|
|
|
|
if (eventName === SDK.DOMModel.Events.MarkersChanged || eventName === SDK.DOMModel.Events.DOMMutated) {
|
|
continue;
|
|
}
|
|
|
|
TestRunner.domModel.addEventListener(
|
|
eventName, ElementsTestRunner.recordEvent.bind(ElementsTestRunner, eventName));
|
|
}
|
|
|
|
next();
|
|
}
|
|
};
|
|
|
|
ElementsTestRunner.recordEvent = function(eventName, event) {
|
|
if (!event.data) {
|
|
return;
|
|
}
|
|
|
|
const node = event.data.node || event.data;
|
|
const parent = event.data.parent;
|
|
|
|
for (let currentNode = parent || node; currentNode; currentNode = currentNode.parentNode) {
|
|
if (currentNode.getAttribute('id') === 'output') {
|
|
return;
|
|
}
|
|
}
|
|
|
|
ElementsTestRunner.events.push('Event ' + eventName.toString() + ': ' + node.nodeName());
|
|
};
|
|
|
|
ElementsTestRunner.patchOuterHTML = function(pattern, replacement, next) {
|
|
TestRunner.addResult('Replacing \'' + pattern + '\' with \'' + replacement + '\'\n');
|
|
ElementsTestRunner.setOuterHTML(ElementsTestRunner.containerText.replace(pattern, replacement), next);
|
|
};
|
|
|
|
ElementsTestRunner.patchOuterHTMLUseUndo = function(pattern, replacement, next) {
|
|
TestRunner.addResult('Replacing \'' + pattern + '\' with \'' + replacement + '\'\n');
|
|
ElementsTestRunner.setOuterHTMLUseUndo(ElementsTestRunner.containerText.replace(pattern, replacement), next);
|
|
};
|
|
|
|
ElementsTestRunner.setOuterHTML = function(newText, next) {
|
|
ElementsTestRunner.innerSetOuterHTML(newText, false, bringBack);
|
|
|
|
function bringBack() {
|
|
TestRunner.addResult('\nBringing things back\n');
|
|
ElementsTestRunner.innerSetOuterHTML(ElementsTestRunner.containerText, true, next);
|
|
}
|
|
};
|
|
|
|
ElementsTestRunner.setOuterHTMLUseUndo = function(newText, next) {
|
|
ElementsTestRunner.innerSetOuterHTML(newText, false, bringBack);
|
|
|
|
async function bringBack() {
|
|
TestRunner.addResult('\nBringing things back\n');
|
|
await self.SDK.domModelUndoStack.undo();
|
|
ElementsTestRunner._dumpOuterHTML(true, next);
|
|
}
|
|
};
|
|
|
|
ElementsTestRunner.innerSetOuterHTML = async function(newText, last, next) {
|
|
await TestRunner.DOMAgent.setOuterHTML(ElementsTestRunner.containerId, newText);
|
|
TestRunner.domModel.markUndoableState();
|
|
ElementsTestRunner._dumpOuterHTML(last, next);
|
|
};
|
|
|
|
ElementsTestRunner._dumpOuterHTML = async function(last, next) {
|
|
const result = await TestRunner.RuntimeAgent.evaluate('document.getElementById("identity").wrapperIdentity');
|
|
TestRunner.addResult('Wrapper identity: ' + result.value);
|
|
ElementsTestRunner.events.sort();
|
|
|
|
for (let i = 0; i < ElementsTestRunner.events.length; ++i) {
|
|
TestRunner.addResult(ElementsTestRunner.events[i]);
|
|
}
|
|
|
|
ElementsTestRunner.events = [];
|
|
const text = await TestRunner.DOMAgent.getOuterHTML(ElementsTestRunner.containerId);
|
|
TestRunner.addResult('==========8<==========');
|
|
TestRunner.addResult(text);
|
|
TestRunner.addResult('==========>8==========');
|
|
|
|
if (last) {
|
|
TestRunner.addResult('\n\n\n');
|
|
}
|
|
|
|
next();
|
|
};
|