Title: [161703] trunk/Source/WebCore
Revision
161703
Author
[email protected]
Date
2014-01-10 17:19:15 -0800 (Fri, 10 Jan 2014)

Log Message

CTTE FrameTree
https://bugs.webkit.org/show_bug.cgi?id=126795

Reviewed by Tim Horton.

* page/Frame.cpp:
(WebCore::Frame::Frame):
* page/FrameTree.cpp:
(WebCore::FrameTree::transferChild):
(WebCore::FrameTree::appendChild):
(WebCore::FrameTree::actuallyAppendChild):
(WebCore::FrameTree::uniqueChildName):
(WebCore::FrameTree::scopedChild):
(WebCore::FrameTree::scopedChildCount):
(WebCore::FrameTree::child):
(WebCore::FrameTree::find):
(WebCore::FrameTree::isDescendantOf):
(WebCore::FrameTree::traverseNext):
(WebCore::FrameTree::traverseNextWithWrap):
(WebCore::FrameTree::traversePreviousWithWrap):
(WebCore::FrameTree::deepLastChild):
(WebCore::FrameTree::top):
* page/FrameTree.h:
(WebCore::FrameTree::FrameTree):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (161702 => 161703)


--- trunk/Source/WebCore/ChangeLog	2014-01-11 01:09:58 UTC (rev 161702)
+++ trunk/Source/WebCore/ChangeLog	2014-01-11 01:19:15 UTC (rev 161703)
@@ -1,3 +1,30 @@
+2014-01-10  Anders Carlsson  <[email protected]>
+
+        CTTE FrameTree
+        https://bugs.webkit.org/show_bug.cgi?id=126795
+
+        Reviewed by Tim Horton.
+
+        * page/Frame.cpp:
+        (WebCore::Frame::Frame):
+        * page/FrameTree.cpp:
+        (WebCore::FrameTree::transferChild):
+        (WebCore::FrameTree::appendChild):
+        (WebCore::FrameTree::actuallyAppendChild):
+        (WebCore::FrameTree::uniqueChildName):
+        (WebCore::FrameTree::scopedChild):
+        (WebCore::FrameTree::scopedChildCount):
+        (WebCore::FrameTree::child):
+        (WebCore::FrameTree::find):
+        (WebCore::FrameTree::isDescendantOf):
+        (WebCore::FrameTree::traverseNext):
+        (WebCore::FrameTree::traverseNextWithWrap):
+        (WebCore::FrameTree::traversePreviousWithWrap):
+        (WebCore::FrameTree::deepLastChild):
+        (WebCore::FrameTree::top):
+        * page/FrameTree.h:
+        (WebCore::FrameTree::FrameTree):
+
 2014-01-10  Simon Fraser  <[email protected]>
 
         Fix iOS build.

Modified: trunk/Source/WebCore/page/Frame.cpp (161702 => 161703)


--- trunk/Source/WebCore/page/Frame.cpp	2014-01-11 01:09:58 UTC (rev 161702)
+++ trunk/Source/WebCore/page/Frame.cpp	2014-01-11 01:19:15 UTC (rev 161703)
@@ -162,7 +162,7 @@
     : m_mainFrame(ownerElement ? page.mainFrame() : static_cast<MainFrame&>(*this))
     , m_page(&page)
     , m_settings(&page.settings())
-    , m_treeNode(this, parentFromOwnerElement(ownerElement))
+    , m_treeNode(*this, parentFromOwnerElement(ownerElement))
     , m_loader(*this, frameLoaderClient)
     , m_navigationScheduler(*this)
     , m_ownerElement(ownerElement)

Modified: trunk/Source/WebCore/page/FrameTree.cpp (161702 => 161703)


--- trunk/Source/WebCore/page/FrameTree.cpp	2014-01-11 01:09:58 UTC (rev 161702)
+++ trunk/Source/WebCore/page/FrameTree.cpp	2014-01-11 01:19:15 UTC (rev 161703)
@@ -66,14 +66,14 @@
 bool FrameTree::transferChild(PassRefPtr<Frame> child)
 {
     Frame* oldParent = child->tree().parent();
-    if (oldParent == m_thisFrame)
+    if (oldParent == &m_thisFrame)
         return false; // |child| is already a child of m_thisFrame.
 
     if (oldParent)
         oldParent->tree().removeChild(child.get());
 
-    ASSERT(child->page() == m_thisFrame->page());
-    child->tree().m_parent = m_thisFrame;
+    ASSERT(child->page() == m_thisFrame.page());
+    child->tree().m_parent = &m_thisFrame;
 
     // We need to ensure that the child still has a unique frame name with respect to its new parent.
     child->tree().setName(child->tree().m_name);
@@ -84,14 +84,14 @@
 
 void FrameTree::appendChild(PassRefPtr<Frame> child)
 {
-    ASSERT(child->page() == m_thisFrame->page());
-    child->tree().m_parent = m_thisFrame;
+    ASSERT(child->page() == m_thisFrame.page());
+    child->tree().m_parent = &m_thisFrame;
     actuallyAppendChild(child); // Note, on return |child| is null.
 }
 
 void FrameTree::actuallyAppendChild(PassRefPtr<Frame> child)
 {
-    ASSERT(child->tree().m_parent == m_thisFrame);
+    ASSERT(child->tree().m_parent == &m_thisFrame);
     Frame* oldLast = m_lastChild;
     m_lastChild = child.get();
 
@@ -145,7 +145,7 @@
     // Find the nearest parent that has a frame with a path in it.
     Vector<Frame*, 16> chain;
     Frame* frame;
-    for (frame = m_thisFrame; frame; frame = frame->tree().parent()) {
+    for (frame = &m_thisFrame; frame; frame = frame->tree().parent()) {
         if (frame->tree().uniqueName().startsWith(framePathPrefix))
             break;
         chain.append(frame);
@@ -183,7 +183,7 @@
 inline Frame* FrameTree::scopedChild(unsigned index, TreeScope* scope) const
 {
     if (!scope)
-        return 0;
+        return nullptr;
 
     unsigned scopedIndex = 0;
     for (Frame* result = firstChild(); result; result = result->tree().nextSibling()) {
@@ -194,19 +194,19 @@
         }
     }
 
-    return 0;
+    return nullptr;
 }
 
 inline Frame* FrameTree::scopedChild(const AtomicString& name, TreeScope* scope) const
 {
     if (!scope)
-        return 0;
+        return nullptr;
 
     for (Frame* child = firstChild(); child; child = child->tree().nextSibling()) {
         if (child->tree().uniqueName() == name && inScope(*child, *scope))
             return child;
     }
-    return 0;
+    return nullptr;
 }
 
 inline unsigned FrameTree::scopedChildCount(TreeScope* scope) const
@@ -225,18 +225,18 @@
 
 Frame* FrameTree::scopedChild(unsigned index) const
 {
-    return scopedChild(index, m_thisFrame->document());
+    return scopedChild(index, m_thisFrame.document());
 }
 
 Frame* FrameTree::scopedChild(const AtomicString& name) const
 {
-    return scopedChild(name, m_thisFrame->document());
+    return scopedChild(name, m_thisFrame.document());
 }
 
 unsigned FrameTree::scopedChildCount() const
 {
     if (m_scopedChildCount == invalidCount)
-        m_scopedChildCount = scopedChildCount(m_thisFrame->document());
+        m_scopedChildCount = scopedChildCount(m_thisFrame.document());
     return m_scopedChildCount;
 }
 
@@ -261,44 +261,43 @@
     for (Frame* child = firstChild(); child; child = child->tree().nextSibling())
         if (child->tree().uniqueName() == name)
             return child;
-    return 0;
+    return nullptr;
 }
 
 Frame* FrameTree::find(const AtomicString& name) const
 {
     if (name == "_self" || name == "_current" || name.isEmpty())
-        return m_thisFrame;
+        return &m_thisFrame;
     
     if (name == "_top")
         return &top();
     
     if (name == "_parent")
-        return parent() ? parent() : m_thisFrame;
+        return parent() ? parent() : &m_thisFrame;
 
     // Since "_blank" should never be any frame's name, the following is only an optimization.
     if (name == "_blank")
-        return 0;
+        return nullptr;
 
     // Search subtree starting with this frame first.
-    for (Frame* frame = m_thisFrame; frame; frame = frame->tree().traverseNext(m_thisFrame)) {
+    for (Frame* frame = &m_thisFrame; frame; frame = frame->tree().traverseNext(&m_thisFrame)) {
         if (frame->tree().uniqueName() == name)
             return frame;
     }
 
     // Then the rest of the tree.
-    for (Frame* frame = &m_thisFrame->mainFrame(); frame; frame = frame->tree().traverseNext()) {
+    for (Frame* frame = &m_thisFrame.mainFrame(); frame; frame = frame->tree().traverseNext()) {
         if (frame->tree().uniqueName() == name)
             return frame;
     }
 
     // Search the entire tree of each of the other pages in this namespace.
     // FIXME: Is random order OK?
-    Page* page = m_thisFrame->page();
+    Page* page = m_thisFrame.page();
     if (!page)
-        return 0;
-    const HashSet<Page*>& pages = page->group().pages();
-    for (auto it = pages.begin(), end = pages.end(); it != end; ++it) {
-        Page* otherPage = *it;
+        return nullptr;
+    
+    for (auto* otherPage : page->group().pages()) {
         if (otherPage == page)
             continue;
         for (Frame* frame = &otherPage->mainFrame(); frame; frame = frame->tree().traverseNext()) {
@@ -307,7 +306,7 @@
         }
     }
 
-    return 0;
+    return nullptr;
 }
 
 bool FrameTree::isDescendantOf(const Frame* ancestor) const
@@ -315,10 +314,10 @@
     if (!ancestor)
         return false;
 
-    if (m_thisFrame->page() != ancestor->page())
+    if (m_thisFrame.page() != ancestor->page())
         return false;
 
-    for (Frame* frame = m_thisFrame; frame; frame = frame->tree().parent())
+    for (Frame* frame = &m_thisFrame; frame; frame = frame->tree().parent())
         if (frame == ancestor)
             return true;
     return false;
@@ -332,8 +331,8 @@
         return child;
     }
 
-    if (m_thisFrame == stayWithin)
-        return 0;
+    if (&m_thisFrame == stayWithin)
+        return nullptr;
 
     Frame* sibling = nextSibling();
     if (sibling) {
@@ -341,11 +340,11 @@
         return sibling;
     }
 
-    Frame* frame = m_thisFrame;
+    Frame* frame = &m_thisFrame;
     while (!sibling && (!stayWithin || frame->tree().parent() != stayWithin)) {
         frame = frame->tree().parent();
         if (!frame)
-            return 0;
+            return nullptr;
         sibling = frame->tree().nextSibling();
     }
 
@@ -354,7 +353,7 @@
         return sibling;
     }
 
-    return 0;
+    return nullptr;
 }
 
 Frame* FrameTree::traverseNextWithWrap(bool wrap) const
@@ -363,9 +362,9 @@
         return result;
 
     if (wrap)
-        return &m_thisFrame->mainFrame();
+        return &m_thisFrame.mainFrame();
 
-    return 0;
+    return nullptr;
 }
 
 Frame* FrameTree::traversePreviousWithWrap(bool wrap) const
@@ -382,12 +381,12 @@
         return deepLastChild();
 
     // top view is always the last one in this ordering, so prev is nil without wrap
-    return 0;
+    return nullptr;
 }
 
 Frame* FrameTree::deepLastChild() const
 {
-    Frame* result = m_thisFrame;
+    Frame* result = &m_thisFrame;
     for (Frame* last = lastChild(); last; last = last->tree().lastChild())
         result = last;
 
@@ -396,8 +395,8 @@
 
 Frame& FrameTree::top() const
 {
-    Frame* frame = m_thisFrame;
-    for (Frame* parent = m_thisFrame; parent; parent = parent->tree().parent())
+    Frame* frame = &m_thisFrame;
+    for (Frame* parent = &m_thisFrame; parent; parent = parent->tree().parent())
         frame = parent;
     return *frame;
 }

Modified: trunk/Source/WebCore/page/FrameTree.h (161702 => 161703)


--- trunk/Source/WebCore/page/FrameTree.h	2014-01-11 01:09:58 UTC (rev 161702)
+++ trunk/Source/WebCore/page/FrameTree.h	2014-01-11 01:19:15 UTC (rev 161703)
@@ -32,7 +32,7 @@
     public:
         const static unsigned invalidCount = static_cast<unsigned>(-1);
 
-        FrameTree(Frame* thisFrame, Frame* parentFrame) 
+        FrameTree(Frame& thisFrame, Frame* parentFrame)
             : m_thisFrame(thisFrame)
             , m_parent(parentFrame)
             , m_previousSibling(0)
@@ -87,7 +87,7 @@
         Frame* scopedChild(const AtomicString& name, TreeScope*) const;
         unsigned scopedChildCount(TreeScope*) const;
 
-        Frame* m_thisFrame;
+        Frame& m_thisFrame;
 
         Frame* m_parent;
         AtomicString m_name; // The actual frame name (may be empty).
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to