initial import
[vuplus_webkit] / Source / WebKit2 / UIProcess / TiledDrawingAreaProxy.h
1 /*
2  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef TiledDrawingAreaProxy_h
27 #define TiledDrawingAreaProxy_h
28
29 #if ENABLE(TILED_BACKING_STORE)
30
31 #include "DrawingAreaProxy.h"
32 #include <WebCore/GraphicsContext.h>
33 #include <WebCore/IntRect.h>
34 #include <wtf/HashSet.h>
35
36 #include "RunLoop.h"
37
38 #if PLATFORM(MAC)
39 #include <wtf/RetainPtr.h>
40 #ifdef __OBJC__
41 @class WKView;
42 #else
43 class WKView;
44 #endif
45 #endif
46
47 namespace WebCore {
48 class GraphicsContext;
49 }
50
51 namespace WebKit {
52
53 class ShareableBitmap;
54 class TiledDrawingAreaTileSet;
55 class WebPageProxy;
56
57 #if PLATFORM(MAC)
58 typedef WKView PlatformWebView;
59 #elif PLATFORM(WIN)
60 class WebView;
61 typedef WebView PlatformWebView;
62 #elif PLATFORM(QT)
63 class TouchViewInterface;
64 typedef TouchViewInterface PlatformWebView;
65 #endif
66
67 class TiledDrawingAreaProxy : public DrawingAreaProxy {
68 public:
69     static PassOwnPtr<TiledDrawingAreaProxy> create(PlatformWebView* webView, WebPageProxy*);
70
71     TiledDrawingAreaProxy(PlatformWebView*, WebPageProxy*);
72     virtual ~TiledDrawingAreaProxy();
73
74     void setVisibleContentRectAndScale(const WebCore::IntRect&, float);
75     void setVisibleContentRectTrajectoryVector(const WebCore::FloatPoint&);
76     void renderNextFrame();
77
78 #if USE(ACCELERATED_COMPOSITING)
79     virtual void attachCompositingContext(uint32_t /* contextID */) { }
80     virtual void detachCompositingContext() { }
81 #endif
82
83 private:
84     WebPageProxy* page();
85     void updateWebView(const Vector<WebCore::IntRect>& paintedArea);
86
87     // DrawingAreaProxy
88     virtual bool paint(const WebCore::IntRect&, PlatformDrawingContext);
89     virtual void sizeDidChange();
90     virtual void deviceScaleFactorDidChange();
91     virtual void setPageIsVisible(bool isVisible);
92
93     virtual void createTile(int tileID, const UpdateInfo&);
94     virtual void updateTile(int tileID, const UpdateInfo&);
95     virtual void didRenderFrame();
96     virtual void removeTile(int tileID);
97
98
99 private:
100     bool m_isWaitingForDidSetFrameNotification;
101     bool m_isVisible;
102
103     PlatformWebView* m_webView;
104 #if PLATFORM(QT)
105     // Maps tile IDs to node IDs.
106     HashMap<int, int> m_tileNodeMap;
107 #endif
108 };
109
110 } // namespace WebKit
111
112 #endif // TILED_BACKING_STORE
113
114 #endif // TiledDrawingAreaProxy_h