Chromium Code Reviews| Index: Source/web/WebLocalFrameImpl.cpp |
| diff --git a/Source/web/WebLocalFrameImpl.cpp b/Source/web/WebLocalFrameImpl.cpp |
| index a965aa37cf5b068e202a22bba86bf1cc4dfa2beb..34b6f7e7520e2b4d966515bb7a6223c66942a44f 100644 |
| --- a/Source/web/WebLocalFrameImpl.cpp |
| +++ b/Source/web/WebLocalFrameImpl.cpp |
| @@ -236,10 +236,13 @@ static void frameContentAsPlainText(size_t maxChars, LocalFrame* frame, StringBu |
| // Recursively walk the children. |
| const FrameTree& frameTree = frame->tree(); |
| - for (LocalFrame* curChild = frameTree.firstChild(); curChild; curChild = curChild->tree().nextSibling()) { |
| + for (Frame* curChild = frameTree.firstChild(); curChild; curChild = curChild->tree().nextSibling()) { |
| + if (!curChild->isLocalFrame()) |
| + continue; |
| + LocalFrame* curLocalChild = toLocalFrame(curChild); |
| // Ignore the text of non-visible frames. |
| - RenderView* contentRenderer = curChild->contentRenderer(); |
| - RenderPart* ownerRenderer = curChild->ownerRenderer(); |
| + RenderView* contentRenderer = curLocalChild->contentRenderer(); |
| + RenderPart* ownerRenderer = curLocalChild->ownerRenderer(); |
| if (!contentRenderer || !contentRenderer->width() || !contentRenderer->height() |
| || (contentRenderer->x() + contentRenderer->width() <= 0) || (contentRenderer->y() + contentRenderer->height() <= 0) |
| || (ownerRenderer && ownerRenderer->style() && ownerRenderer->style()->visibility() != VISIBLE)) { |
| @@ -255,7 +258,7 @@ static void frameContentAsPlainText(size_t maxChars, LocalFrame* frame, StringBu |
| return; |
| output.append(frameSeparator, frameSeparatorLength); |
| - frameContentAsPlainText(maxChars, curChild, output); |
| + frameContentAsPlainText(maxChars, curLocalChild, output); |
| if (output.length() >= maxChars) |
| return; // Filled up the buffer. |
| } |
| @@ -654,23 +657,23 @@ void WebLocalFrameImpl::removeChild(WebFrame* child) |
| WebFrame* WebLocalFrameImpl::traversePrevious(bool wrap) const |
| { |
| - if (!frame()) |
| + if (!frame() || !frame()->tree().traversePreviousWithWrap(wrap)->isLocalFrame()) |
|
dcheng
2014/06/04 18:06:37
Put a FIXME here--this should move to WebFrame any
kenrb
2014/06/04 20:34:47
Ok, I figured this was going to change pretty soon
|
| return 0; |
| - return fromFrame(frame()->tree().traversePreviousWithWrap(wrap)); |
| + return fromFrame(toLocalFrame(frame()->tree().traversePreviousWithWrap(wrap))); |
| } |
| WebFrame* WebLocalFrameImpl::traverseNext(bool wrap) const |
| { |
| - if (!frame()) |
| + if (!frame() || !frame()->tree().traverseNextWithWrap(wrap)->isLocalFrame()) |
| return 0; |
| - return fromFrame(frame()->tree().traverseNextWithWrap(wrap)); |
| + return fromFrame(toLocalFrame(frame()->tree().traverseNextWithWrap(wrap))); |
| } |
| WebFrame* WebLocalFrameImpl::findChildByName(const WebString& name) const |
| { |
| - if (!frame()) |
| + if (!frame() || !frame()->tree().child(name)->isLocalFrame()) |
| return 0; |
| - return fromFrame(frame()->tree().child(name)); |
| + return fromFrame(toLocalFrame(frame()->tree().child(name))); |
| } |
| WebDocument WebLocalFrameImpl::document() const |