• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2010 Apple Inc. All rights reserved.
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 DrawingArea_h
27  #define DrawingArea_h
28  
29  #include "DrawingAreaInfo.h"
30  #include <WebCore/IntRect.h>
31  #include <wtf/Noncopyable.h>
32  #include <wtf/PassOwnPtr.h>
33  
34  namespace CoreIPC {
35      class ArgumentDecoder;
36      class Connection;
37      class MessageID;
38  }
39  
40  namespace WebCore {
41      class GraphicsLayer;
42  }
43  
44  namespace WebKit {
45  
46  class WebPage;
47  struct WebPageCreationParameters;
48  
49  class DrawingArea {
50      WTF_MAKE_NONCOPYABLE(DrawingArea);
51  
52  public:
53      static PassOwnPtr<DrawingArea> create(WebPage*, const WebPageCreationParameters&);
54      virtual ~DrawingArea();
55  
56  #if PLATFORM(MAC) || PLATFORM(WIN)
57      void didReceiveDrawingAreaMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
58  #endif
59  
60      virtual void setNeedsDisplay(const WebCore::IntRect&) = 0;
61      virtual void scroll(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset) = 0;
62  
63      // FIXME: These should be pure virtual.
pageBackgroundTransparencyChanged()64      virtual void pageBackgroundTransparencyChanged() { }
forceRepaint()65      virtual void forceRepaint() { }
66  
didInstallPageOverlay()67      virtual void didInstallPageOverlay() { }
didUninstallPageOverlay()68      virtual void didUninstallPageOverlay() { }
setPageOverlayNeedsDisplay(const WebCore::IntRect &)69      virtual void setPageOverlayNeedsDisplay(const WebCore::IntRect&) { }
70  
71  #if USE(ACCELERATED_COMPOSITING)
72      virtual void setRootCompositingLayer(WebCore::GraphicsLayer*) = 0;
73      virtual void scheduleCompositingLayerSync() = 0;
74      virtual void syncCompositingLayers() = 0;
75  #endif
76  
77      virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) = 0;
78  
79  protected:
80      DrawingArea(DrawingAreaType, WebPage*);
81  
82      DrawingAreaType m_type;
83      WebPage* m_webPage;
84  
85  private:
86      // CoreIPC message handlers.
87      // FIXME: These should be pure virtual.
updateBackingStoreState(uint64_t backingStoreStateID,bool respondImmediately,const WebCore::IntSize & size,const WebCore::IntSize & scrollOffset)88      virtual void updateBackingStoreState(uint64_t backingStoreStateID, bool respondImmediately, const WebCore::IntSize& size, const WebCore::IntSize& scrollOffset) { }
didUpdate()89      virtual void didUpdate() { }
suspendPainting()90      virtual void suspendPainting() { }
resumePainting()91      virtual void resumePainting() { }
92  };
93  
94  } // namespace WebKit
95  
96  #endif // DrawingArea_h
97