[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;