Commit 13d8342b authored by Jandro Alderman's avatar Jandro Alderman Committed by Commit Bot

Add ShadowRootType field to DOMSnapshot nodes.

InspectorDOMAgent populates a field for ShadowRootTypes for nodes, but
InspectorDOMSnapshotAgent does not. This change exposes
InspectorDOMAgent's method for identifying the relevant type so that
InspectorDOMSnapshotAgent can populate its output analogously.

R=dgozman@chromium.org

Change-Id: Ida6f2d2bb370925dfdb301619258db275b8c5129
Reviewed-on: https://chromium-review.googlesource.com/932648Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Commit-Queue: Jandro Alderman <aalderman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#539334}
parent ffd0e5af
......@@ -585,7 +585,8 @@ Tests DOMSnapshot.getSnapshot method.
"nodeType": 3,
"nodeName": "#text",
"nodeValue": "\n ",
"backendNodeId": "<number>"
"backendNodeId": "<number>",
"shadowRootType": "open"
},
{
"nodeType": 1,
......@@ -600,13 +601,15 @@ Tests DOMSnapshot.getSnapshot method.
"nodeType": 3,
"nodeName": "#text",
"nodeValue": "\n :host {\n color: red;\n }\n ",
"backendNodeId": "<number>"
"backendNodeId": "<number>",
"shadowRootType": "open"
},
{
"nodeType": 3,
"nodeName": "#text",
"nodeValue": "\n ",
"backendNodeId": "<number>"
"backendNodeId": "<number>",
"shadowRootType": "open"
},
{
"nodeType": 1,
......@@ -639,13 +642,15 @@ Tests DOMSnapshot.getSnapshot method.
"nodeName": "#text",
"nodeValue": "Hi!",
"backendNodeId": "<number>",
"layoutNodeIndex": 30
"layoutNodeIndex": 30,
"shadowRootType": "open"
},
{
"nodeType": 3,
"nodeName": "#text",
"nodeValue": "\n ",
"backendNodeId": "<number>"
"backendNodeId": "<number>",
"shadowRootType": "open"
},
{
"nodeType": 3,
......
......@@ -141,7 +141,8 @@ Tests DOMSnapshot.getSnapshot method returning input values.
"nodeType": 3,
"nodeName": "#text",
"nodeValue": "Option 1",
"backendNodeId": "<number>"
"backendNodeId": "<number>",
"shadowRootType": "user-agent"
},
{
"nodeType": 1,
......@@ -163,7 +164,8 @@ Tests DOMSnapshot.getSnapshot method returning input values.
"nodeType": 3,
"nodeName": "#text",
"nodeValue": "Option 2",
"backendNodeId": "<number>"
"backendNodeId": "<number>",
"shadowRootType": "user-agent"
},
{
"nodeType": 3,
......@@ -211,6 +213,7 @@ Tests DOMSnapshot.getSnapshot method returning input values.
"nodeValue": "InputValue",
"backendNodeId": "<number>",
"layoutNodeIndex": 8,
"shadowRootType": "user-agent",
"isClickable": true
},
{
......@@ -251,7 +254,8 @@ Tests DOMSnapshot.getSnapshot method returning input values.
"nodeName": "#text",
"nodeValue": "ButtonValue",
"backendNodeId": "<number>",
"layoutNodeIndex": 11
"layoutNodeIndex": 11,
"shadowRootType": "user-agent"
},
{
"nodeType": 3,
......@@ -422,6 +426,7 @@ Tests DOMSnapshot.getSnapshot method returning input values.
"nodeValue": "TextAreaValue",
"backendNodeId": "<number>",
"layoutNodeIndex": 23,
"shadowRootType": "user-agent",
"isClickable": true
},
{
......
......@@ -2,7 +2,7 @@
var {page, session, dp} = await testRunner.startURL('../resources/dom-snapshot.html', 'Tests DOMSnapshot.getSnapshot method.');
await session.evaluate(`
var host = document.querySelector('#shadow-host').createShadowRoot();
var host = document.querySelector('#shadow-host').attachShadow({mode: 'open'});
var template = document.querySelector('#shadow-template');
host.appendChild(template.content);
template.remove();
......
......@@ -1383,7 +1383,8 @@ String InspectorDOMAgent::DocumentBaseURLString(Document* document) {
return document->BaseURL().GetString();
}
static protocol::DOM::ShadowRootType GetShadowRootType(
// static
protocol::DOM::ShadowRootType InspectorDOMAgent::GetShadowRootType(
ShadowRoot* shadow_root) {
switch (shadow_root->GetType()) {
case ShadowRootType::kUserAgent:
......
......@@ -80,6 +80,7 @@ class CORE_EXPORT InspectorDOMAgent final
static protocol::Response ToResponse(ExceptionState&);
static bool GetPseudoElementType(PseudoId, String*);
static protocol::DOM::ShadowRootType GetShadowRootType(ShadowRoot*);
static ShadowRoot* UserAgentShadowRoot(Node*);
static Color ParseColor(protocol::DOM::RGBA*);
......
......@@ -16,6 +16,7 @@
#include "core/dom/Node.h"
#include "core/dom/PseudoElement.h"
#include "core/dom/QualifiedName.h"
#include "core/dom/ShadowRoot.h"
#include "core/frame/LocalFrame.h"
#include "core/html/HTMLFrameOwnerElement.h"
#include "core/html/HTMLImageElement.h"
......@@ -154,6 +155,7 @@ int InspectorDOMSnapshotAgent::VisitNode(Node* node,
case Node::kAttributeNode:
case Node::kCommentNode:
case Node::kCdataSectionNode:
case Node::kDocumentFragmentNode:
node_value = node->nodeValue();
break;
default:
......@@ -277,6 +279,9 @@ int InspectorDOMSnapshotAgent::VisitNode(Node* node,
DocumentType* doc_type = ToDocumentType(node);
value->setPublicId(doc_type->publicId());
value->setSystemId(doc_type->systemId());
} else if (node->IsInShadowTree()) {
value->setShadowRootType(
InspectorDOMAgent::GetShadowRootType(node->ContainingShadowRoot()));
}
if (node->IsContainerNode()) {
......
......@@ -4328,6 +4328,12 @@
"optional": true,
"$ref": "DOM.PseudoType"
},
{
"name": "shadowRootType",
"description": "Shadow root type.",
"optional": true,
"$ref": "DOM.ShadowRootType"
},
{
"name": "isClickable",
"description": "Whether this DOM node responds to mouse clicks. This includes nodes that have had click\nevent listeners attached via JavaScript as well as anchor tags that naturally navigate when\nclicked.",
......
......@@ -1983,6 +1983,8 @@ experimental domain DOMSnapshot
optional integer templateContentIndex
# Type of a pseudo element node.
optional DOM.PseudoType pseudoType
# Shadow root type.
optional DOM.ShadowRootType shadowRootType
# Whether this DOM node responds to mouse clicks. This includes nodes that have had click
# event listeners attached via JavaScript as well as anchor tags that naturally navigate when
# clicked.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment