Changeset 150091 in webkit
- Timestamp:
- May 14, 2013 3:40:20 PM (11 years ago)
- Location:
- trunk/Source/WebKit/blackberry
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/blackberry/Api/WebPage.cpp
r150071 r150091 6199 6199 if (m_cachedHitTestContentPos != contentPos) { 6200 6200 m_cachedHitTestContentPos = contentPos; 6201 m_cachedRectHitTestResults.clear(); 6201 6202 m_cachedHitTestResult = m_mainFrame->eventHandler()->hitTestResultAtPoint(m_cachedHitTestContentPos, HitTestRequest::ReadOnly | HitTestRequest::Active); 6202 6203 } -
trunk/Source/WebKit/blackberry/Api/WebPage_p.h
r150071 r150091 646 646 WebCore::HitTestResult m_cachedHitTestResult; 647 647 648 typedef HashMap<RefPtr<WebCore::Document>, ListHashSet<RefPtr<WebCore::Node> > > CachedRectHitTestResults; 649 CachedRectHitTestResults m_cachedRectHitTestResults; 650 648 651 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) 649 652 NotificationManager m_notificationManager; -
trunk/Source/WebKit/blackberry/ChangeLog
r150082 r150091 1 2013-05-14 Tiancheng Jiang <tijiang@rim.com> 2 3 [BlackBerry] Improve Fatfinger phase. 4 https://bugs.webkit.org/show_bug.cgi?id=107403 5 6 Reviewed by Rob Buis. 7 8 Internally reviewed by Genevieve Mak. 9 BlackBerry PR 324965. 10 11 Cache and reuse intersected nodes as long as hit position has not been 12 changed. 13 14 * Api/WebPage.cpp: 15 (BlackBerry::WebKit::WebPagePrivate::hitTestResult): 16 * Api/WebPage_p.h: 17 (WebPagePrivate): 18 * WebKitSupport/FatFingers.cpp: 19 (BlackBerry::WebKit::FatFingers::findBestPoint): 20 (BlackBerry::WebKit::FatFingers::findIntersectingRegions): 21 (BlackBerry::WebKit::FatFingers::getNodesFromRect): 22 * WebKitSupport/FatFingers.h: 23 1 24 2013-05-14 Andrew Lo <anlo@rim.com> 2 25 -
trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.cpp
r149809 r150091 160 160 m_contentPos = Platform::pointClampedToRect(m_contentPos, viewportRect); 161 161 162 m_cachedRectHitTestResults.clear();163 164 162 FatFingersResult result(m_contentPos); 165 163 … … 199 197 200 198 bool foundOne = findIntersectingRegions(m_webPage->m_mainFrame->document(), intersectingRegions, remainingFingerRegion); 201 202 m_cachedRectHitTestResults.clear();203 199 204 200 if (!foundOne) … … 315 311 // intersection of the bounding box with the finger rect. 316 312 ListHashSet<RefPtr<Node> > intersectedNodes; 317 getNodesFromRect(document, frameContentPos, intersectedNodes); 313 314 if (m_webPage->m_cachedRectHitTestResults.contains(document)) 315 intersectedNodes = m_webPage->m_cachedRectHitTestResults.get(document); 316 else 317 getNodesFromRect(document, frameContentPos, intersectedNodes); 318 318 319 319 ListHashSet<RefPtr<Node> >::const_iterator it = intersectedNodes.begin(); … … 479 479 document->renderView()->layer()->hitTest(requestType, result); 480 480 intersectedNodes = result.rectBasedTestResult(); 481 m_ cachedRectHitTestResults.add(document, intersectedNodes);481 m_webPage->m_cachedRectHitTestResults.add(document, intersectedNodes); 482 482 } 483 483 -
trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.h
r149809 r150091 73 73 typedef std::pair<WebCore::Node*, Platform::IntRectRegion> IntersectingRegion; 74 74 75 enum CachedResultsStrategy { GetFromRenderTree = 0, GetFromCache };76 typedef HashMap<RefPtr<WebCore::Document>, ListHashSet<RefPtr<WebCore::Node> > > CachedRectHitTestResults;77 78 75 bool checkFingerIntersection(const Platform::IntRectRegion&, 79 76 const Platform::IntRectRegion& remainingFingerRegion, … … 106 103 WebCore::IntPoint m_contentPos; 107 104 TargetType m_targetType; 108 CachedRectHitTestResults m_cachedRectHitTestResults;109 105 }; 110 106
Note: See TracChangeset
for help on using the changeset viewer.