Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 return; // Filled up the buffer. | 229 return; // Filled up the buffer. |
| 230 } | 230 } |
| 231 } | 231 } |
| 232 | 232 |
| 233 // The separator between frames when the frames are converted to plain text. | 233 // The separator between frames when the frames are converted to plain text. |
| 234 const LChar frameSeparator[] = { '\n', '\n' }; | 234 const LChar frameSeparator[] = { '\n', '\n' }; |
| 235 const size_t frameSeparatorLength = WTF_ARRAY_LENGTH(frameSeparator); | 235 const size_t frameSeparatorLength = WTF_ARRAY_LENGTH(frameSeparator); |
| 236 | 236 |
| 237 // Recursively walk the children. | 237 // Recursively walk the children. |
| 238 const FrameTree& frameTree = frame->tree(); | 238 const FrameTree& frameTree = frame->tree(); |
| 239 for (LocalFrame* curChild = frameTree.firstChild(); curChild; curChild = cur Child->tree().nextSibling()) { | 239 for (Frame* curChild = frameTree.firstChild(); curChild; curChild = curChild ->tree().nextSibling()) { |
| 240 if (!curChild->isLocalFrame()) | |
| 241 continue; | |
| 242 LocalFrame* curLocalChild = toLocalFrame(curChild); | |
| 240 // Ignore the text of non-visible frames. | 243 // Ignore the text of non-visible frames. |
| 241 RenderView* contentRenderer = curChild->contentRenderer(); | 244 RenderView* contentRenderer = curLocalChild->contentRenderer(); |
| 242 RenderPart* ownerRenderer = curChild->ownerRenderer(); | 245 RenderPart* ownerRenderer = curLocalChild->ownerRenderer(); |
| 243 if (!contentRenderer || !contentRenderer->width() || !contentRenderer->h eight() | 246 if (!contentRenderer || !contentRenderer->width() || !contentRenderer->h eight() |
| 244 || (contentRenderer->x() + contentRenderer->width() <= 0) || (conten tRenderer->y() + contentRenderer->height() <= 0) | 247 || (contentRenderer->x() + contentRenderer->width() <= 0) || (conten tRenderer->y() + contentRenderer->height() <= 0) |
| 245 || (ownerRenderer && ownerRenderer->style() && ownerRenderer->style( )->visibility() != VISIBLE)) { | 248 || (ownerRenderer && ownerRenderer->style() && ownerRenderer->style( )->visibility() != VISIBLE)) { |
| 246 continue; | 249 continue; |
| 247 } | 250 } |
| 248 | 251 |
| 249 // Make sure the frame separator won't fill up the buffer, and give up i f | 252 // Make sure the frame separator won't fill up the buffer, and give up i f |
| 250 // it will. The danger is if the separator will make the buffer longer t han | 253 // it will. The danger is if the separator will make the buffer longer t han |
| 251 // maxChars. This will cause the computation above: | 254 // maxChars. This will cause the computation above: |
| 252 // maxChars - output->size() | 255 // maxChars - output->size() |
| 253 // to be a negative number which will crash when the subframe is added. | 256 // to be a negative number which will crash when the subframe is added. |
| 254 if (output.length() >= maxChars - frameSeparatorLength) | 257 if (output.length() >= maxChars - frameSeparatorLength) |
| 255 return; | 258 return; |
| 256 | 259 |
| 257 output.append(frameSeparator, frameSeparatorLength); | 260 output.append(frameSeparator, frameSeparatorLength); |
| 258 frameContentAsPlainText(maxChars, curChild, output); | 261 frameContentAsPlainText(maxChars, curLocalChild, output); |
| 259 if (output.length() >= maxChars) | 262 if (output.length() >= maxChars) |
| 260 return; // Filled up the buffer. | 263 return; // Filled up the buffer. |
| 261 } | 264 } |
| 262 } | 265 } |
| 263 | 266 |
| 264 WebPluginContainerImpl* WebLocalFrameImpl::pluginContainerFromFrame(LocalFrame* frame) | 267 WebPluginContainerImpl* WebLocalFrameImpl::pluginContainerFromFrame(LocalFrame* frame) |
| 265 { | 268 { |
| 266 if (!frame) | 269 if (!frame) |
| 267 return 0; | 270 return 0; |
| 268 if (!frame->document() || !frame->document()->isPluginDocument()) | 271 if (!frame->document() || !frame->document()->isPluginDocument()) |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 647 } | 650 } |
| 648 | 651 |
| 649 void WebLocalFrameImpl::removeChild(WebFrame* child) | 652 void WebLocalFrameImpl::removeChild(WebFrame* child) |
| 650 { | 653 { |
| 651 WebFrame::removeChild(child); | 654 WebFrame::removeChild(child); |
| 652 frame()->tree().invalidateScopedChildCount(); | 655 frame()->tree().invalidateScopedChildCount(); |
| 653 } | 656 } |
| 654 | 657 |
| 655 WebFrame* WebLocalFrameImpl::traversePrevious(bool wrap) const | 658 WebFrame* WebLocalFrameImpl::traversePrevious(bool wrap) const |
| 656 { | 659 { |
| 657 if (!frame()) | 660 if (!frame() || !frame()->tree().traversePreviousWithWrap(wrap)->isLocalFram e()) |
|
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
| |
| 658 return 0; | 661 return 0; |
| 659 return fromFrame(frame()->tree().traversePreviousWithWrap(wrap)); | 662 return fromFrame(toLocalFrame(frame()->tree().traversePreviousWithWrap(wrap) )); |
| 660 } | 663 } |
| 661 | 664 |
| 662 WebFrame* WebLocalFrameImpl::traverseNext(bool wrap) const | 665 WebFrame* WebLocalFrameImpl::traverseNext(bool wrap) const |
| 663 { | 666 { |
| 664 if (!frame()) | 667 if (!frame() || !frame()->tree().traverseNextWithWrap(wrap)->isLocalFrame()) |
| 665 return 0; | 668 return 0; |
| 666 return fromFrame(frame()->tree().traverseNextWithWrap(wrap)); | 669 return fromFrame(toLocalFrame(frame()->tree().traverseNextWithWrap(wrap))); |
| 667 } | 670 } |
| 668 | 671 |
| 669 WebFrame* WebLocalFrameImpl::findChildByName(const WebString& name) const | 672 WebFrame* WebLocalFrameImpl::findChildByName(const WebString& name) const |
| 670 { | 673 { |
| 671 if (!frame()) | 674 if (!frame() || !frame()->tree().child(name)->isLocalFrame()) |
| 672 return 0; | 675 return 0; |
| 673 return fromFrame(frame()->tree().child(name)); | 676 return fromFrame(toLocalFrame(frame()->tree().child(name))); |
| 674 } | 677 } |
| 675 | 678 |
| 676 WebDocument WebLocalFrameImpl::document() const | 679 WebDocument WebLocalFrameImpl::document() const |
| 677 { | 680 { |
| 678 if (!frame() || !frame()->document()) | 681 if (!frame() || !frame()->document()) |
| 679 return WebDocument(); | 682 return WebDocument(); |
| 680 return WebDocument(frame()->document()); | 683 return WebDocument(frame()->document()); |
| 681 } | 684 } |
| 682 | 685 |
| 683 WebPerformance WebLocalFrameImpl::performance() const | 686 WebPerformance WebLocalFrameImpl::performance() const |
| (...skipping 1235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1919 | 1922 |
| 1920 void WebLocalFrameImpl::invalidateAll() const | 1923 void WebLocalFrameImpl::invalidateAll() const |
| 1921 { | 1924 { |
| 1922 ASSERT(frame() && frame()->view()); | 1925 ASSERT(frame() && frame()->view()); |
| 1923 FrameView* view = frame()->view(); | 1926 FrameView* view = frame()->view(); |
| 1924 view->invalidateRect(view->frameRect()); | 1927 view->invalidateRect(view->frameRect()); |
| 1925 invalidateScrollbar(); | 1928 invalidateScrollbar(); |
| 1926 } | 1929 } |
| 1927 | 1930 |
| 1928 } // namespace blink | 1931 } // namespace blink |
| OLD | NEW |