Title: [217046] trunk
Revision
217046
Author
[email protected]
Date
2017-05-18 08:16:37 -0700 (Thu, 18 May 2017)

Log Message

Design mode should not affect UA shadow trees
https://bugs.webkit.org/show_bug.cgi?id=171854
<rdar://problem/32071037>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: editing/deleting/search-shadow-tree-delete.html

* html/HTMLElement.cpp:
(WebCore::HTMLElement::editabilityFromContentEditableAttr):

    Ignore design mode for UA shadow trees.

* html/SearchInputType.cpp:
(WebCore::SearchInputType::~SearchInputType):
(WebCore::SearchInputType::createShadowSubtree):
(WebCore::SearchInputType::resultsButtonElement):
(WebCore::SearchInputType::cancelButtonElement):
* html/SearchInputType.h:

    Use RefPtr.

LayoutTests:

* editing/deleting/search-shadow-tree-delete-expected.txt: Added.
* editing/deleting/search-shadow-tree-delete.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (217045 => 217046)


--- trunk/LayoutTests/ChangeLog	2017-05-18 14:05:15 UTC (rev 217045)
+++ trunk/LayoutTests/ChangeLog	2017-05-18 15:16:37 UTC (rev 217046)
@@ -1,3 +1,14 @@
+2017-05-18  Antti Koivisto  <[email protected]>
+
+        Design mode should not affect UA shadow trees
+        https://bugs.webkit.org/show_bug.cgi?id=171854
+        <rdar://problem/32071037>
+
+        Reviewed by Zalan Bujtas.
+
+        * editing/deleting/search-shadow-tree-delete-expected.txt: Added.
+        * editing/deleting/search-shadow-tree-delete.html: Added.
+
 2017-05-18  Miguel Gomez  <[email protected]>
 
         Unreviewed GTK+ gardening. Update expectations of tests failing after r217039.

Added: trunk/LayoutTests/editing/deleting/search-shadow-tree-delete-expected.txt (0 => 217046)


--- trunk/LayoutTests/editing/deleting/search-shadow-tree-delete-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/editing/deleting/search-shadow-tree-delete-expected.txt	2017-05-18 15:16:37 UTC (rev 217046)
@@ -0,0 +1 @@
+

Added: trunk/LayoutTests/editing/deleting/search-shadow-tree-delete.html (0 => 217046)


--- trunk/LayoutTests/editing/deleting/search-shadow-tree-delete.html	                        (rev 0)
+++ trunk/LayoutTests/editing/deleting/search-shadow-tree-delete.html	2017-05-18 15:16:37 UTC (rev 217046)
@@ -0,0 +1,23 @@
+<html>
+<head>
+    <script type='text/_javascript_'>
+    if (window.testRunner)
+        testRunner.dumpAsText();
+    function start()
+    {
+        document.designMode="on";
+        document.getElementById("input_0").focus();
+        window.getSelection().modify("extend", "backward", "line");
+        document.execCommand("forwardDelete",true, null);
+        document.execCommand("delete",true, null);
+        if (window.GCController)
+            GCController.collect();
+        document.getElementById("input_0").blur();
+    }
+    </script>
+</head>
+<body _onload_="start()">
+    <input id="input_0" type="search" name="fname">
+</body>
+</html>
+

Modified: trunk/Source/WebCore/ChangeLog (217045 => 217046)


--- trunk/Source/WebCore/ChangeLog	2017-05-18 14:05:15 UTC (rev 217045)
+++ trunk/Source/WebCore/ChangeLog	2017-05-18 15:16:37 UTC (rev 217046)
@@ -1,3 +1,27 @@
+2017-05-18  Antti Koivisto  <[email protected]>
+
+        Design mode should not affect UA shadow trees
+        https://bugs.webkit.org/show_bug.cgi?id=171854
+        <rdar://problem/32071037>
+
+        Reviewed by Zalan Bujtas.
+
+        Test: editing/deleting/search-shadow-tree-delete.html
+
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::editabilityFromContentEditableAttr):
+
+            Ignore design mode for UA shadow trees.
+
+        * html/SearchInputType.cpp:
+        (WebCore::SearchInputType::~SearchInputType):
+        (WebCore::SearchInputType::createShadowSubtree):
+        (WebCore::SearchInputType::resultsButtonElement):
+        (WebCore::SearchInputType::cancelButtonElement):
+        * html/SearchInputType.h:
+
+            Use RefPtr.
+
 2017-05-18  Vanessa Chipirrás Navalón  <[email protected]>
 
         [GTK][GStreamer][MSE] Crash on youtube when MSE is enabled but gstreamer cant find the decoder element.

Modified: trunk/Source/WebCore/html/HTMLElement.cpp (217045 => 217046)


--- trunk/Source/WebCore/html/HTMLElement.cpp	2017-05-18 14:05:15 UTC (rev 217045)
+++ trunk/Source/WebCore/html/HTMLElement.cpp	2017-05-18 15:16:37 UTC (rev 217046)
@@ -58,6 +58,7 @@
 #include "NodeTraversal.h"
 #include "RenderElement.h"
 #include "ScriptController.h"
+#include "ShadowRoot.h"
 #include "SimulatedClick.h"
 #include "StyleProperties.h"
 #include "SubframeLoader.h"
@@ -402,6 +403,10 @@
         }
     }
 
+    auto* containingShadowRoot = node.containingShadowRoot();
+    if (containingShadowRoot && containingShadowRoot->mode() == ShadowRootMode::UserAgent)
+        return Editability::ReadOnly;
+
     auto& document = node.document();
     if (is<HTMLDocument>(document))
         return downcast<HTMLDocument>(document).inDesignMode() ? Editability::CanEditRichly : Editability::ReadOnly;

Modified: trunk/Source/WebCore/html/SearchInputType.cpp (217045 => 217046)


--- trunk/Source/WebCore/html/SearchInputType.cpp	2017-05-18 14:05:15 UTC (rev 217045)
+++ trunk/Source/WebCore/html/SearchInputType.cpp	2017-05-18 15:16:37 UTC (rev 217046)
@@ -52,6 +52,10 @@
 {
 }
 
+SearchInputType::~SearchInputType()
+{
+}
+
 void SearchInputType::addSearchResult()
 {
 #if !PLATFORM(IOS)
@@ -110,24 +114,22 @@
     ASSERT(container);
     ASSERT(textWrapper);
 
-    auto resultsButton = SearchFieldResultsButtonElement::create(element().document());
-    m_resultsButton = resultsButton.ptr();
-    updateResultButtonPseudoType(resultsButton.get(), element().maxResults());
-    container->insertBefore(resultsButton, textWrapper);
+    m_resultsButton = SearchFieldResultsButtonElement::create(element().document());
+    updateResultButtonPseudoType(*m_resultsButton, element().maxResults());
+    container->insertBefore(*m_resultsButton, textWrapper);
 
-    auto cancelButton = SearchFieldCancelButtonElement::create(element().document());
-    m_cancelButton = cancelButton.ptr();
-    container->insertBefore(cancelButton, textWrapper->nextSibling());
+    m_cancelButton = SearchFieldCancelButtonElement::create(element().document());
+    container->insertBefore(*m_cancelButton, textWrapper->nextSibling());
 }
 
 HTMLElement* SearchInputType::resultsButtonElement() const
 {
-    return m_resultsButton;
+    return m_resultsButton.get();
 }
 
 HTMLElement* SearchInputType::cancelButtonElement() const
 {
-    return m_cancelButton;
+    return m_cancelButton.get();
 }
 
 void SearchInputType::handleKeydownEvent(KeyboardEvent& event)

Modified: trunk/Source/WebCore/html/SearchInputType.h (217045 => 217046)


--- trunk/Source/WebCore/html/SearchInputType.h	2017-05-18 14:05:15 UTC (rev 217045)
+++ trunk/Source/WebCore/html/SearchInputType.h	2017-05-18 15:16:37 UTC (rev 217046)
@@ -41,6 +41,7 @@
 class SearchInputType final : public BaseTextInputType {
 public:
     explicit SearchInputType(HTMLInputElement&);
+    ~SearchInputType() override;
 
     void stopSearchEventTimer();
 
@@ -64,8 +65,8 @@
     bool searchEventsShouldBeDispatched() const;
     void startSearchEventTimer();
 
-    SearchFieldResultsButtonElement* m_resultsButton;
-    HTMLElement* m_cancelButton;
+    RefPtr<SearchFieldResultsButtonElement> m_resultsButton;
+    RefPtr<HTMLElement> m_cancelButton;
     Timer m_searchEventTimer;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to