Changeset 126319 in webkit
- Timestamp:
- Aug 22, 2012 10:51:44 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 112 added
- 1 deleted
- 10 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r126317 r126319 1 2012-08-22 W. James MacLean <wjmaclean@chromium.org> 2 3 [chromium] Add touch link highlight animation layers. 4 https://bugs.webkit.org/show_bug.cgi?id=84487 5 6 Reviewed by James Robinson. 7 8 Adds support for creating composited touch link highlights in renderer thread. Clipping not yet 9 implemented for non-composited frames/overflow divs, but scrolling and layout changes are supported. 10 Transform support currently limited to translation. 11 12 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html: Added. 13 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-composite.html: Added. 14 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-noncomposite.html: Added. 15 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html: Added. 16 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited.html: Added. 17 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html: Added. 18 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe.html: Added. 19 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html: Added. 20 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html: Added. 21 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html: Added. 22 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html: Added. 23 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html: Added. 24 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-composite.html: Added. 25 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-noncomposite.html: Added. 26 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html: Added. 27 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div.html: Added. 28 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner.html: Added. 29 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer.html: Added. 30 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-late-composite.html: Added. 31 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner.html: Added. 32 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer-late-composite.html: Added. 33 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer.html: Added. 34 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe.html: Added. 35 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner.html: Added. 36 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer.html: Added. 37 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner.html: Added. 38 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner.html: Added. 39 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer.html: Added. 40 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer.html: Added. 41 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner.html: Added. 42 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer.html: Added. 43 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div.html: Added. 44 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-window-scroll.html: Added. 45 * platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple.html: Added. 46 * platform/chromium-linux/compositing/gestures/resources/1-frame-composited.html: Added. 47 * platform/chromium-linux/compositing/gestures/resources/1-frame-noncomposited.html: Added. 48 * platform/chromium-linux/compositing/gestures/resources/1-nested-frame-composited.html: Added. 49 * platform/chromium-linux/compositing/gestures/resources/1-nested-frame-noncomposited.html: Added. 50 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-expected.png: Added. 51 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-expected.txt: Added. 52 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped-expected.png: Added. 53 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped-expected.txt: Added. 54 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-expected.png: Added. 55 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-expected.txt: Added. 56 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-composite-expected.png: Added. 57 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-composite-expected.txt: Added. 58 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-noncomposite-expected.png: Added. 59 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-noncomposite-expected.txt: Added. 60 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-expected.png: Added. 61 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-expected.txt: Added. 62 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled-expected.png: Added. 63 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled-expected.txt: Added. 64 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-expected.png: Added. 65 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-expected.txt: Added. 66 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip-expected.png: Added. 67 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip-expected.txt: Added. 68 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled-expected.png: Added. 69 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled-expected.txt: Added. 70 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-expected.png: Added. 71 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-expected.txt: Added. 72 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2-expected.png: Added. 73 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2-expected.txt: Added. 74 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-expected.png: Added. 75 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-expected.txt: Added. 76 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-expected.png: Added. 77 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-expected.txt: Added. 78 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-composite-expected.png: Added. 79 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-composite-expected.txt: Added. 80 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-noncomposite-expected.png: Added. 81 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-noncomposite-expected.txt: Added. 82 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner-expected.png: Added. 83 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner-expected.txt: Added. 84 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer-expected.png: Added. 85 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer-expected.txt: Added. 86 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-expected.png: Added. 87 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-expected.txt: Added. 88 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-expected.png: Added. 89 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-expected.txt: Added. 90 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-late-composite-expected.png: Added. 91 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-late-composite-expected.txt: Added. 92 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer-expected.png: Added. 93 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer-expected.txt: Added. 94 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer-late-composite-expected.png: Added. 95 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer-late-composite-expected.txt: Added. 96 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-expected.png: Added. 97 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-expected.txt: Added. 98 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner-expected.png: Added. 99 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner-expected.txt: Added. 100 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer-expected.png: Added. 101 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer-expected.txt: Added. 102 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-expected.png: Added. 103 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-expected.txt: Added. 104 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner-expected.png: Added. 105 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner-expected.txt: Added. 106 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer-expected.png: Added. 107 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer-expected.txt: Added. 108 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-expected.png: Added. 109 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-expected.txt: Added. 110 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner-expected.png: Added. 111 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner-expected.txt: Added. 112 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer-expected.png: Added. 113 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer-expected.txt: Added. 114 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-expected.png: Added. 115 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-expected.txt: Added. 116 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-window-scroll-expected.png: Added. 117 * platform/chromium-linux/platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-window-scroll-expected.txt: Added. 118 1 119 2012-08-22 Kenneth Russell <kbr@google.com> 2 120 -
trunk/Source/WebCore/ChangeLog
r126315 r126319 1 2012-08-22 W. James MacLean <wjmaclean@chromium.org> 2 3 [chromium] Add touch link highlight animation layers. 4 https://bugs.webkit.org/show_bug.cgi?id=84487 5 6 Reviewed by James Robinson. 7 8 Adds support for creating composited touch link highlights in renderer thread. Clipping not yet 9 implemented for non-composited frames/overflow divs, but scrolling and layout changes are supported. 10 Transform support currently limited to translation. 11 12 Unit tests for LinkHighlight revised. 13 14 Tests: platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html 15 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-composite.html 16 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-noncomposite.html 17 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html 18 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited.html 19 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled-clipped.html 20 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html 21 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe.html 22 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html 23 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html 24 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html 25 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html 26 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html 27 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scroll-clip.html 28 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-composite.html 29 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-noncomposite.html 30 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html 31 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div.html 32 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner.html 33 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer.html 34 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-clipped.html 35 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-late-composite.html 36 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner.html 37 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer-clipped.html 38 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer-late-composite.html 39 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer.html 40 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe.html 41 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner.html 42 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer.html 43 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner.html 44 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner.html 45 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer.html 46 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer.html 47 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner.html 48 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer.html 49 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-overflow-div.html 50 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-rotated.html 51 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-scaledX.html 52 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-scaledY.html 53 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-window-scroll.html 54 platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple.html 55 56 * WebCore.gypi: 57 * platform/graphics/chromium/GraphicsLayerChromium.cpp: 58 (WebCore::GraphicsLayerChromium::GraphicsLayerChromium): 59 (WebCore::GraphicsLayerChromium::willBeDestroyed): Adds notification to LinkHighlight when layer goes away. 60 (WebCore::GraphicsLayerChromium::updateNames): Now sets debug name for LinkHighlight layer. 61 (WebCore::GraphicsLayerChromium::setSize): Invalidates LinkHighlight if present. 62 (WebCore::GraphicsLayerChromium::setNeedsDisplay): Invalidates LinkHighlight if present. 63 (WebCore::GraphicsLayerChromium::setNeedsDisplayInRect): Invalidates LinkHighlight if present. 64 (WebCore::GraphicsLayerChromium::setLinkHighlight): Registers LinkHighlightClient* with GraphicsLayerChromium. 65 (WebCore::GraphicsLayerChromium::updateChildList): Now adds LinkHighlight WebLayer if highlight active. 66 (WebCore::GraphicsLayerChromium::updateLayerIsDrawable): Invalidates LinkHighlight if present. 67 * platform/graphics/chromium/GraphicsLayerChromium.h: 68 (WebCore): 69 (LinkHighlightClient): Abstract interface seen by GraphicsLayerChromium. 70 (WebCore::LinkHighlightClient::~LinkHighlightClient): 71 (GraphicsLayerChromium): 72 (WebCore::GraphicsLayerChromium::linkHighlight): 73 * platform/graphics/chromium/LinkHighlight.cpp: Removed. 74 1 75 2012-08-22 Gustavo Noronha Silva <gns@gnome.org> 2 76 -
trunk/Source/WebCore/WebCore.gypi
r126314 r126319 3666 3666 'platform/graphics/chromium/ImageBufferDataSkia.h', 3667 3667 'platform/graphics/chromium/ImageChromium.cpp', 3668 'platform/graphics/chromium/LinkHighlight.cpp',3669 'platform/graphics/chromium/LinkHighlight.h',3670 3668 'platform/graphics/chromium/MediaPlayerPrivateChromium.h', 3671 3669 'platform/graphics/chromium/OpaqueRectTrackingContentLayerDelegate.cpp', -
trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp
r126174 r126319 53 53 #include "GraphicsContext.h" 54 54 #include "Image.h" 55 #include "LinkHighlight.h"56 55 #include "NativeImageSkia.h" 57 56 #include "PlatformContextSkia.h" … … 84 83 GraphicsLayerChromium::GraphicsLayerChromium(GraphicsLayerClient* client) 85 84 : GraphicsLayer(client) 85 , m_linkHighlight(0) 86 86 , m_contentsLayerPurpose(NoContentsLayer) 87 87 , m_contentsLayerHasBackgroundColor(false) … … 121 121 } 122 122 123 if (m_linkHighlight) 124 m_linkHighlight.clear(); 123 if (m_linkHighlight) { 124 m_linkHighlight->clearCurrentGraphicsLayer(); 125 m_linkHighlight = 0; 126 } 125 127 126 128 GraphicsLayer::willBeDestroyed(); … … 151 153 if (m_linkHighlight) { 152 154 String debugName = "LinkHighlight for " + m_nameBase; 153 m_linkHighlight-> contentLayer()->setDebugName(debugName);155 m_linkHighlight->layer()->setDebugName(debugName); 154 156 } 155 157 } … … 234 236 updateLayerSize(); 235 237 236 if (m_pageScaleChanged && !m_layer.isNull()) 238 if (m_pageScaleChanged && !m_layer.isNull()) { 237 239 m_layer.invalidate(); 240 if (m_linkHighlight) 241 m_linkHighlight->invalidate(); 242 } 238 243 m_pageScaleChanged = false; 239 244 } … … 454 459 void GraphicsLayerChromium::setNeedsDisplay() 455 460 { 456 if (drawsContent()) 461 if (drawsContent()) { 457 462 m_layer.invalidate(); 463 if (m_linkHighlight) 464 m_linkHighlight->invalidate(); 465 } 458 466 } 459 467 460 468 void GraphicsLayerChromium::setNeedsDisplayInRect(const FloatRect& rect) 461 469 { 462 if (drawsContent()) 470 if (drawsContent()) { 463 471 m_layer.invalidateRect(rect); 472 if (m_linkHighlight) 473 m_linkHighlight->invalidate(); 474 } 464 475 } 465 476 … … 565 576 } 566 577 567 void GraphicsLayerChromium:: addLinkHighlight(const Path& path)568 { 569 m_linkHighlight = LinkHighlight::create(this, path, AnimationIdVendor::LinkHighlightAnimationId, AnimationIdVendor::getNextGroupId());578 void GraphicsLayerChromium::setLinkHighlight(LinkHighlightClient* linkHighlight) 579 { 580 m_linkHighlight = linkHighlight; 570 581 updateChildList(); 571 }572 573 void GraphicsLayerChromium::didFinishLinkHighlight()574 {575 if (m_linkHighlight)576 m_linkHighlight->contentLayer()->removeFromParent();577 578 m_linkHighlight.clear();579 582 } 580 583 … … 654 657 655 658 if (m_linkHighlight) 656 newChildren.append( m_linkHighlight->contentLayer());659 newChildren.append(*m_linkHighlight->layer()); 657 660 658 661 for (size_t i = 0; i < newChildren.size(); ++i) … … 786 789 m_contentsLayer.setDrawsContent(m_contentsVisible); 787 790 788 if (m_drawsContent) 791 if (m_drawsContent) { 789 792 m_layer.invalidate(); 793 if (m_linkHighlight) 794 m_linkHighlight->invalidate(); 795 } 790 796 791 797 updateDebugIndicators(); -
trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h
r126174 r126319 46 46 47 47 class LayerChromium; 48 class LinkHighlight;49 48 class Path; 49 50 class LinkHighlightClient { 51 public: 52 virtual void invalidate() = 0; 53 virtual void clearCurrentGraphicsLayer() = 0; 54 virtual WebKit::WebLayer* layer() = 0; 55 56 protected: 57 virtual ~LinkHighlightClient() { } 58 }; 50 59 51 60 class GraphicsLayerChromium : public GraphicsLayer, public GraphicsContextPainter, public WebKit::WebAnimationDelegate { … … 110 119 virtual void resumeAnimations(); 111 120 112 virtual void addLinkHighlight(const Path&); 113 virtual void didFinishLinkHighlight(); 121 void setLinkHighlight(LinkHighlightClient*); 122 // Next function for testing purposes. 123 LinkHighlightClient* linkHighlight() { return m_linkHighlight; } 114 124 115 125 virtual PlatformLayer* platformLayer() const; … … 161 171 WebKit::WebLayer m_transformLayer; 162 172 WebKit::WebLayer m_contentsLayer; 173 LinkHighlightClient* m_linkHighlight; 163 174 164 175 OwnPtr<OpaqueRectTrackingContentLayerDelegate> m_opaqueRectTrackingContentLayerDelegate; … … 176 187 bool m_pageScaleChanged; 177 188 178 RefPtr<LinkHighlight> m_linkHighlight;179 180 189 typedef HashMap<String, int> AnimationIdMap; 181 190 AnimationIdMap m_animationIdMap; -
trunk/Source/WebKit/chromium/ChangeLog
r126274 r126319 1 2012-08-22 W. James MacLean <wjmaclean@chromium.org> 2 3 [chromium] Add touch link highlight animation layers. 4 https://bugs.webkit.org/show_bug.cgi?id=84487 5 6 Reviewed by James Robinson. 7 8 Adds support for creating composited touch link highlights in renderer thread. Clipping not yet 9 implemented for non-composited frames/overflow divs, but scrolling and layout changes are supported. 10 Transform support currently limited to translation. 11 12 Unit tests for LinkHighlight revised. 13 14 * WebKit.gyp: 15 * src/LinkHighlight.cpp: Added. 16 (WebKit): 17 (WebKit::LinkHighlight::create): 18 (WebKit::LinkHighlight::LinkHighlight): 19 (WebKit::LinkHighlight::~LinkHighlight): 20 (WebKit::LinkHighlight::contentLayer): Accessor for layer containing highlight. 21 (WebKit::LinkHighlight::clipLayer): Accessor for layer that provides clipping for highlight. 22 (WebKit::LinkHighlight::releaseResources): Releases Node* for highlight target, clears client/delegate pointers. 23 (WebKit::LinkHighlight::computeEnclosingCompositingLayer): Determines which GraphicsLayerChromium to attach highlight to. 24 (WebKit::LinkHighlight::computeHighlightLayerPathAndPosition): Determines coordinates of highlight in owning GraphicsLayerChromium's coordinates. 25 (WebKit::LinkHighlight::paintContents): If highlight active, paints highlight. 26 (WebKit::LinkHighlight::startHighlightAnimation): Called to start highlight animation. 27 (WebKit::LinkHighlight::clearGraphicsLayerLinkHighlightPointer): Removes this LinkHighlight's pointer from owning GraphicsLayerChromium. 28 (WebKit::LinkHighlight::notifyAnimationStarted): Implements WebAnimationDelegate. 29 (WebKit::LinkHighlight::notifyAnimationFinished): Implements WebAnimationDelegate, releases resources when animation completes. 30 (WebKit::LinkHighlight::updateGeometry): Invokes computation of which GraphicsLayerChromium to attach to, and highlight shape & position. 31 Computations proceed only if preceded by call to invalidate(). 32 (WebKit::LinkHighlight::clearCurrentGraphicsLayer): Handles notification that current GraphicsLayerChromium* is no longer valid. 33 (WebKit::LinkHighlight::invalidate): Sets flag to allow geometry update on next call from WebViewImpl::layout(). 34 (WebKit::LinkHighlight::layer): Exports WebLayer* for use in GraphicsLayerChromium. 35 * src/LinkHighlight.h: Renamed from Source/WebCore/platform/graphics/chromium/LinkHighlight.h. 36 (WebCore): 37 (WebKit): 38 (LinkHighlight): 39 * src/WebViewImpl.cpp: 40 (WebKit::WebViewImpl::handleGestureEvent): 41 (WebKit): 42 (WebKit::highlightConditions): 43 (WebKit::WebViewImpl::bestTouchLinkNode): Find highlight target node for touch event location. 44 (WebKit::WebViewImpl::enableTouchHighlight): Invokes highlight for node at current touch event location. 45 (WebKit::WebViewImpl::layout): Adds call to LinkHighlight::updateGeometry(). 46 * src/WebViewImpl.h: 47 (WebKit): 48 (WebViewImpl): 49 (WebKit::WebViewImpl::linkHighlight): 50 * tests/LinkHighlightTest.cpp: 51 (WebCore): 52 (WebCore::TEST): 53 * tests/data/test_touch_link_highlight.html: Added. 54 1 55 2012-08-22 Sheriff Bot <webkit.review.bot@gmail.com> 2 56 -
trunk/Source/WebKit/chromium/WebKit.gyp
r126012 r126319 423 423 'src/InspectorFrontendClientImpl.cpp', 424 424 'src/InspectorFrontendClientImpl.h', 425 'src/LinkHighlight.cpp', 426 'src/LinkHighlight.h', 425 427 'src/NonCompositedContentHost.cpp', 426 428 'src/NonCompositedContentHost.h', … … 714 716 'tests/LevelDBTest.cpp', 715 717 'tests/ListenerLeakTest.cpp', 718 'tests/LinkHighlightTest.cpp', 716 719 'tests/PopupMenuTest.cpp', 717 720 'tests/RenderTableCellTest.cpp', -
trunk/Source/WebKit/chromium/src/LinkHighlight.h
r126317 r126319 27 27 #define LinkHighlight_h 28 28 29 #include "ContentLayerChromium.h" 29 #include "FloatPoint.h" 30 #include "GraphicsLayerChromium.h" 31 #include "IntPoint.h" 30 32 #include "Path.h" 31 33 #include <public/WebAnimationDelegate.h> 32 #include <wtf/RefPtr.h> 33 34 #if USE(ACCELERATED_COMPOSITING) 34 #include <public/WebContentLayer.h> 35 #include <public/WebContentLayerClient.h> 36 #include <public/WebLayer.h> 37 #include <wtf/OwnPtr.h> 35 38 36 39 namespace WebCore { 40 class RenderLayer; 41 class Node; 42 } 37 43 38 class GraphicsLayerChromium; 44 namespace WebKit { 39 45 40 class LinkHighlight : public RefCounted<LinkHighlight>, public ContentLayerDelegate, public WebKit::WebAnimationDelegate { 46 class WebFloatRect; 47 class WebRect; 48 class WebViewImpl; 49 50 class LinkHighlight : public WebContentLayerClient, public WebAnimationDelegate, WebCore::LinkHighlightClient { 41 51 public: 42 static Pass RefPtr<LinkHighlight> create(GraphicsLayerChromium* parent, const Path&, int animationId, int groupId);52 static PassOwnPtr<LinkHighlight> create(WebCore::Node*, WebViewImpl*); 43 53 virtual ~LinkHighlight(); 44 54 45 ContentLayerChromium* contentLayer(); 55 WebContentLayer* contentLayer(); 56 WebLayer* clipLayer(); 57 void startHighlightAnimation(); 58 void updateGeometry(); 46 59 47 // ContentLayerDelegateimplementation.48 virtual void paintContents( SkCanvas*, const IntRect& clipRect,FloatRect& opaque) OVERRIDE;60 // WebContentLayerClient implementation. 61 virtual void paintContents(WebCanvas*, const WebRect& clipRect, WebFloatRect& opaque) OVERRIDE; 49 62 50 63 // WebAnimationDelegate implementation. … … 52 65 virtual void notifyAnimationFinished(double time) OVERRIDE; 53 66 67 // LinkHighlightClient inplementation. 68 virtual void invalidate() OVERRIDE; 69 virtual WebLayer* layer() OVERRIDE; 70 virtual void clearCurrentGraphicsLayer() OVERRIDE; 71 54 72 private: 55 LinkHighlight( GraphicsLayerChromium* parent, const Path&, int animationId, int groupId);73 LinkHighlight(WebCore::Node*, WebViewImpl*); 56 74 57 RefPtr<ContentLayerChromium> m_contentLayer; 58 GraphicsLayerChromium* m_parent; 59 Path m_path; 75 void releaseResources(); 76 77 WebCore::RenderLayer* computeEnclosingCompositingLayer(); 78 void clearGraphicsLayerLinkHighlightPointer(); 79 // This function computes the highlight path, and returns true if it has changed 80 // size since the last call to this function. 81 bool computeHighlightLayerPathAndPosition(WebCore::RenderLayer*); 82 83 WebContentLayer m_contentLayer; 84 WebLayer m_clipLayer; 85 WebCore::Path m_path; 86 87 RefPtr<WebCore::Node> m_node; 88 OwnPtr<WebAnimation> m_animation; 89 WebViewImpl* m_owningWebViewImpl; 90 WebCore::GraphicsLayerChromium* m_currentGraphicsLayer; 91 92 bool m_geometryNeedsUpdate; 93 WebCore::FloatPoint m_graphicsLayerOffset; 60 94 }; 61 95 62 } // namespace WebCore 63 64 #endif // USE(ACCELERATED_COMPOSITING) 96 } // namespace WebKit 65 97 66 98 #endif -
trunk/Source/WebKit/chromium/src/WebViewImpl.cpp
r126200 r126319 84 84 #include "KeyboardEvent.h" 85 85 #include "LayerPainterChromium.h" 86 #include "LinkHighlight.h" 86 87 #include "MIMETypeRegistry.h" 87 88 #include "NodeRenderStyle.h" … … 729 730 return handled; 730 731 } 732 case WebInputEvent::GestureTapDown: { 733 // Queue a highlight animation, then hand off to regular handler. 734 #if OS(LINUX) 735 enableTouchHighlight(IntPoint(event.x, event.y)); 736 #endif 737 PlatformGestureEventBuilder platformEvent(mainFrameImpl()->frameView(), event); 738 return mainFrameImpl()->frame()->eventHandler()->handleGestureEvent(platformEvent); 739 } 731 740 case WebInputEvent::GestureScrollBegin: 732 741 case WebInputEvent::GestureScrollEnd: 733 742 case WebInputEvent::GestureScrollUpdate: 734 case WebInputEvent::GestureTapDown:735 743 case WebInputEvent::GestureDoubleTap: 736 744 case WebInputEvent::GesturePinchBegin: … … 1117 1125 scroll.y = rect.y; 1118 1126 } 1127 1128 static bool highlightConditions(Node* node) 1129 { 1130 return node->isLink() 1131 || node->supportsFocus() 1132 || node->hasEventListeners(eventNames().clickEvent) 1133 || node->hasEventListeners(eventNames().mousedownEvent) 1134 || node->hasEventListeners(eventNames().mouseupEvent); 1135 } 1136 1137 Node* WebViewImpl::bestTouchLinkNode(IntPoint touchEventLocation) 1138 { 1139 if (!m_page || !m_page->mainFrame()) 1140 return 0; 1141 1142 Node* bestTouchNode = 0; 1143 1144 // FIXME: Should accept a search region from the caller instead of hard-coding the size. 1145 IntSize touchEventSearchRegionSize(4, 2); 1146 m_page->mainFrame()->eventHandler()->bestClickableNodeForTouchPoint(touchEventLocation, touchEventSearchRegionSize, touchEventLocation, bestTouchNode); 1147 // bestClickableNodeForTouchPoint() doesn't always return a node that is a link, so let's try and find 1148 // a link to highlight. 1149 while (bestTouchNode && !highlightConditions(bestTouchNode)) 1150 bestTouchNode = bestTouchNode->parentNode(); 1151 1152 return bestTouchNode; 1153 } 1154 1155 void WebViewImpl::enableTouchHighlight(IntPoint touchEventLocation) 1156 { 1157 Node* touchNode = bestTouchLinkNode(touchEventLocation); 1158 1159 if (!touchNode || !touchNode->renderer() || !touchNode->renderer()->enclosingLayer()) 1160 return; 1161 1162 Color highlightColor = touchNode->renderer()->style()->tapHighlightColor(); 1163 // Safari documentation for -webkit-tap-highlight-color says if the specified color has 0 alpha, 1164 // then tap highlighting is disabled. 1165 // http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safaricssref/articles/standardcssproperties.html 1166 if (!highlightColor.alpha()) 1167 return; 1168 1169 // This will clear any highlight currently being displayed. 1170 m_linkHighlight = LinkHighlight::create(touchNode, this); 1171 m_linkHighlight->startHighlightAnimation(); 1172 } 1173 1119 1174 #endif 1120 1175 … … 1654 1709 TRACE_EVENT0("webkit", "WebViewImpl::layout"); 1655 1710 PageWidgetDelegate::layout(m_page.get()); 1711 1712 if (m_linkHighlight) 1713 m_linkHighlight->updateGeometry(); 1656 1714 } 1657 1715 -
trunk/Source/WebKit/chromium/src/WebViewImpl.h
r126200 r126319 95 95 class DragScrollTimer; 96 96 class GeolocationClientProxy; 97 class LinkHighlight; 97 98 class WebHelperPluginImpl; 98 99 class NonCompositedContentHost; … … 564 565 #if ENABLE(GESTURE_EVENTS) 565 566 void computeScaleAndScrollForHitRect(const WebRect& hitRect, AutoZoomType, float& scale, WebPoint& scroll); 567 WebCore::Node* bestTouchLinkNode(WebCore::IntPoint touchEventLocation); 568 void enableTouchHighlight(WebCore::IntPoint touchEventLocation); 566 569 #endif 567 570 void animateZoomAroundPoint(const WebCore::IntPoint&, AutoZoomType); … … 586 589 virtual bool isPointerLocked(); 587 590 #endif 591 592 #if ENABLE(GESTURE_EVENTS) 593 // Exposed for tests. 594 LinkHighlight* linkHighlight() { return m_linkHighlight.get(); } 595 #endif 596 588 597 589 598 private: … … 853 862 WebPoint m_lastWheelGlobalPosition; 854 863 int m_flingModifier; 864 #if ENABLE(GESTURE_EVENTS) 865 OwnPtr<LinkHighlight> m_linkHighlight; 866 #endif 855 867 }; 856 868 -
trunk/Source/WebKit/chromium/tests/LinkHighlightTest.cpp
r119178 r126319 27 27 #include "LinkHighlight.h" 28 28 29 #include "AnimationIdVendor.h" 30 #include "GraphicsLayerChromium.h" 31 #include "GraphicsLayerClient.h" 29 #include "FrameTestHelpers.h" 32 30 #include "IntRect.h" 33 #include "Path.h" 31 #include "Node.h" 32 #include "URLTestHelpers.h" 33 #include "WebFrame.h" 34 #include "WebViewImpl.h" 34 35 #include <gtest/gtest.h> 35 #include <public/WebTransformationMatrix.h> 36 #include <public/WebCompositor.h> 37 #include <public/WebContentLayer.h> 38 #include <public/WebFloatPoint.h> 39 #include <public/WebSize.h> 36 40 #include <wtf/PassOwnPtr.h> 37 41 42 using namespace WebKit; 38 43 using namespace WebCore; 39 using WebKit::WebTransformationMatrix;40 44 41 45 namespace { 42 46 43 class MockGraphicsLayerClient : public GraphicsLayerClient { 44 public: 45 virtual void notifyAnimationStarted(const GraphicsLayer*, double time) OVERRIDE { } 46 virtual void notifySyncRequired(const GraphicsLayer*) OVERRIDE { } 47 virtual void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const IntRect& inClip) OVERRIDE { } 48 virtual bool showDebugBorders(const GraphicsLayer*) const OVERRIDE { return false; } 49 virtual bool showRepaintCounter(const GraphicsLayer*) const OVERRIDE { return false; } 50 }; 47 #if ENABLE(GESTURE_EVENTS) 48 TEST(LinkHighlightTest, verifyWebViewImplIntegration) 49 { 50 WebCompositor::initialize(0); 51 51 52 TEST(LinkHighlightTest, verifyLinkHighlightLayer) 53 { 54 Path highlightPath; 55 highlightPath.addRect(FloatRect(5, 6, 12, 8)); 56 IntRect pathBoundingRect = enclosingIntRect(highlightPath.boundingRect()); 52 const std::string baseURL("http://www.test.com/"); 53 const std::string fileName("test_touch_link_highlight.html"); 57 54 58 RefPtr<LinkHighlight> highlight = LinkHighlight::create(0, highlightPath, AnimationIdVendor::LinkHighlightAnimationId, AnimationIdVendor::getNextGroupId()); 59 ASSERT_TRUE(highlight.get()); 60 ContentLayerChromium* contentLayer = highlight->contentLayer(); 61 ASSERT_TRUE(contentLayer); 55 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL.c_str()), WebString::fromUTF8("test_touch_link_highlight.html")); 56 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(FrameTestHelpers::createWebViewAndLoad(baseURL + fileName, true)); 57 int pageWidth = 640; 58 int pageHeight = 480; 59 webViewImpl->resize(WebSize(pageWidth, pageHeight)); 60 webViewImpl->layout(); 62 61 63 EXPECT_EQ(pathBoundingRect.size(), contentLayer->bounds()); 64 EXPECT_TRUE(contentLayer->transform().isIdentityOrTranslation()); 65 EXPECT_TRUE(contentLayer->transform().isIntegerTranslation()); 62 // The coordinates below are linked to absolute positions in the referenced .html file. 63 IntPoint touchEventLocation(20, 20); 64 Node* touchNode = webViewImpl->bestTouchLinkNode(touchEventLocation); 65 ASSERT_TRUE(touchNode); 66 66 67 float expectedXTranslation = pathBoundingRect.x() + pathBoundingRect.width() / 2; 68 float expectedYTranslation = pathBoundingRect.y() + pathBoundingRect.height() / 2; 69 EXPECT_FLOAT_EQ(expectedXTranslation, contentLayer->transform().m41()); 70 EXPECT_FLOAT_EQ(expectedYTranslation, contentLayer->transform().m42()); 67 touchEventLocation = IntPoint(20, 40); 68 EXPECT_FALSE(webViewImpl->bestTouchLinkNode(touchEventLocation)); 69 70 touchEventLocation = IntPoint(20, 20); 71 // Shouldn't crash. 72 73 webViewImpl->enableTouchHighlight(touchEventLocation); 74 EXPECT_TRUE(webViewImpl->linkHighlight()); 75 EXPECT_TRUE(webViewImpl->linkHighlight()->contentLayer()); 76 EXPECT_TRUE(webViewImpl->linkHighlight()->clipLayer()); 77 78 // Find a target inside a scrollable div 79 80 touchEventLocation = IntPoint(20, 100); 81 webViewImpl->enableTouchHighlight(touchEventLocation); 82 ASSERT_TRUE(webViewImpl->linkHighlight()); 83 84 webViewImpl->close(); 85 WebCompositor::shutdown(); 71 86 } 72 73 TEST(LinkHighlightTest, verifyGraphicsLayerChromiumEmbedding) 74 { 75 MockGraphicsLayerClient client; 76 OwnPtr<GraphicsLayerChromium> graphicsLayer = static_pointer_cast<GraphicsLayerChromium>(GraphicsLayer::create(&client)); 77 ASSERT_TRUE(graphicsLayer.get()); 78 79 Path highlightPath; 80 highlightPath.addRect(FloatRect(5, 5, 10, 8)); 81 82 // Neither of the following operations should crash. 83 graphicsLayer->addLinkHighlight(highlightPath); 84 graphicsLayer->didFinishLinkHighlight(); 85 } 87 #endif 86 88 87 89 } // namespace
Note: See TracChangeset
for help on using the changeset viewer.