Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1529)

Unified Diff: Source/web/WebFrame.cpp

Issue 338993003: Cleanup various WebView/WebFrame APIs to properly handle remote frames. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove unneeded header. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/web/WebFrame.cpp
diff --git a/Source/web/WebFrame.cpp b/Source/web/WebFrame.cpp
index aafc8dbe5ef7e2826516b9709a0a66421ed51c09..01e08be5bacdd953808188c5e25fbc3baf235c2e 100644
--- a/Source/web/WebFrame.cpp
+++ b/Source/web/WebFrame.cpp
@@ -14,7 +14,7 @@
namespace blink {
-WebCore::Frame* toWebCoreFrame(WebFrame* frame)
+WebCore::Frame* toWebCoreFrame(const WebFrame* frame)
{
if (!frame)
return 0;
@@ -82,6 +82,8 @@ void WebFrame::appendChild(WebFrame* child)
} else {
m_firstChild = child;
}
+
+ toWebCoreFrame(this)->tree().invalidateScopedChildCount();
}
void WebFrame::removeChild(WebFrame* child)
@@ -99,6 +101,8 @@ void WebFrame::removeChild(WebFrame* child)
child->m_nextSibling->m_previousSibling = child->m_previousSibling;
child->m_previousSibling = child->m_nextSibling = 0;
+
+ toWebCoreFrame(this)->tree().invalidateScopedChildCount();
}
WebFrame* WebFrame::parent() const
@@ -134,6 +138,42 @@ WebFrame* WebFrame::nextSibling() const
return m_nextSibling;
}
+WebFrame* WebFrame::traversePrevious(bool wrap) const
+{
+ WebCore::Frame* frame = toWebCoreFrame(this);
+ if (!frame)
+ return 0;
+ return fromFrame(frame->tree().traversePreviousWithWrap(wrap));
+}
+
+WebFrame* WebFrame::traverseNext(bool wrap) const
+{
+ WebCore::Frame* frame = toWebCoreFrame(this);
+ if (!frame)
+ return 0;
+ return fromFrame(frame->tree().traverseNextWithWrap(wrap));
+}
+
+WebFrame* WebFrame::findChildByName(const WebString& name) const
+{
+ WebCore::Frame* frame = toWebCoreFrame(this);
+ if (!frame)
+ return 0;
+ // FIXME: It's not clear this should ever be called to find a remote frame.
+ // Perhaps just disallow that completely?
+ return fromFrame(frame->tree().child(name));
+}
+
+WebFrame* WebFrame::fromFrame(WebCore::Frame* frame)
+{
+ if (!frame)
+ return 0;
+
+ if (frame->isLocalFrame())
+ return WebLocalFrameImpl::fromFrame(toLocalFrame(*frame));
+ return WebRemoteFrameImpl::fromFrame(toRemoteFrame(*frame));
+}
+
WebFrame::WebFrame()
: m_parent(0)
, m_previousSibling(0)

Powered by Google App Engine
This is Rietveld 408576698