Title: [161199] trunk/Source/WebCore
Revision
161199
Author
[email protected]
Date
2014-01-01 16:31:40 -0800 (Wed, 01 Jan 2014)

Log Message

Remove reattachRenderTree
https://bugs.webkit.org/show_bug.cgi?id=126366

Reviewed by Andreas Kling.

Remove the last remaining client.

* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::parseAttribute):
        
    Reconstruct render tree asynchronously.

(WebCore::HTMLSelectElement::scrollToSelection):
(WebCore::HTMLSelectElement::setOptionsChangedOnRenderer):
(WebCore::HTMLSelectElement::selectOption):
        
    It is not safe to cast the renderer based on usesMenuList test. Switch to RenderObject::isMenuList test.

(WebCore::HTMLSelectElement::parseMultipleAttribute):
        
    Reconstruct render tree asynchronously.

(WebCore::HTMLSelectElement::platformHandleKeydownEvent):
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):
(WebCore::HTMLSelectElement::defaultEventHandler):
* style/StyleResolveTree.cpp:
* style/StyleResolveTree.h:
        
    Remove the function.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (161198 => 161199)


--- trunk/Source/WebCore/ChangeLog	2014-01-01 23:20:25 UTC (rev 161198)
+++ trunk/Source/WebCore/ChangeLog	2014-01-02 00:31:40 UTC (rev 161199)
@@ -1,3 +1,35 @@
+2014-01-01  Antti Koivisto  <[email protected]>
+
+        Remove reattachRenderTree
+        https://bugs.webkit.org/show_bug.cgi?id=126366
+
+        Reviewed by Andreas Kling.
+
+        Remove the last remaining client.
+
+        * html/HTMLSelectElement.cpp:
+        (WebCore::HTMLSelectElement::parseAttribute):
+        
+            Reconstruct render tree asynchronously.
+
+        (WebCore::HTMLSelectElement::scrollToSelection):
+        (WebCore::HTMLSelectElement::setOptionsChangedOnRenderer):
+        (WebCore::HTMLSelectElement::selectOption):
+        
+            It is not safe to cast the renderer based on usesMenuList test. Switch to RenderObject::isMenuList test.
+
+        (WebCore::HTMLSelectElement::parseMultipleAttribute):
+        
+            Reconstruct render tree asynchronously.
+
+        (WebCore::HTMLSelectElement::platformHandleKeydownEvent):
+        (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
+        (WebCore::HTMLSelectElement::defaultEventHandler):
+        * style/StyleResolveTree.cpp:
+        * style/StyleResolveTree.h:
+        
+            Remove the function.
+
 2014-01-01  Simon Fraser  <[email protected]>
 
         Create a ThreadedScrollingTree subclass of ScrollingTree, and push all knowledge of the scrolling thread into it

Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (161198 => 161199)


--- trunk/Source/WebCore/html/HTMLSelectElement.cpp	2014-01-01 23:20:25 UTC (rev 161198)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp	2014-01-02 00:31:40 UTC (rev 161199)
@@ -315,8 +315,8 @@
 
         m_size = size;
         setNeedsValidityCheck();
-        if (m_size != oldSize && renderer()) {
-            Style::reattachRenderTree(*this);
+        if (m_size != oldSize) {
+            setNeedsStyleRecalc(ReconstructRenderTree);
             setRecalcListItems();
         }
     } else if (name == multipleAttr)
@@ -708,8 +708,10 @@
     if (usesMenuList())
         return;
 
-    if (auto renderer = this->renderer())
-        toRenderListBox(renderer)->selectionChanged();
+    auto renderer = this->renderer();
+    if (!renderer || !renderer->isListBox())
+        return;
+    toRenderListBox(renderer)->selectionChanged();
 #else
     if (auto renderer = this->renderer())
         renderer->repaint();
@@ -720,7 +722,7 @@
 {
     if (auto renderer = this->renderer()) {
 #if !PLATFORM(IOS)
-        if (usesMenuList())
+        if (renderer->isMenuList())
             toRenderMenuList(renderer)->setOptionsChanged(true);
         else
             toRenderListBox(renderer)->setOptionsChanged(true);
@@ -898,9 +900,9 @@
         if (flags & DispatchChangeEvent)
             dispatchChangeEventForMenuList();
         if (auto renderer = this->renderer()) {
-            if (usesMenuList())
+            if (renderer->isMenuList())
                 toRenderMenuList(renderer)->didSetSelectedIndex(listIndex);
-            else if (renderer->isListBox())
+            else
                 toRenderListBox(renderer)->selectionChanged();
         }
     }
@@ -1046,8 +1048,8 @@
     bool oldUsesMenuList = usesMenuList();
     m_multiple = !value.isNull();
     setNeedsValidityCheck();
-    if (oldUsesMenuList != usesMenuList() && renderer())
-        Style::reattachRenderTree(*this);
+    if (oldUsesMenuList != usesMenuList())
+        setNeedsStyleRecalc(ReconstructRenderTree);
 }
 
 bool HTMLSelectElement::appendFormData(FormDataList& list, bool)
@@ -1119,7 +1121,7 @@
             // Calling focus() may cause us to lose our renderer. Return true so
             // that our caller doesn't process the event further, but don't set
             // the event as handled.
-            if (!renderer())
+            if (!renderer() || !renderer()->isMenuList())
                 return true;
 
             // Save the selection so it can be compared to the new selection
@@ -1127,8 +1129,7 @@
             // gets called from RenderMenuList::valueChanged, which gets called
             // after the user makes a selection from the menu.
             saveLastSelection();
-            if (RenderMenuList* menuList = toRenderMenuList(renderer()))
-                menuList->showPopup();
+            toRenderMenuList(renderer())->showPopup();
             event->setDefaultHandled();
         }
         return true;
@@ -1140,11 +1141,13 @@
 
 void HTMLSelectElement::menuListDefaultEventHandler(Event* event)
 {
+    ASSERT(renderer() && renderer()->isMenuList());
+
     const Page* page = document().page();
     RefPtr<RenderTheme> renderTheme = page ? &page->theme() : RenderTheme::defaultTheme();
 
     if (event->type() == eventNames().keydownEvent) {
-        if (!renderer() || !event->isKeyboardEvent())
+        if (!event->isKeyboardEvent())
             return;
 
         if (platformHandleKeydownEvent(static_cast<KeyboardEvent*>(event)))
@@ -1196,7 +1199,7 @@
     // Use key press event here since sending simulated mouse events
     // on key down blocks the proper sending of the key press event.
     if (event->type() == eventNames().keypressEvent) {
-        if (!renderer() || !event->isKeyboardEvent())
+        if (!event->isKeyboardEvent())
             return;
 
         int keyCode = static_cast<KeyboardEvent*>(event)->keyCode();
@@ -1223,8 +1226,7 @@
                 // gets called from RenderMenuList::valueChanged, which gets called
                 // after the user makes a selection from the menu.
                 saveLastSelection();
-                if (RenderMenuList* menuList = toRenderMenuList(renderer()))
-                    menuList->showPopup();
+                toRenderMenuList(renderer())->showPopup();
                 handled = true;
             }
         } else if (renderTheme->popsMenuByArrowKeys()) {
@@ -1241,8 +1243,7 @@
                 // gets called from RenderMenuList::valueChanged, which gets called
                 // after the user makes a selection from the menu.
                 saveLastSelection();
-                if (RenderMenuList* menuList = toRenderMenuList(renderer()))
-                    menuList->showPopup();
+                toRenderMenuList(renderer())->showPopup();
                 handled = true;
             } else if (keyCode == '\r') {
                 if (form())
@@ -1260,18 +1261,17 @@
         focus();
 #if !PLATFORM(IOS)
         if (renderer() && renderer()->isMenuList()) {
-            if (RenderMenuList* menuList = toRenderMenuList(renderer())) {
-                if (menuList->popupIsVisible())
-                    menuList->hidePopup();
-                else {
-                    // Save the selection so it can be compared to the new
-                    // selection when we call onChange during selectOption,
-                    // which gets called from RenderMenuList::valueChanged,
-                    // which gets called after the user makes a selection from
-                    // the menu.
-                    saveLastSelection();
-                    menuList->showPopup();
-                }
+            auto& menuList = toRenderMenuList(*renderer());
+            if (menuList.popupIsVisible())
+                menuList.hidePopup();
+            else {
+                // Save the selection so it can be compared to the new
+                // selection when we call onChange during selectOption,
+                // which gets called from RenderMenuList::valueChanged,
+                // which gets called after the user makes a selection from
+                // the menu.
+                saveLastSelection();
+                    menuList.showPopup();
             }
         }
 #endif
@@ -1280,10 +1280,9 @@
 
 #if !PLATFORM(IOS)
     if (event->type() == eventNames().blurEvent && !focused()) {
-        if (RenderMenuList* menuList = toRenderMenuList(renderer())) {
-            if (menuList->popupIsVisible())
-                menuList->hidePopup();
-        }
+        auto& menuList = toRenderMenuList(*renderer());
+        if (menuList.popupIsVisible())
+            menuList.hidePopup();
     }
 #endif
 }
@@ -1512,7 +1511,7 @@
         return;
     }
 
-    if (usesMenuList())
+    if (renderer()->isMenuList())
         menuListDefaultEventHandler(event);
     else 
         listBoxDefaultEventHandler(event);

Modified: trunk/Source/WebCore/style/StyleResolveTree.cpp (161198 => 161199)


--- trunk/Source/WebCore/style/StyleResolveTree.cpp	2014-01-01 23:20:25 UTC (rev 161198)
+++ trunk/Source/WebCore/style/StyleResolveTree.cpp	2014-01-02 00:31:40 UTC (rev 161199)
@@ -891,12 +891,5 @@
     detachRenderTree(element, ReattachDetach);
 }
 
-void reattachRenderTree(Element& current)
-{
-    if (current.renderer())
-        detachRenderTree(current, ReattachDetach);
-    attachRenderTree(current);
 }
-
 }
-}

Modified: trunk/Source/WebCore/style/StyleResolveTree.h (161198 => 161199)


--- trunk/Source/WebCore/style/StyleResolveTree.h	2014-01-01 23:20:25 UTC (rev 161198)
+++ trunk/Source/WebCore/style/StyleResolveTree.h	2014-01-02 00:31:40 UTC (rev 161199)
@@ -43,7 +43,6 @@
 
 void attachRenderTree(Element&);
 void detachRenderTree(Element&);
-void reattachRenderTree(Element&);
 // FIXME: This is only used for "lazy reattach" for shadow trees.
 void detachRenderTreeInReattachMode(Element&);
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to