Changeset 116456 in webkit


Ignore:
Timestamp:
May 8, 2012 2:57:21 PM (12 years ago)
Author:
wjmaclean@chromium.org
Message:

[chromium] Create LinkHighlightLayerChromium class to provide link-highlight preview animations for GraphicsLayerChromium.
https://bugs.webkit.org/show_bug.cgi?id=85084

Reviewed by James Robinson.

Source/WebCore:

Unit test provided.

Creates a layer delegate class to provide link highlight animations for link-preview feature.
These are added to a GraphicsLayerChromium via provided methods. Moves dispensing of animation
ids into a separate class.

  • WebCore.gypi:
  • platform/graphics/chromium/AnimationIdVendor.cpp: Added.

(WebCore):
(WebCore::AnimationIdVendor::getNextAnimationId):
(WebCore::AnimationIdVendor::getNextGroupId):

  • platform/graphics/chromium/AnimationIdVendor.h: Added.

(WebCore):
(AnimationIdVendor):

  • platform/graphics/chromium/GraphicsLayerChromium.cpp:

(WebCore::GraphicsLayerChromium::willBeDestroyed):
(WebCore::GraphicsLayerChromium::updateNames):
(WebCore::GraphicsLayerChromium::addAnimation):
(WebCore::GraphicsLayerChromium::addLinkHighlight):
(WebCore):
(WebCore::GraphicsLayerChromium::didFinishLinkHighlight):
(WebCore::GraphicsLayerChromium::updateChildList):
(WebCore::GraphicsLayerChromium::mapAnimationNameToId):

  • platform/graphics/chromium/GraphicsLayerChromium.h:

(WebCore):
(GraphicsLayerChromium):

  • platform/graphics/chromium/LinkHighlight.cpp: Added.

(WebCore):
(WebCore::LinkHighlight::create):
(WebCore::LinkHighlight::LinkHighlight):
(WebCore::LinkHighlight::~LinkHighlight):
(WebCore::LinkHighlight::contentLayer):
(WebCore::LinkHighlight::paintContents):
(WebCore::LinkHighlight::notifyAnimationStarted):
(WebCore::LinkHighlight::notifyAnimationFinished):

  • platform/graphics/chromium/LinkHighlight.h: Added.

(WebCore):
(LinkHighlight):

Source/WebKit/chromium:

  • WebKit.gypi:
  • tests/LinkHighlightTest.cpp: Added.

(WebCore):
(MockGraphicsLayerClient):
(WebCore::MockGraphicsLayerClient::notifyAnimationStarted):
(WebCore::MockGraphicsLayerClient::notifySyncRequired):
(WebCore::MockGraphicsLayerClient::paintContents):
(WebCore::MockGraphicsLayerClient::showDebugBorders):
(WebCore::MockGraphicsLayerClient::showRepaintCounter):
(WebCore::TEST):

Location:
trunk/Source
Files:
5 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r116453 r116456  
     12012-05-08  W. James MacLean  <wjmaclean@chromium.org>
     2
     3        [chromium] Create LinkHighlightLayerChromium class to provide link-highlight preview animations for GraphicsLayerChromium.
     4        https://bugs.webkit.org/show_bug.cgi?id=85084
     5
     6        Reviewed by James Robinson.
     7
     8        Unit test provided.
     9
     10        Creates a layer delegate class to provide link highlight animations for link-preview feature.
     11        These are added to a GraphicsLayerChromium via provided methods. Moves dispensing of animation
     12        ids into a separate class.
     13
     14        * WebCore.gypi:
     15        * platform/graphics/chromium/AnimationIdVendor.cpp: Added.
     16        (WebCore):
     17        (WebCore::AnimationIdVendor::getNextAnimationId):
     18        (WebCore::AnimationIdVendor::getNextGroupId):
     19        * platform/graphics/chromium/AnimationIdVendor.h: Added.
     20        (WebCore):
     21        (AnimationIdVendor):
     22        * platform/graphics/chromium/GraphicsLayerChromium.cpp:
     23        (WebCore::GraphicsLayerChromium::willBeDestroyed):
     24        (WebCore::GraphicsLayerChromium::updateNames):
     25        (WebCore::GraphicsLayerChromium::addAnimation):
     26        (WebCore::GraphicsLayerChromium::addLinkHighlight):
     27        (WebCore):
     28        (WebCore::GraphicsLayerChromium::didFinishLinkHighlight):
     29        (WebCore::GraphicsLayerChromium::updateChildList):
     30        (WebCore::GraphicsLayerChromium::mapAnimationNameToId):
     31        * platform/graphics/chromium/GraphicsLayerChromium.h:
     32        (WebCore):
     33        (GraphicsLayerChromium):
     34        * platform/graphics/chromium/LinkHighlight.cpp: Added.
     35        (WebCore):
     36        (WebCore::LinkHighlight::create):
     37        (WebCore::LinkHighlight::LinkHighlight):
     38        (WebCore::LinkHighlight::~LinkHighlight):
     39        (WebCore::LinkHighlight::contentLayer):
     40        (WebCore::LinkHighlight::paintContents):
     41        (WebCore::LinkHighlight::notifyAnimationStarted):
     42        (WebCore::LinkHighlight::notifyAnimationFinished):
     43        * platform/graphics/chromium/LinkHighlight.h: Added.
     44        (WebCore):
     45        (LinkHighlight):
     46
    1472012-05-08  Raphael Kubo da Costa  <rakuco@webkit.org>
    248
  • trunk/Source/WebCore/WebCore.gypi

    r116388 r116456  
    35303530            'platform/graphics/cg/PatternCG.cpp',
    35313531            'platform/graphics/cg/TransformationMatrixCG.cpp',
     3532            'platform/graphics/chromium/AnimationIdVendor.cpp',
     3533            'platform/graphics/chromium/AnimationIdVendor.h',
    35323534            'platform/graphics/chromium/BitmapCanvasLayerTextureUpdater.cpp',
    35333535            'platform/graphics/chromium/BitmapCanvasLayerTextureUpdater.h',
     
    35793581            'platform/graphics/chromium/LayerTextureSubImage.h',
    35803582            'platform/graphics/chromium/LayerTextureUpdater.h',
     3583            'platform/graphics/chromium/LinkHighlight.cpp',
     3584            'platform/graphics/chromium/LinkHighlight.h',
    35813585            'platform/graphics/chromium/ManagedTexture.cpp',
    35823586            'platform/graphics/chromium/ManagedTexture.h',
  • trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp

    r116342 r116456  
    4646#include "GraphicsLayerChromium.h"
    4747
     48#include "AnimationIdVendor.h"
    4849#include "Canvas2DLayerChromium.h"
    4950#include "ContentLayerChromium.h"
     
    5354#include "ImageLayerChromium.h"
    5455#include "LayerChromium.h"
     56#include "LinkHighlight.h"
    5557#include "PlatformString.h"
    5658#include "SystemTime.h"
     
    6163
    6264using namespace std;
    63 
    64 namespace {
    65 static int s_nextGroupId = 1;
    66 static int s_nextAnimationId = 1;
    67 }
    6865
    6966namespace WebCore {
     
    112109    }
    113110
     111    if (m_linkHighlight)
     112        m_linkHighlight.clear();
     113
    114114    GraphicsLayer::willBeDestroyed();
    115115}
     
    131131    if (m_contentsLayer)
    132132        m_contentsLayer->setDebugName("ContentsLayer for " + m_nameBase);
     133    if (m_linkHighlight)
     134        m_linkHighlight->contentLayer()->setDebugName("LinkHighlight for " + m_nameBase);
    133135}
    134136
     
    408410{
    409411    primaryLayer()->setLayerAnimationDelegate(this);
    410     return primaryLayer()->addAnimation(values, boxSize, animation, mapAnimationNameToId(animationName), s_nextGroupId++, timeOffset);
     412    return primaryLayer()->addAnimation(values, boxSize, animation, mapAnimationNameToId(animationName), AnimationIdVendor::getNextGroupId(), timeOffset);
    411413}
    412414
     
    432434{
    433435    primaryLayer()->resumeAnimations(monotonicallyIncreasingTime());
     436}
     437
     438void GraphicsLayerChromium::addLinkHighlight(const Path& path)
     439{
     440    m_linkHighlight = LinkHighlight::create(this, path, AnimationIdVendor::LinkHighlightAnimationId, AnimationIdVendor::getNextGroupId());
     441    updateChildList();
     442}
     443
     444void GraphicsLayerChromium::didFinishLinkHighlight()
     445{
     446    if (m_linkHighlight)
     447        m_linkHighlight->contentLayer()->removeFromParent();
     448
     449    m_linkHighlight.clear();
    434450}
    435451
     
    514530    }
    515531
     532    if (m_linkHighlight)
     533        newChildren.append(m_linkHighlight->contentLayer());
     534
    516535    for (size_t i = 0; i < newChildren.size(); ++i)
    517536        newChildren[i]->removeFromParent();
     
    750769
    751770    if (!m_animationIdMap.contains(animationName))
    752         m_animationIdMap.add(animationName, s_nextAnimationId++);
     771        m_animationIdMap.add(animationName, AnimationIdVendor::getNextAnimationId());
    753772
    754773    return m_animationIdMap.find(animationName)->second;
  • trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h

    r116342 r116456  
    4545
    4646class LayerChromium;
     47class LinkHighlight;
    4748
    4849class GraphicsLayerChromium : public GraphicsLayer, public ContentLayerDelegate, public CCLayerAnimationDelegate {
     
    106107    virtual void resumeAnimations();
    107108
     109    virtual void addLinkHighlight(const Path&);
     110    virtual void didFinishLinkHighlight();
     111
    108112    virtual PlatformLayer* platformLayer() const;
    109113
     
    158162    RefPtr<LayerChromium> m_transformLayer;
    159163    RefPtr<LayerChromium> m_contentsLayer;
     164    RefPtr<LinkHighlight> m_linkHighlight;
    160165
    161166    enum ContentsLayerPurpose {
  • trunk/Source/WebKit/chromium/ChangeLog

    r116433 r116456  
     12012-05-08  W. James MacLean  <wjmaclean@chromium.org>
     2
     3        [chromium] Create LinkHighlightLayerChromium class to provide link-highlight preview animations for GraphicsLayerChromium.
     4        https://bugs.webkit.org/show_bug.cgi?id=85084
     5
     6        Reviewed by James Robinson.
     7
     8        * WebKit.gypi:
     9        * tests/LinkHighlightTest.cpp: Added.
     10        (WebCore):
     11        (MockGraphicsLayerClient):
     12        (WebCore::MockGraphicsLayerClient::notifyAnimationStarted):
     13        (WebCore::MockGraphicsLayerClient::notifySyncRequired):
     14        (WebCore::MockGraphicsLayerClient::paintContents):
     15        (WebCore::MockGraphicsLayerClient::showDebugBorders):
     16        (WebCore::MockGraphicsLayerClient::showRepaintCounter):
     17        (WebCore::TEST):
     18
    1192012-05-08  Tony Chang  <tony@chromium.org>
    220
  • trunk/Source/WebKit/chromium/WebKit.gypi

    r116433 r116456  
    115115            'tests/LayerTextureUpdaterTest.cpp',
    116116            'tests/LevelDBTest.cpp',
     117            'tests/LinkHighlightTest.cpp',
    117118            'tests/LocalizedNumberICUTest.cpp',
    118119            'tests/MockCCQuadCuller.h',
Note: See TracChangeset for help on using the changeset viewer.