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 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 return; // Filled up the buffer. | 230 return; // Filled up the buffer. |
231 } | 231 } |
232 } | 232 } |
233 | 233 |
234 // The separator between frames when the frames are converted to plain text. | 234 // The separator between frames when the frames are converted to plain text. |
235 const LChar frameSeparator[] = { '\n', '\n' }; | 235 const LChar frameSeparator[] = { '\n', '\n' }; |
236 const size_t frameSeparatorLength = WTF_ARRAY_LENGTH(frameSeparator); | 236 const size_t frameSeparatorLength = WTF_ARRAY_LENGTH(frameSeparator); |
237 | 237 |
238 // Recursively walk the children. | 238 // Recursively walk the children. |
239 const FrameTree& frameTree = frame->tree(); | 239 const FrameTree& frameTree = frame->tree(); |
240 for (LocalFrame* curChild = frameTree.firstChild(); curChild; curChild = cur
Child->tree().nextSibling()) { | 240 for (Frame* curChild = frameTree.firstChild(); curChild; curChild = curChild
->tree().nextSibling()) { |
| 241 if (!curChild->isLocalFrame()) |
| 242 continue; |
| 243 LocalFrame* curLocalChild = toLocalFrame(curChild); |
241 // Ignore the text of non-visible frames. | 244 // Ignore the text of non-visible frames. |
242 RenderView* contentRenderer = curChild->contentRenderer(); | 245 RenderView* contentRenderer = curLocalChild->contentRenderer(); |
243 RenderPart* ownerRenderer = curChild->ownerRenderer(); | 246 RenderPart* ownerRenderer = curLocalChild->ownerRenderer(); |
244 if (!contentRenderer || !contentRenderer->width() || !contentRenderer->h
eight() | 247 if (!contentRenderer || !contentRenderer->width() || !contentRenderer->h
eight() |
245 || (contentRenderer->x() + contentRenderer->width() <= 0) || (conten
tRenderer->y() + contentRenderer->height() <= 0) | 248 || (contentRenderer->x() + contentRenderer->width() <= 0) || (conten
tRenderer->y() + contentRenderer->height() <= 0) |
246 || (ownerRenderer && ownerRenderer->style() && ownerRenderer->style(
)->visibility() != VISIBLE)) { | 249 || (ownerRenderer && ownerRenderer->style() && ownerRenderer->style(
)->visibility() != VISIBLE)) { |
247 continue; | 250 continue; |
248 } | 251 } |
249 | 252 |
250 // Make sure the frame separator won't fill up the buffer, and give up i
f | 253 // Make sure the frame separator won't fill up the buffer, and give up i
f |
251 // it will. The danger is if the separator will make the buffer longer t
han | 254 // it will. The danger is if the separator will make the buffer longer t
han |
252 // maxChars. This will cause the computation above: | 255 // maxChars. This will cause the computation above: |
253 // maxChars - output->size() | 256 // maxChars - output->size() |
254 // to be a negative number which will crash when the subframe is added. | 257 // to be a negative number which will crash when the subframe is added. |
255 if (output.length() >= maxChars - frameSeparatorLength) | 258 if (output.length() >= maxChars - frameSeparatorLength) |
256 return; | 259 return; |
257 | 260 |
258 output.append(frameSeparator, frameSeparatorLength); | 261 output.append(frameSeparator, frameSeparatorLength); |
259 frameContentAsPlainText(maxChars, curChild, output); | 262 frameContentAsPlainText(maxChars, curLocalChild, output); |
260 if (output.length() >= maxChars) | 263 if (output.length() >= maxChars) |
261 return; // Filled up the buffer. | 264 return; // Filled up the buffer. |
262 } | 265 } |
263 } | 266 } |
264 | 267 |
265 WebPluginContainerImpl* WebLocalFrameImpl::pluginContainerFromFrame(LocalFrame*
frame) | 268 WebPluginContainerImpl* WebLocalFrameImpl::pluginContainerFromFrame(LocalFrame*
frame) |
266 { | 269 { |
267 if (!frame) | 270 if (!frame) |
268 return 0; | 271 return 0; |
269 if (!frame->document() || !frame->document()->isPluginDocument()) | 272 if (!frame->document() || !frame->document()->isPluginDocument()) |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 void WebLocalFrameImpl::removeChild(WebFrame* child) | 653 void WebLocalFrameImpl::removeChild(WebFrame* child) |
651 { | 654 { |
652 WebFrame::removeChild(child); | 655 WebFrame::removeChild(child); |
653 frame()->tree().invalidateScopedChildCount(); | 656 frame()->tree().invalidateScopedChildCount(); |
654 } | 657 } |
655 | 658 |
656 WebFrame* WebLocalFrameImpl::traversePrevious(bool wrap) const | 659 WebFrame* WebLocalFrameImpl::traversePrevious(bool wrap) const |
657 { | 660 { |
658 if (!frame()) | 661 if (!frame()) |
659 return 0; | 662 return 0; |
660 return fromFrame(frame()->tree().traversePreviousWithWrap(wrap)); | 663 // FIXME: This should move to WebFrame and become local/remote agnostic. |
| 664 Frame* prevFrame = frame()->tree().traversePreviousWithWrap(wrap); |
| 665 if (!prevFrame || !prevFrame->isLocalFrame()) |
| 666 return 0; |
| 667 return fromFrame(toLocalFrame(prevFrame)); |
661 } | 668 } |
662 | 669 |
663 WebFrame* WebLocalFrameImpl::traverseNext(bool wrap) const | 670 WebFrame* WebLocalFrameImpl::traverseNext(bool wrap) const |
664 { | 671 { |
| 672 // FIXME: This should move to WebFrame and become local/remote agnostic. |
665 if (!frame()) | 673 if (!frame()) |
666 return 0; | 674 return 0; |
667 return fromFrame(frame()->tree().traverseNextWithWrap(wrap)); | 675 // FIXME: This should move to WebFrame and become local/remote agnostic. |
| 676 Frame* nextFrame = frame()->tree().traverseNextWithWrap(wrap); |
| 677 if (!nextFrame || !nextFrame->isLocalFrame()) |
| 678 return 0; |
| 679 return fromFrame(toLocalFrame(nextFrame)); |
668 } | 680 } |
669 | 681 |
670 WebFrame* WebLocalFrameImpl::findChildByName(const WebString& name) const | 682 WebFrame* WebLocalFrameImpl::findChildByName(const WebString& name) const |
671 { | 683 { |
| 684 // FIXME: This should move to WebFrame and become local/remote agnostic. |
672 if (!frame()) | 685 if (!frame()) |
673 return 0; | 686 return 0; |
674 return fromFrame(frame()->tree().child(name)); | 687 // FIXME: This should move to WebFrame and become local/remote agnostic. |
| 688 Frame* child = frame()->tree().child(name); |
| 689 if (!child || !child->isLocalFrame()) |
| 690 return 0; |
| 691 return fromFrame(toLocalFrame(child)); |
675 } | 692 } |
676 | 693 |
677 WebDocument WebLocalFrameImpl::document() const | 694 WebDocument WebLocalFrameImpl::document() const |
678 { | 695 { |
679 if (!frame() || !frame()->document()) | 696 if (!frame() || !frame()->document()) |
680 return WebDocument(); | 697 return WebDocument(); |
681 return WebDocument(frame()->document()); | 698 return WebDocument(frame()->document()); |
682 } | 699 } |
683 | 700 |
684 WebPerformance WebLocalFrameImpl::performance() const | 701 WebPerformance WebLocalFrameImpl::performance() const |
(...skipping 1235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1920 | 1937 |
1921 void WebLocalFrameImpl::invalidateAll() const | 1938 void WebLocalFrameImpl::invalidateAll() const |
1922 { | 1939 { |
1923 ASSERT(frame() && frame()->view()); | 1940 ASSERT(frame() && frame()->view()); |
1924 FrameView* view = frame()->view(); | 1941 FrameView* view = frame()->view(); |
1925 view->invalidateRect(view->frameRect()); | 1942 view->invalidateRect(view->frameRect()); |
1926 invalidateScrollbar(); | 1943 invalidateScrollbar(); |
1927 } | 1944 } |
1928 | 1945 |
1929 } // namespace blink | 1946 } // namespace blink |
OLD | NEW |