Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Side by Side Diff: Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 14296003: Remove TOUCH_EVENTS and TOUCH_EVENT_TRACKING compile-time flags. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/page/scrolling/ScrollingCoordinator.h ('k') | Source/core/platform/PlatformEvent.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 void ScrollingCoordinator::frameViewLayoutUpdated(FrameView* frameView) 106 void ScrollingCoordinator::frameViewLayoutUpdated(FrameView* frameView)
107 { 107 {
108 ASSERT(m_page); 108 ASSERT(m_page);
109 109
110 // Compute the region of the page that we can't do fast scrolling for. This currently includes 110 // Compute the region of the page that we can't do fast scrolling for. This currently includes
111 // all scrollable areas, such as subframes, overflow divs and list boxes, wh ose composited 111 // all scrollable areas, such as subframes, overflow divs and list boxes, wh ose composited
112 // scrolling are not enabled. We need to do this even if the frame view whos e layout was updated 112 // scrolling are not enabled. We need to do this even if the frame view whos e layout was updated
113 // is not the main frame. 113 // is not the main frame.
114 Region nonFastScrollableRegion = computeNonFastScrollableRegion(m_page->main Frame(), IntPoint()); 114 Region nonFastScrollableRegion = computeNonFastScrollableRegion(m_page->main Frame(), IntPoint());
115 setNonFastScrollableRegion(nonFastScrollableRegion); 115 setNonFastScrollableRegion(nonFastScrollableRegion);
116 #if ENABLE(TOUCH_EVENT_TRACKING)
117 Vector<IntRect> touchEventTargetRects; 116 Vector<IntRect> touchEventTargetRects;
118 computeAbsoluteTouchEventTargetRects(m_page->mainFrame()->document(), touchE ventTargetRects); 117 computeAbsoluteTouchEventTargetRects(m_page->mainFrame()->document(), touchE ventTargetRects);
119 setTouchEventTargetRects(touchEventTargetRects); 118 setTouchEventTargetRects(touchEventTargetRects);
120 #endif
121 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(frameView)) 119 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(frameView))
122 scrollLayer->setBounds(frameView->contentsSize()); 120 scrollLayer->setBounds(frameView->contentsSize());
123 } 121 }
124 122
125 void ScrollingCoordinator::setLayerIsContainerForFixedPositionLayers(GraphicsLay er* layer, bool enable) 123 void ScrollingCoordinator::setLayerIsContainerForFixedPositionLayers(GraphicsLay er* layer, bool enable)
126 { 124 {
127 if (WebLayer* scrollableLayer = scrollingWebLayerForGraphicsLayer(layer)) 125 if (WebLayer* scrollableLayer = scrollingWebLayerForGraphicsLayer(layer))
128 scrollableLayer->setIsContainerForFixedPositionLayers(enable); 126 scrollableLayer->setIsContainerForFixedPositionLayers(enable);
129 } 127 }
130 128
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) { 289 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) {
292 WebVector<WebRect> webRects(absoluteHitTestRects.size()); 290 WebVector<WebRect> webRects(absoluteHitTestRects.size());
293 for (size_t i = 0; i < absoluteHitTestRects.size(); ++i) 291 for (size_t i = 0; i < absoluteHitTestRects.size(); ++i)
294 webRects[i] = absoluteHitTestRects[i]; 292 webRects[i] = absoluteHitTestRects[i];
295 scrollLayer->setTouchEventHandlerRegion(webRects); 293 scrollLayer->setTouchEventHandlerRegion(webRects);
296 } 294 }
297 } 295 }
298 296
299 void ScrollingCoordinator::touchEventTargetRectsDidChange(const Document*) 297 void ScrollingCoordinator::touchEventTargetRectsDidChange(const Document*)
300 { 298 {
301 #if ENABLE(TOUCH_EVENT_TRACKING)
302 // The rects are always evaluated and used in the main frame coordinates. 299 // The rects are always evaluated and used in the main frame coordinates.
303 FrameView* frameView = m_page->mainFrame()->view(); 300 FrameView* frameView = m_page->mainFrame()->view();
304 Document* document = m_page->mainFrame()->document(); 301 Document* document = m_page->mainFrame()->document();
305 302
306 // Wait until after layout to update. 303 // Wait until after layout to update.
307 if (frameView->needsLayout() || !document) 304 if (frameView->needsLayout() || !document)
308 return; 305 return;
309 306
310 Vector<IntRect> touchEventTargetRects; 307 Vector<IntRect> touchEventTargetRects;
311 computeAbsoluteTouchEventTargetRects(document, touchEventTargetRects); 308 computeAbsoluteTouchEventTargetRects(document, touchEventTargetRects);
312 setTouchEventTargetRects(touchEventTargetRects); 309 setTouchEventTargetRects(touchEventTargetRects);
313 #endif
314 } 310 }
315 311
316 void ScrollingCoordinator::setWheelEventHandlerCount(unsigned count) 312 void ScrollingCoordinator::setWheelEventHandlerCount(unsigned count)
317 { 313 {
318 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) 314 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view()))
319 scrollLayer->setHaveWheelEventHandlers(count > 0); 315 scrollLayer->setHaveWheelEventHandlers(count > 0);
320 } 316 }
321 317
322 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView * frameView) 318 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView * frameView)
323 { 319 {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 } 382 }
387 } 383 }
388 384
389 FrameTree* tree = frame->tree(); 385 FrameTree* tree = frame->tree();
390 for (Frame* subFrame = tree->firstChild(); subFrame; subFrame = subFrame->tr ee()->nextSibling()) 386 for (Frame* subFrame = tree->firstChild(); subFrame; subFrame = subFrame->tr ee()->nextSibling())
391 nonFastScrollableRegion.unite(computeNonFastScrollableRegion(subFrame, o ffset)); 387 nonFastScrollableRegion.unite(computeNonFastScrollableRegion(subFrame, o ffset));
392 388
393 return nonFastScrollableRegion; 389 return nonFastScrollableRegion;
394 } 390 }
395 391
396 #if ENABLE(TOUCH_EVENT_TRACKING)
397 static void accumulateRendererTouchEventTargetRects(Vector<IntRect>& rects, cons t RenderObject* renderer, const IntRect& parentRect = IntRect()) 392 static void accumulateRendererTouchEventTargetRects(Vector<IntRect>& rects, cons t RenderObject* renderer, const IntRect& parentRect = IntRect())
398 { 393 {
399 IntRect adjustedParentRect = parentRect; 394 IntRect adjustedParentRect = parentRect;
400 if (parentRect.isEmpty() || renderer->isFloating() || renderer->isPositioned () || renderer->hasTransform()) { 395 if (parentRect.isEmpty() || renderer->isFloating() || renderer->isPositioned () || renderer->hasTransform()) {
401 // FIXME: This method is O(N^2) as it walks the tree to the root for eve ry renderer. RenderGeometryMap would fix this. 396 // FIXME: This method is O(N^2) as it walks the tree to the root for eve ry renderer. RenderGeometryMap would fix this.
402 IntRect r = enclosingIntRect(renderer->clippedOverflowRectForRepaint(0)) ; 397 IntRect r = enclosingIntRect(renderer->clippedOverflowRectForRepaint(0)) ;
403 if (!r.isEmpty()) { 398 if (!r.isEmpty()) {
404 // Convert to the top-level view's coordinates. 399 // Convert to the top-level view's coordinates.
405 ASSERT(renderer->document()->view()); 400 ASSERT(renderer->document()->view());
406 r = renderer->document()->view()->convertToRootView(r); 401 r = renderer->document()->view()->convertToRootView(r);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 452
458 void ScrollingCoordinator::computeAbsoluteTouchEventTargetRects(const Document* document, Vector<IntRect>& rects) 453 void ScrollingCoordinator::computeAbsoluteTouchEventTargetRects(const Document* document, Vector<IntRect>& rects)
459 { 454 {
460 ASSERT(document); 455 ASSERT(document);
461 if (!document->view()) 456 if (!document->view())
462 return; 457 return;
463 458
464 // FIXME: These rects won't be properly updated if the renderers are in a su b-tree that scrolls. 459 // FIXME: These rects won't be properly updated if the renderers are in a su b-tree that scrolls.
465 accumulateDocumentEventTargetRects(rects, document); 460 accumulateDocumentEventTargetRects(rects, document);
466 } 461 }
467 #endif
468 462
469 unsigned ScrollingCoordinator::computeCurrentWheelEventHandlerCount() 463 unsigned ScrollingCoordinator::computeCurrentWheelEventHandlerCount()
470 { 464 {
471 unsigned wheelEventHandlerCount = 0; 465 unsigned wheelEventHandlerCount = 0;
472 466
473 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree()->trave rseNext()) { 467 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree()->trave rseNext()) {
474 if (frame->document()) 468 if (frame->document())
475 wheelEventHandlerCount += frame->document()->wheelEventHandlerCount( ); 469 wheelEventHandlerCount += frame->document()->wheelEventHandlerCount( );
476 } 470 }
477 471
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 stringBuilder.resize(stringBuilder.length() - 2); 619 stringBuilder.resize(stringBuilder.length() - 2);
626 return stringBuilder.toString(); 620 return stringBuilder.toString();
627 } 621 }
628 622
629 String ScrollingCoordinator::mainThreadScrollingReasonsAsText() const 623 String ScrollingCoordinator::mainThreadScrollingReasonsAsText() const
630 { 624 {
631 return mainThreadScrollingReasonsAsText(mainThreadScrollingReasons()); 625 return mainThreadScrollingReasonsAsText(mainThreadScrollingReasons());
632 } 626 }
633 627
634 } // namespace WebCore 628 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/page/scrolling/ScrollingCoordinator.h ('k') | Source/core/platform/PlatformEvent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698