WebKit Bugzilla
Attachment 350002 Details for
Bug 189687
: Web Inspector: preserve DOM.NodeId if a node is removed and re-added
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
189687.diff (text/plain), 21.39 KB, created by
Devin Rousso
on 2018-09-17 22:43:42 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Devin Rousso
Created:
2018-09-17 22:43:42 PDT
Size:
21.39 KB
patch
obsolete
>diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index c8f152c9a94..e6df3ccd42f 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,13 @@ >+2018-09-17 Devin Rousso <drousso@apple.com> >+ >+ Web Inspector: preserve DOM.NodeId if a node is removed and re-added >+ https://bugs.webkit.org/show_bug.cgi?id=189687 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * inspector/protocol/DOM.json: >+ Add the `domNodeDestroyed` event, which is fired whenever a `Node` is destructed. >+ > 2018-09-17 Devin Rousso <drousso@apple.com> > > Web Inspector: group media network entries by the node that triggered the request >diff --git a/Source/JavaScriptCore/inspector/protocol/DOM.json b/Source/JavaScriptCore/inspector/protocol/DOM.json >index 810b3c650ef..35c72e49629 100644 >--- a/Source/JavaScriptCore/inspector/protocol/DOM.json >+++ b/Source/JavaScriptCore/inspector/protocol/DOM.json >@@ -606,6 +606,13 @@ > { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." } > ] > }, >+ { >+ "name": "domNodeDestroyed", >+ "description": "Fired when a DOM node is destructed", >+ "parameters": [ >+ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." } >+ ] >+ }, > { > "name": "shadowRootPushed", > "description": "Called when shadow root is pushed into the element.", >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index bf2b23776fe..5867b3d346c 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,40 @@ >+2018-09-17 Devin Rousso <drousso@apple.com> >+ >+ Web Inspector: preserve DOM.NodeId if a node is removed and re-added >+ https://bugs.webkit.org/show_bug.cgi?id=189687 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ No new tests (OOPS!). >+ >+ * inspector/agents/InspectorDOMAgent.h: >+ * inspector/agents/InspectorDOMAgent.cpp: >+ (WebCore::InspectorDOMAgent::unbind): >+ (WebCore::InspectorDOMAgent::didCommitLoad): >+ (WebCore::InspectorDOMAgent::didInsertDOMNode): >+ (WebCore::InspectorDOMAgent::didRemoveDOMNode): >+ (WebCore::InspectorDOMAgent::domNodeDestroyed): Added. >+ Only `unbind` when the `Node` is actually about to be destructed, as it could be re-added to >+ the DOM tree again later. >+ >+ * dom/Node.cpp: >+ (WebCore::Node::~Node): >+ >+ * inspector/InspectorInstrumentation.h: >+ (WebCore::InspectorInstrumentation::domNodeDestroyed): Added. >+ * inspector/InspectorInstrumentation.cpp: >+ (WebCore::InspectorInstrumentation::didRemoveDOMNodeImpl): >+ (WebCore::InspectorInstrumentation::domNodeDestroyedImpl): Added. >+ >+ * inspector/agents/InspectorCSSAgent.h: >+ * inspector/agents/InspectorCSSAgent.cpp: >+ (WebCore::InspectorCSSAgent::domNodeDestroyed): Added. >+ (WebCore::InspectorCSSAgent::didRemoveDOMNode): Deleted. >+ * inspector/agents/InspectorDOMDebuggerAgent.h: >+ * inspector/agents/InspectorDOMDebuggerAgent.cpp: >+ (WebCore::InspectorDOMDebuggerAgent::domNodeDestroyed): Added. >+ (WebCore::InspectorDOMDebuggerAgent::didRemoveDOMNode): Deleted. >+ > 2018-09-17 Devin Rousso <drousso@apple.com> > > Web Inspector: group media network entries by the node that triggered the request >diff --git a/Source/WebCore/dom/Node.cpp b/Source/WebCore/dom/Node.cpp >index 1fbd6705350..4c17e70db51 100644 >--- a/Source/WebCore/dom/Node.cpp >+++ b/Source/WebCore/dom/Node.cpp >@@ -50,6 +50,7 @@ > #include "HTMLStyleElement.h" > #include "InputEvent.h" > #include "InspectorController.h" >+#include "InspectorInstrumentation.h" > #include "KeyboardEvent.h" > #include "Logging.h" > #include "MutationEvent.h" >@@ -278,6 +279,8 @@ Node::~Node() > ASSERT(m_deletionHasBegun); > ASSERT(!m_adoptionIsRequired); > >+ InspectorInstrumentation::domNodeDestroyed(*this); >+ > #ifndef NDEBUG > if (!ignoreSet().remove(this)) > nodeCounter.decrement(); >diff --git a/Source/WebCore/inspector/InspectorInstrumentation.cpp b/Source/WebCore/inspector/InspectorInstrumentation.cpp >index 61a7c739559..14f346c07a2 100644 >--- a/Source/WebCore/inspector/InspectorInstrumentation.cpp >+++ b/Source/WebCore/inspector/InspectorInstrumentation.cpp >@@ -157,12 +157,18 @@ void InspectorInstrumentation::willRemoveDOMNodeImpl(InstrumentingAgents& instru > > void InspectorInstrumentation::didRemoveDOMNodeImpl(InstrumentingAgents& instrumentingAgents, Node& node) > { >- if (InspectorDOMDebuggerAgent* domDebuggerAgent = instrumentingAgents.inspectorDOMDebuggerAgent()) >- domDebuggerAgent->didRemoveDOMNode(node); > if (InspectorDOMAgent* domAgent = instrumentingAgents.inspectorDOMAgent()) > domAgent->didRemoveDOMNode(node); > } > >+void InspectorInstrumentation::domNodeDestroyedImpl(InstrumentingAgents& instrumentingAgents, Node& node) >+{ >+ if (InspectorDOMDebuggerAgent* domDebuggerAgent = instrumentingAgents.inspectorDOMDebuggerAgent()) >+ domDebuggerAgent->domNodeDestroyed(node); >+ if (InspectorDOMAgent* domAgent = instrumentingAgents.inspectorDOMAgent()) >+ domAgent->domNodeDestroyed(node); >+} >+ > void InspectorInstrumentation::willModifyDOMAttrImpl(InstrumentingAgents& instrumentingAgents, Element& element, const AtomicString& oldValue, const AtomicString& newValue) > { > if (InspectorDOMDebuggerAgent* domDebuggerAgent = instrumentingAgents.inspectorDOMDebuggerAgent()) >diff --git a/Source/WebCore/inspector/InspectorInstrumentation.h b/Source/WebCore/inspector/InspectorInstrumentation.h >index 926c97d63c3..0659e7c907c 100644 >--- a/Source/WebCore/inspector/InspectorInstrumentation.h >+++ b/Source/WebCore/inspector/InspectorInstrumentation.h >@@ -111,6 +111,7 @@ public: > static void didInsertDOMNode(Document&, Node&); > static void willRemoveDOMNode(Document&, Node&); > static void didRemoveDOMNode(Document&, Node&); >+ static void domNodeDestroyed(Node&); > static void willModifyDOMAttr(Document&, Element&, const AtomicString& oldValue, const AtomicString& newValue); > static void didModifyDOMAttr(Document&, Element&, const AtomicString& name, const AtomicString& value); > static void didRemoveDOMAttr(Document&, Element&, const AtomicString& name); >@@ -296,6 +297,7 @@ private: > static void didInsertDOMNodeImpl(InstrumentingAgents&, Node&); > static void willRemoveDOMNodeImpl(InstrumentingAgents&, Node&); > static void didRemoveDOMNodeImpl(InstrumentingAgents&, Node&); >+ static void domNodeDestroyedImpl(InstrumentingAgents&, Node&); > static void willModifyDOMAttrImpl(InstrumentingAgents&, Element&, const AtomicString& oldValue, const AtomicString& newValue); > static void didModifyDOMAttrImpl(InstrumentingAgents&, Element&, const AtomicString& name, const AtomicString& value); > static void didRemoveDOMAttrImpl(InstrumentingAgents&, Element&, const AtomicString& name); >@@ -508,6 +510,13 @@ inline void InspectorInstrumentation::didRemoveDOMNode(Document& document, Node& > didRemoveDOMNodeImpl(*instrumentingAgents, node); > } > >+inline void InspectorInstrumentation::domNodeDestroyed(Node& node) >+{ >+ FAST_RETURN_IF_NO_FRONTENDS(void()); >+ if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(node.document())) >+ domNodeDestroyedImpl(*instrumentingAgents, node); >+} >+ > inline void InspectorInstrumentation::willModifyDOMAttr(Document& document, Element& element, const AtomicString& oldValue, const AtomicString& newValue) > { > FAST_RETURN_IF_NO_FRONTENDS(void()); >diff --git a/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp b/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp >index 206eae3e60e..0f058b24f7e 100644 >--- a/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp >+++ b/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp >@@ -934,7 +934,7 @@ RefPtr<Inspector::Protocol::CSS::CSSStyle> InspectorCSSAgent::buildObjectForAttr > return inspectorStyle->buildObjectForStyle(); > } > >-void InspectorCSSAgent::didRemoveDOMNode(Node& node, int nodeId) >+void InspectorCSSAgent::domNodeDestroyed(Node& node, int nodeId) > { > m_nodeIdToForcedPseudoState.remove(nodeId); > >diff --git a/Source/WebCore/inspector/agents/InspectorCSSAgent.h b/Source/WebCore/inspector/agents/InspectorCSSAgent.h >index 35494fe5c91..479c0ac1535 100644 >--- a/Source/WebCore/inspector/agents/InspectorCSSAgent.h >+++ b/Source/WebCore/inspector/agents/InspectorCSSAgent.h >@@ -145,7 +145,7 @@ private: > RefPtr<Inspector::Protocol::CSS::CSSStyle> buildObjectForAttributesStyle(StyledElement&); > > // InspectorDOMAgent::DOMListener implementation >- void didRemoveDOMNode(Node&, int nodeId) override; >+ void domNodeDestroyed(Node&, int nodeId) override; > void didModifyDOMAttr(Element&) override; > > // InspectorCSSAgent::Listener implementation >diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp >index 0c7f72ba529..7ad861fed76 100644 >--- a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp >+++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp >@@ -360,7 +360,7 @@ void InspectorDOMAgent::unbind(Node* node, NodeToIdMap* nodesMap) > > nodesMap->remove(node); > if (m_domListener) >- m_domListener->didRemoveDOMNode(*node, id); >+ m_domListener->domNodeDestroyed(*node, id); > > if (m_childrenRequested.remove(id)) { > // FIXME: Would be better to do this iteratively rather than recursively. >@@ -2077,7 +2077,6 @@ void InspectorDOMAgent::didCommitLoad(Document* document) > // Re-add frame owner element together with its new children. > int parentId = m_documentNodeToIdMap.get(innerParentNode(frameOwner.get())); > m_frontendDispatcher->childNodeRemoved(parentId, frameOwnerId); >- unbind(frameOwner.get(), &m_documentNodeToIdMap); > > Ref<Inspector::Protocol::DOM::Node> value = buildObjectForNode(frameOwner.get(), 0, &m_documentNodeToIdMap); > Node* previousSibling = innerPreviousSibling(frameOwner.get()); >@@ -2095,9 +2094,6 @@ void InspectorDOMAgent::didInsertDOMNode(Node& node) > if (containsOnlyHTMLWhitespace(&node)) > return; > >- // We could be attaching existing subtree. Forget the bindings. >- unbind(&node, &m_documentNodeToIdMap); >- > ContainerNode* parent = node.parentNode(); > if (!parent) > return; >@@ -2138,6 +2134,15 @@ void InspectorDOMAgent::didRemoveDOMNode(Node& node) > m_frontendDispatcher->childNodeCountUpdated(parentId, 0); > } else > m_frontendDispatcher->childNodeRemoved(parentId, m_documentNodeToIdMap.get(&node)); >+} >+ >+void InspectorDOMAgent::domNodeDestroyed(Node& node) >+{ >+ if (containsOnlyHTMLWhitespace(&node)) >+ return; >+ >+ m_frontendDispatcher->domNodeDestroyed(m_documentNodeToIdMap.get(&node)); >+ > unbind(&node, &m_documentNodeToIdMap); > } > >diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.h b/Source/WebCore/inspector/agents/InspectorDOMAgent.h >index cd1f5a1ebb3..a2b24f2d33a 100644 >--- a/Source/WebCore/inspector/agents/InspectorDOMAgent.h >+++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.h >@@ -93,7 +93,7 @@ class InspectorDOMAgent final : public InspectorAgentBase, public Inspector::DOM > public: > struct DOMListener { > virtual ~DOMListener() = default; >- virtual void didRemoveDOMNode(Node&, int nodeId) = 0; >+ virtual void domNodeDestroyed(Node&, int nodeId) = 0; > virtual void didModifyDOMAttr(Element&) = 0; > }; > >@@ -160,6 +160,7 @@ public: > int identifierForNode(Node&); > void didInsertDOMNode(Node&); > void didRemoveDOMNode(Node&); >+ void domNodeDestroyed(Node&); > void willModifyDOMAttr(Element&, const AtomicString& oldValue, const AtomicString& newValue); > void didModifyDOMAttr(Element&, const AtomicString& name, const AtomicString& value); > void didRemoveDOMAttr(Element&, const AtomicString& name); >diff --git a/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp b/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp >index dad24f794f0..b489e32b057 100644 >--- a/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp >+++ b/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp >@@ -184,7 +184,7 @@ void InspectorDOMDebuggerAgent::didInsertDOMNode(Node& node) > } > } > >-void InspectorDOMDebuggerAgent::didRemoveDOMNode(Node& node) >+void InspectorDOMDebuggerAgent::domNodeDestroyed(Node& node) > { > if (m_domBreakpoints.size()) { > // Remove subtree breakpoints. >diff --git a/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h b/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h >index e3a4e1b1c34..0ff477a2c32 100644 >--- a/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h >+++ b/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h >@@ -69,7 +69,7 @@ public: > void didInvalidateStyleAttr(Node&); > void didInsertDOMNode(Node&); > void willRemoveDOMNode(Node&); >- void didRemoveDOMNode(Node&); >+ void domNodeDestroyed(Node&); > void willModifyDOMAttr(Element&); > void willSendXMLHttpRequest(const String& url); > void frameDocumentUpdated(Frame&); >diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog >index 62f0759b037..846d23afa62 100644 >--- a/Source/WebInspectorUI/ChangeLog >+++ b/Source/WebInspectorUI/ChangeLog >@@ -1,3 +1,34 @@ >+2018-09-17 Devin Rousso <drousso@apple.com> >+ >+ Web Inspector: preserve DOM.NodeId if a node is removed and re-added >+ https://bugs.webkit.org/show_bug.cgi?id=189687 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UserInterface/Protocol/DOMObserver.js: >+ (WI.DOMObserver.prototype.domNodeDestroyed): Added. >+ * UserInterface/Controllers/DOMTreeManager.js: >+ (WI.DOMTreeManager.prototype._childNodeInserted): >+ (WI.DOMTreeManager.prototype._childNodeRemoved): >+ (WI.DOMTreeManager.prototype._domNodeDestroyed): Added. >+ >+ * UserInterface/Views/DOMTreeElement.js: >+ (WI.DOMTreeElement.prototype.updateSelectionArea): >+ (WI.DOMTreeElement.prototype.onattach): >+ (WI.DOMTreeElement.prototype.get pseudoClassesEnabled): Deleted. >+ Apply the `.pseudo-class-enabled` dot whenever the `WI.DOMTreeElement` is attached. >+ >+ * UserInterface/Views/DOMTreeOutline.css: >+ (.tree-outline.dom): >+ (.tree-outline.dom li.pseudo-class-enabled > .selection-area::before): >+ Expose the size of the `.pseudo-class-enabled` dot as a CSS variable. >+ >+ * UserInterface/Views/FormattedValue.css: >+ (body[dir=ltr] .formatted-node > .tree-outline.dom li.pseudo-class-enabled): Added. >+ (body[dir=rtl] .formatted-node > .tree-outline.dom li.pseudo-class-enabled): Added. >+ (.formatted-node > .tree-outline.dom li.hovered:not(.selected) .selection-area): Deleted. >+ Drive-by: make sure the `.pseudo-class-enabled` dot is not overlapping the DOM tree. >+ > 2018-09-17 Devin Rousso <drousso@apple.com> > > Web Inspector: group media network entries by the node that triggered the request >diff --git a/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js b/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js >index 72b484cf5ca..9ac0eb57250 100644 >--- a/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js >+++ b/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js >@@ -268,7 +268,7 @@ WI.DOMTreeManager = class DOMTreeManager extends WI.Object > { > var parent = this._idToDOMNode[parentId]; > var prev = this._idToDOMNode[prevId]; >- var node = parent._insertChild(prev, payload); >+ let node = parent._insertChild(prev, this._idToDOMNode[payload.nodeId] || payload); > this._idToDOMNode[node.id] = node; > this.dispatchEventToListeners(WI.DOMTreeManager.Event.NodeInserted, {node, parent}); > } >@@ -278,10 +278,18 @@ WI.DOMTreeManager = class DOMTreeManager extends WI.Object > var parent = this._idToDOMNode[parentId]; > var node = this._idToDOMNode[nodeId]; > parent._removeChild(node); >- this._unbind(node); > this.dispatchEventToListeners(WI.DOMTreeManager.Event.NodeRemoved, {node, parent}); > } > >+ _domNodeDestroyed(nodeId) >+ { >+ let node = this._idToDOMNode[nodeId]; >+ if (!node) >+ return; >+ >+ this._unbind(node); >+ } >+ > _customElementStateChanged(elementId, newState) > { > const node = this._idToDOMNode[elementId]; >diff --git a/Source/WebInspectorUI/UserInterface/Models/DOMNode.js b/Source/WebInspectorUI/UserInterface/Models/DOMNode.js >index a56aaddc9c6..910c38f296c 100644 >--- a/Source/WebInspectorUI/UserInterface/Models/DOMNode.js >+++ b/Source/WebInspectorUI/UserInterface/Models/DOMNode.js >@@ -705,9 +705,10 @@ WI.DOMNode = class DOMNode extends WI.Object > this._addAttribute(attrs[i], attrs[i + 1]); > } > >- _insertChild(prev, payload) >+ _insertChild(prev, nodeOrPayload) > { >- var node = new WI.DOMNode(this._domTreeManager, this.ownerDocument, this._isInShadowTree, payload); >+ console.assert(nodeOrPayload instanceof WI.DOMNode || typeof nodeOrPayload === "object"); >+ let node = nodeOrPayload instanceof WI.DOMNode ? nodeOrPayload : new WI.DOMNode(this._domTreeManager, this.ownerDocument, this._isInShadowTree, nodeOrPayload); > if (!prev) { > if (!this._children) { > // First node >diff --git a/Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js >index 06c786d5deb..3e984e69dec 100644 >--- a/Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js >+++ b/Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js >@@ -77,6 +77,11 @@ WI.DOMObserver = class DOMObserver > WI.domTreeManager._childNodeRemoved(parentNodeId, nodeId); > } > >+ domNodeDestroyed(nodeId) >+ { >+ WI.domTreeManager._domNodeDestroyed(nodeId); >+ } >+ > shadowRootPushed(parentNodeId, nodeId) > { > WI.domTreeManager._childNodeInserted(parentNodeId, 0, nodeId); >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js b/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >index 5b7afda18b1..a42c0c3d895 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >@@ -362,7 +362,7 @@ WI.DOMTreeElement = class DOMTreeElement extends WI.TreeElement > > // If there's no reason to have a selection area, remove the DOM element. > let indicatesTreeOutlineState = this.treeOutline && (this.treeOutline.dragOverTreeElement === this || this.treeOutline.selectedTreeElement === this || this._animatingHighlight); >- if (!this.hovered && !this.pseudoClassesEnabled && !indicatesTreeOutlineState) { >+ if (!this.hovered && !this.representedObject.enabledPseudoClasses.length && !indicatesTreeOutlineState) { > if (this._selectionElement) { > this._selectionElement.remove(); > this._selectionElement = null; >@@ -391,6 +391,8 @@ WI.DOMTreeElement = class DOMTreeElement extends WI.TreeElement > this.listItemElement.draggable = true; > this.listItemElement.addEventListener("dragstart", this); > } >+ >+ this._nodePseudoClassesDidChange(); > } > > onpopulate() >@@ -1757,11 +1759,6 @@ WI.DOMTreeElement = class DOMTreeElement extends WI.TreeElement > } > } > >- get pseudoClassesEnabled() >- { >- return !!this.representedObject.enabledPseudoClasses.length; >- } >- > _nodePseudoClassesDidChange(event) > { > if (this._elementCloseTag) >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css >index f1ed1801805..6b8f7cbc28b 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css >@@ -44,6 +44,7 @@ > > --item-parent-shadow-after-margin-start: -2px; > >+ --item-pseudo-class-enabled-selection-before-size: 5px; > --item-pseudo-class-enabled-selection-before-start: 2px; > > --single-item-padding-start: 2px; >@@ -152,8 +153,8 @@ body[dir=rtl] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.ex > display: inline-block; > position: absolute; > top: 4px; >- width: 5px; >- height: 5px; >+ width: var(--item-pseudo-class-enabled-selection-before-size); >+ height: var(--item-pseudo-class-enabled-selection-before-size); > content: ""; > background-color: var(--selected-background-color); > border-radius: 50%; >diff --git a/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css b/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css >index 920e870675d..f7ddabf38f9 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css >+++ b/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css >@@ -72,8 +72,10 @@ > -webkit-user-select: none !important; > } > >-.formatted-node > .tree-outline.dom li.hovered:not(.selected) .selection-area { >- display: block; >- left: -1px; >- right: -2px; >+body[dir=ltr] .formatted-node > .tree-outline.dom li.pseudo-class-enabled { >+ margin-left: calc(var(--item-pseudo-class-enabled-selection-before-size) + var(--item-pseudo-class-enabled-selection-before-start)); >+} >+ >+body[dir=rtl] .formatted-node > .tree-outline.dom li.pseudo-class-enabled { >+ margin-right: calc(var(--item-pseudo-class-enabled-selection-before-size) + var(--item-pseudo-class-enabled-selection-before-start)); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189687
:
350002
|
350005
|
350008
|
456725
|
456868
|
456870
|
457006
|
457280