[DevTools] turn Common.Renderer into UI.Renderer
Clients will need to render a generic object/DOMNode, and
be able to call `select()` to select the first child in the
resulting TreeOutline. This CL:
- Turns Common.Renderer > UI.Renderer
- Returns a tree, so interested clients can use it
Bug: 865674
Change-Id: Id877537a3c8713b99d34e6a4558037e0c8b3a111
Reviewed-on: https://chromium-review.googlesource.com/c/1298023
Reviewed-by: Dmitry Gozman <[email protected]>
Reviewed-by: Joel Einbinder <[email protected]>
Commit-Queue: Erik Luo <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#604637}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 3ea41c834168b61e1e2c1b32d23d1775f9ddbe71
diff --git a/front_end/console/ConsoleViewMessage.js b/front_end/console/ConsoleViewMessage.js
index 7ab961e..b4f863a 100644
--- a/front_end/console/ConsoleViewMessage.js
+++ b/front_end/console/ConsoleViewMessage.js
@@ -252,14 +252,17 @@
} else {
let rendered = false;
this._completeElementForTestPromise = null;
- for (const extension of self.runtime.extensions(Common.Renderer, this._message)) {
+ for (const extension of self.runtime.extensions(UI.Renderer, this._message)) {
if (extension.descriptor()['source'] === this._message.source) {
messageElement = createElement('span');
let callback;
this._completeElementForTestPromise = new Promise(fulfill => callback = fulfill);
extension.instance().then(renderer => {
renderer.render(this._message)
- .then(element => messageElement.appendChild(element || this._format([messageText])))
+ .then(result => {
+ const renderedNode = result ? result.node : null;
+ messageElement.appendChild(renderedNode || this._format([messageText]));
+ })
.then(callback);
});
rendered = true;
@@ -673,18 +676,15 @@
const domModel = remoteObject.runtimeModel().target().model(SDK.DOMModel);
if (!domModel)
return result;
- domModel.pushObjectAsNodeToFrontend(remoteObject).then(node => {
+ domModel.pushObjectAsNodeToFrontend(remoteObject).then(async node => {
if (!node) {
result.appendChild(this._formatParameterAsObject(remoteObject, false));
return;
}
- Common.Renderer.render(node).then(rendererNode => {
- if (rendererNode)
- result.appendChild(rendererNode);
- else
- result.appendChild(this._formatParameterAsObject(remoteObject, false));
- this._formattedParameterAsNodeForTest();
- });
+ const renderResult = await UI.Renderer.render(/** @type {!Object} */ (node));
+ const renderedNode = renderResult ? renderResult.node : null;
+ result.appendChild(renderedNode || this._formatParameterAsObject(remoteObject, false));
+ this._formattedParameterAsNodeForTest();
});
return result;