Changeset 242241 in webkit


Ignore:
Timestamp:
Feb 28, 2019 4:48:01 PM (5 years ago)
Author:
Joseph Pecoraro
Message:

Web Inspector: View.removeSubview not removing the element properly when not parented
https://bugs.webkit.org/show_bug.cgi?id=195146

Reviewed by Matt Baker.

Source/WebInspectorUI:

  • UserInterface/Views/View.js:

(WI.View.prototype.removeSubview):
Since the element may not be a direct child, just use Element.prototype.remove.

LayoutTests:

  • inspector/view/basics-expected.txt:
  • inspector/view/basics.html:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r242237 r242241  
     12019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
     2
     3        Web Inspector: View.removeSubview not removing the element properly when not parented
     4        https://bugs.webkit.org/show_bug.cgi?id=195146
     5
     6        Reviewed by Matt Baker.
     7
     8        * inspector/view/basics-expected.txt:
     9        * inspector/view/basics.html:
     10
    1112019-02-28  Myles C. Maxfield  <mmaxfield@apple.com>
    212
  • trunk/LayoutTests/inspector/view/basics-expected.txt

    r223011 r242241  
    3232PASS: Removing a nonexistent view should have no effect.
    3333
     34-- Running test case: View.removeSubview.IndirectDescendant
     35PASS: Removed view should not be in the DOM.
     36
    3437-- Running test case: View.insertSubviewBefore
    3538PASS: Inserting a view before `null` should append the view.
  • trunk/LayoutTests/inspector/view/basics.html

    r223011 r242241  
    7777            parent.removeSubview(new WI.View);
    7878            InspectorTest.expectShallowEqual(previousSubviews, parent.subviews, "Removing a nonexistent view should have no effect.")
     79
     80            return true;
     81        }
     82    });
     83
     84    suite.addTestCase({
     85        name: "View.removeSubview.IndirectDescendant",
     86        test() {
     87            let parent = new WI.View;
     88            let middleElement = parent.element.appendChild(document.createElement("div"));
     89
     90            let child = new WI.View;
     91            middleElement.appendChild(child.element);
     92
     93            parent.addSubview(child);
     94            parent.removeSubview(child);
     95
     96            InspectorTest.expectFalse(child.element.parentNode, "Removed view should not be in the DOM.");
    7997
    8098            return true;
  • trunk/Source/WebInspectorUI/ChangeLog

    r242228 r242241  
     12019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
     2
     3        Web Inspector: View.removeSubview not removing the element properly when not parented
     4        https://bugs.webkit.org/show_bug.cgi?id=195146
     5
     6        Reviewed by Matt Baker.
     7
     8        * UserInterface/Views/View.js:
     9        (WI.View.prototype.removeSubview):
     10        Since the element may not be a direct child, just use Element.prototype.remove.
     11
    1122019-02-28  Matt Baker  <mattbaker@apple.com>
    213
  • trunk/Source/WebInspectorUI/UserInterface/Views/View.js

    r242073 r242241  
    109109        this._subviews.insertAtIndex(view, beforeIndex);
    110110
     111        console.assert(!view.element.parentNode || this._element.contains(view.element.parentNode), "Subview DOM element must be a descendant of the parent view element.");
    111112        if (!view.element.parentNode)
    112113            this._element.insertBefore(view.element, referenceView ? referenceView.element : null);
     
    127128
    128129        this._subviews.splice(index, 1);
    129         this._element.removeChild(view.element);
     130        view.element.remove();
    130131
    131132        view._didMoveToParent(null);
Note: See TracChangeset for help on using the changeset viewer.