| Index: Source/core/platform/graphics/chromium/Canvas2DLayerBridge.h | 
| diff --git a/Source/core/platform/graphics/chromium/Canvas2DLayerBridge.h b/Source/core/platform/graphics/chromium/Canvas2DLayerBridge.h | 
| index 12f87fa0f0dd9af0e2c5a6eb8c314d46ec4bd97f..477192543cc957b3e243cc148925395722327bca 100644 | 
| --- a/Source/core/platform/graphics/chromium/Canvas2DLayerBridge.h | 
| +++ b/Source/core/platform/graphics/chromium/Canvas2DLayerBridge.h | 
| @@ -43,7 +43,25 @@ class WebGraphicsContext3D; | 
|  | 
| namespace WebCore { | 
|  | 
| -class Canvas2DLayerBridge : public WebKit::WebExternalTextureLayerClient, public SkDeferredCanvas::NotificationClient, public DoublyLinkedListNode<Canvas2DLayerBridge> { | 
| +class Canvas2DLayerBridge; | 
| +class PassCanvas2DLayerBridgePtr; | 
| + | 
| +class Canvas2DLayerBridgePtr { | 
| +public: | 
| +    Canvas2DLayerBridgePtr() { } | 
| +    Canvas2DLayerBridgePtr(const PassRefPtr<Canvas2DLayerBridge>& ptr) { m_ptr = ptr; } | 
| +    ~Canvas2DLayerBridgePtr() { clear(); } | 
| +    Canvas2DLayerBridge* operator->() const { return m_ptr.get(); } | 
| +    Canvas2DLayerBridgePtr& operator=(const PassRefPtr<Canvas2DLayerBridge>&); | 
| +    Canvas2DLayerBridge* get() const { return m_ptr.get(); } | 
| +    operator bool () const { return m_ptr; } | 
| +    void clear(); | 
| +    PassRefPtr<Canvas2DLayerBridge> release() WARN_UNUSED_RETURN { return m_ptr.release(); } | 
| +private: | 
| +    RefPtr<Canvas2DLayerBridge> m_ptr; | 
| +}; | 
| + | 
| +class Canvas2DLayerBridge : public WebKit::WebExternalTextureLayerClient, public SkDeferredCanvas::NotificationClient, public DoublyLinkedListNode<Canvas2DLayerBridge>, public RefCounted<Canvas2DLayerBridge> { | 
| WTF_MAKE_NONCOPYABLE(Canvas2DLayerBridge); | 
| public: | 
| enum OpacityMode { | 
| @@ -51,7 +69,7 @@ public: | 
| NonOpaque | 
| }; | 
|  | 
| -    static PassOwnPtr<Canvas2DLayerBridge> create(PassRefPtr<GraphicsContext3D>, const IntSize&, OpacityMode); | 
| +    static PassRefPtr<Canvas2DLayerBridge> create(PassRefPtr<GraphicsContext3D>, const IntSize&, OpacityMode); | 
|  | 
| virtual ~Canvas2DLayerBridge(); | 
|  | 
| @@ -82,6 +100,8 @@ public: | 
| bool isValid(); | 
|  | 
| protected: | 
| +    void destroy(); | 
| +    friend class Canvas2DLayerBridgePtr; | 
| Canvas2DLayerBridge(PassRefPtr<GraphicsContext3D>, SkDeferredCanvas*, OpacityMode); | 
| void setRateLimitingEnabled(bool); | 
|  | 
| @@ -92,6 +112,7 @@ protected: | 
| bool m_didRecordDrawCommand; | 
| bool m_surfaceIsValid; | 
| int m_framesPending; | 
| +    bool m_destructionInProgress; | 
| bool m_rateLimitingEnabled; | 
|  | 
| friend class WTF::DoublyLinkedListNode<Canvas2DLayerBridge>; | 
| @@ -108,6 +129,7 @@ protected: | 
| WebKit::WebExternalTextureMailbox m_mailbox; | 
| SkAutoTUnref<SkImage> m_image; | 
| MailboxStatus m_status; | 
| +        RefPtr<Canvas2DLayerBridge> m_parentLayerBridge; | 
|  | 
| MailboxInfo(const MailboxInfo&); | 
| MailboxInfo() {} | 
| @@ -117,7 +139,5 @@ protected: | 
| uint32_t m_lastImageId; | 
| Vector<MailboxInfo> m_mailboxes; | 
| }; | 
| - | 
| } | 
| - | 
| #endif | 
|  |