| 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 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 | 629 |
| 630 WebFrame* WebFrameImpl::opener() const | 630 WebFrame* WebFrameImpl::opener() const |
| 631 { | 631 { |
| 632 if (!frame()) | 632 if (!frame()) |
| 633 return 0; | 633 return 0; |
| 634 return fromFrame(frame()->loader()->opener()); | 634 return fromFrame(frame()->loader()->opener()); |
| 635 } | 635 } |
| 636 | 636 |
| 637 void WebFrameImpl::setOpener(const WebFrame* webFrame) | 637 void WebFrameImpl::setOpener(const WebFrame* webFrame) |
| 638 { | 638 { |
| 639 frame()->loader()->setOpener(webFrame ? static_cast<const WebFrameImpl*>(web
Frame)->frame() : 0); | 639 frame()->loader()->setOpener(webFrame ? toWebFrameImpl(webFrame)->frame() :
0); |
| 640 } | 640 } |
| 641 | 641 |
| 642 WebFrame* WebFrameImpl::parent() const | 642 WebFrame* WebFrameImpl::parent() const |
| 643 { | 643 { |
| 644 if (!frame()) | 644 if (!frame()) |
| 645 return 0; | 645 return 0; |
| 646 return fromFrame(frame()->tree()->parent()); | 646 return fromFrame(frame()->tree()->parent()); |
| 647 } | 647 } |
| 648 | 648 |
| 649 WebFrame* WebFrameImpl::top() const | 649 WebFrame* WebFrameImpl::top() const |
| (...skipping 1228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1878 for (Vector<FindMatch>::const_iterator it = m_findMatchesCache.begin();
it != m_findMatchesCache.end(); ++it) | 1878 for (Vector<FindMatch>::const_iterator it = m_findMatchesCache.begin();
it != m_findMatchesCache.end(); ++it) |
| 1879 if (!it->m_rect.isEmpty()) | 1879 if (!it->m_rect.isEmpty()) |
| 1880 filteredMatches.append(*it); | 1880 filteredMatches.append(*it); |
| 1881 | 1881 |
| 1882 m_findMatchesCache.swap(filteredMatches); | 1882 m_findMatchesCache.swap(filteredMatches); |
| 1883 } | 1883 } |
| 1884 | 1884 |
| 1885 // Invalidate the rects in child frames. Will be updated later during traver
sal. | 1885 // Invalidate the rects in child frames. Will be updated later during traver
sal. |
| 1886 if (!m_findMatchRectsAreValid) | 1886 if (!m_findMatchRectsAreValid) |
| 1887 for (WebFrame* child = firstChild(); child; child = child->nextSibling()
) | 1887 for (WebFrame* child = firstChild(); child; child = child->nextSibling()
) |
| 1888 static_cast<WebFrameImpl*>(child)->m_findMatchRectsAreValid = false; | 1888 toWebFrameImpl(child)->m_findMatchRectsAreValid = false; |
| 1889 | 1889 |
| 1890 m_findMatchRectsAreValid = true; | 1890 m_findMatchRectsAreValid = true; |
| 1891 } | 1891 } |
| 1892 | 1892 |
| 1893 WebFloatRect WebFrameImpl::activeFindMatchRect() | 1893 WebFloatRect WebFrameImpl::activeFindMatchRect() |
| 1894 { | 1894 { |
| 1895 ASSERT(!parent()); | 1895 ASSERT(!parent()); |
| 1896 | 1896 |
| 1897 if (!isActiveMatchFrameValid()) | 1897 if (!isActiveMatchFrameValid()) |
| 1898 return WebFloatRect(); | 1898 return WebFloatRect(); |
| 1899 | 1899 |
| 1900 return WebFloatRect(findInPageRectFromRange(m_currentActiveMatchFrame->m_act
iveMatch.get())); | 1900 return WebFloatRect(findInPageRectFromRange(m_currentActiveMatchFrame->m_act
iveMatch.get())); |
| 1901 } | 1901 } |
| 1902 | 1902 |
| 1903 void WebFrameImpl::findMatchRects(WebVector<WebFloatRect>& outputRects) | 1903 void WebFrameImpl::findMatchRects(WebVector<WebFloatRect>& outputRects) |
| 1904 { | 1904 { |
| 1905 ASSERT(!parent()); | 1905 ASSERT(!parent()); |
| 1906 | 1906 |
| 1907 Vector<WebFloatRect> matchRects; | 1907 Vector<WebFloatRect> matchRects; |
| 1908 for (WebFrameImpl* frame = this; frame; frame = static_cast<WebFrameImpl*>(f
rame->traverseNext(false))) | 1908 for (WebFrameImpl* frame = this; frame; frame = toWebFrameImpl(frame->traver
seNext(false))) |
| 1909 frame->appendFindMatchRects(matchRects); | 1909 frame->appendFindMatchRects(matchRects); |
| 1910 | 1910 |
| 1911 outputRects = matchRects; | 1911 outputRects = matchRects; |
| 1912 } | 1912 } |
| 1913 | 1913 |
| 1914 void WebFrameImpl::appendFindMatchRects(Vector<WebFloatRect>& frameRects) | 1914 void WebFrameImpl::appendFindMatchRects(Vector<WebFloatRect>& frameRects) |
| 1915 { | 1915 { |
| 1916 updateFindMatchRects(); | 1916 updateFindMatchRects(); |
| 1917 frameRects.reserveCapacity(frameRects.size() + m_findMatchesCache.size()); | 1917 frameRects.reserveCapacity(frameRects.size() + m_findMatchesCache.size()); |
| 1918 for (Vector<FindMatch>::const_iterator it = m_findMatchesCache.begin(); it !
= m_findMatchesCache.end(); ++it) { | 1918 for (Vector<FindMatch>::const_iterator it = m_findMatchesCache.begin(); it !
= m_findMatchesCache.end(); ++it) { |
| 1919 ASSERT(!it->m_rect.isEmpty()); | 1919 ASSERT(!it->m_rect.isEmpty()); |
| 1920 frameRects.append(it->m_rect); | 1920 frameRects.append(it->m_rect); |
| 1921 } | 1921 } |
| 1922 } | 1922 } |
| 1923 | 1923 |
| 1924 int WebFrameImpl::selectNearestFindMatch(const WebFloatPoint& point, WebRect* se
lectionRect) | 1924 int WebFrameImpl::selectNearestFindMatch(const WebFloatPoint& point, WebRect* se
lectionRect) |
| 1925 { | 1925 { |
| 1926 ASSERT(!parent()); | 1926 ASSERT(!parent()); |
| 1927 | 1927 |
| 1928 WebFrameImpl* bestFrame = 0; | 1928 WebFrameImpl* bestFrame = 0; |
| 1929 int indexInBestFrame = -1; | 1929 int indexInBestFrame = -1; |
| 1930 float distanceInBestFrame = FLT_MAX; | 1930 float distanceInBestFrame = FLT_MAX; |
| 1931 | 1931 |
| 1932 for (WebFrameImpl* frame = this; frame; frame = static_cast<WebFrameImpl*>(f
rame->traverseNext(false))) { | 1932 for (WebFrameImpl* frame = this; frame; frame = toWebFrameImpl(frame->traver
seNext(false))) { |
| 1933 float distanceInFrame; | 1933 float distanceInFrame; |
| 1934 int indexInFrame = frame->nearestFindMatch(point, distanceInFrame); | 1934 int indexInFrame = frame->nearestFindMatch(point, distanceInFrame); |
| 1935 if (distanceInFrame < distanceInBestFrame) { | 1935 if (distanceInFrame < distanceInBestFrame) { |
| 1936 bestFrame = frame; | 1936 bestFrame = frame; |
| 1937 indexInBestFrame = indexInFrame; | 1937 indexInBestFrame = indexInFrame; |
| 1938 distanceInBestFrame = distanceInFrame; | 1938 distanceInBestFrame = distanceInFrame; |
| 1939 } | 1939 } |
| 1940 } | 1940 } |
| 1941 | 1941 |
| 1942 if (indexInBestFrame != -1) | 1942 if (indexInBestFrame != -1) |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2369 return; | 2369 return; |
| 2370 frame()->document()->markers()->setMarkersActive(range, active); | 2370 frame()->document()->markers()->setMarkersActive(range, active); |
| 2371 } | 2371 } |
| 2372 | 2372 |
| 2373 int WebFrameImpl::ordinalOfFirstMatchForFrame(WebFrameImpl* frame) const | 2373 int WebFrameImpl::ordinalOfFirstMatchForFrame(WebFrameImpl* frame) const |
| 2374 { | 2374 { |
| 2375 int ordinal = 0; | 2375 int ordinal = 0; |
| 2376 WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl(); | 2376 WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl(); |
| 2377 // Iterate from the main frame up to (but not including) |frame| and | 2377 // Iterate from the main frame up to (but not including) |frame| and |
| 2378 // add up the number of matches found so far. | 2378 // add up the number of matches found so far. |
| 2379 for (WebFrameImpl* it = mainFrameImpl; it != frame; it = static_cast<WebFram
eImpl*>(it->traverseNext(true))) { | 2379 for (WebFrameImpl* it = mainFrameImpl; it != frame; it = toWebFrameImpl(it->
traverseNext(true))) { |
| 2380 if (it->m_lastMatchCount > 0) | 2380 if (it->m_lastMatchCount > 0) |
| 2381 ordinal += it->m_lastMatchCount; | 2381 ordinal += it->m_lastMatchCount; |
| 2382 } | 2382 } |
| 2383 return ordinal; | 2383 return ordinal; |
| 2384 } | 2384 } |
| 2385 | 2385 |
| 2386 bool WebFrameImpl::shouldScopeMatches(const String& searchText) | 2386 bool WebFrameImpl::shouldScopeMatches(const String& searchText) |
| 2387 { | 2387 { |
| 2388 // Don't scope if we can't find a frame or a view. | 2388 // Don't scope if we can't find a frame or a view. |
| 2389 // The user may have closed the tab/application, so abort. | 2389 // The user may have closed the tab/application, so abort. |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2483 | 2483 |
| 2484 // There is a possibility that the frame being detached was the only | 2484 // There is a possibility that the frame being detached was the only |
| 2485 // pending one. We need to make sure final replies can be sent. | 2485 // pending one. We need to make sure final replies can be sent. |
| 2486 flushCurrentScopingEffort(m_findRequestIdentifier); | 2486 flushCurrentScopingEffort(m_findRequestIdentifier); |
| 2487 | 2487 |
| 2488 cancelPendingScopingEffort(); | 2488 cancelPendingScopingEffort(); |
| 2489 } | 2489 } |
| 2490 } | 2490 } |
| 2491 | 2491 |
| 2492 } // namespace WebKit | 2492 } // namespace WebKit |
| OLD | NEW |