[EFL] Disable REQUEST_ANIMATION_FRAME_TIMER to render a new animation frame.
[WebKit-https.git] / Source / WebKit / efl / WebCoreSupport / ChromeClientEfl.h
1 /*
2  * Copyright (C) 2007 Holger Hans Peter Freyther
3  * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia
4  * Copyright (C) 2009-2010 ProFUSION embedded systems
5  * Copyright (C) 2009-2010 Samsung Electronics
6  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public License
19  * along with this library; see the file COPYING.LIB.  If not, write to
20  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  * Boston, MA 02110-1301, USA.
22  */
23
24 #ifndef ChromeClientEfl_h
25 #define ChromeClientEfl_h
26
27 #include "ChromeClient.h"
28 #include "KURL.h"
29 #include "PopupMenu.h"
30
31 #if ENABLE(INPUT_TYPE_COLOR)
32 #include "ColorChooser.h"
33 #endif
34
35 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
36 #include "NotificationClient.h"
37 #endif
38
39 namespace WebCore {
40
41 class ChromeClientEfl : public ChromeClient {
42 public:
43     explicit ChromeClientEfl(Evas_Object* view);
44     virtual ~ChromeClientEfl();
45
46     virtual void chromeDestroyed();
47
48     virtual void* webView() const { return 0; }
49     virtual void setWindowRect(const FloatRect&);
50     virtual FloatRect windowRect();
51
52     virtual FloatRect pageRect();
53
54     virtual void focus();
55     virtual void unfocus();
56
57     virtual bool canTakeFocus(FocusDirection);
58     virtual void takeFocus(FocusDirection);
59
60     virtual void focusedNodeChanged(Node*);
61     virtual void focusedFrameChanged(Frame*);
62
63     virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&);
64     virtual void show();
65
66     virtual bool canRunModal();
67     virtual void runModal();
68
69     virtual void setToolbarsVisible(bool);
70     virtual bool toolbarsVisible();
71
72     virtual void setStatusbarVisible(bool);
73     virtual bool statusbarVisible();
74
75     virtual void setScrollbarsVisible(bool);
76     virtual bool scrollbarsVisible();
77
78     virtual void setMenubarVisible(bool);
79     virtual bool menubarVisible();
80
81     virtual void createSelectPopup(PopupMenuClient*, int selected, const IntRect&);
82     virtual bool destroySelectPopup();
83
84     virtual void setResizable(bool);
85
86     virtual void addMessageToConsole(MessageSource, MessageLevel, const String& message,
87                                      unsigned int lineNumber, const String& sourceID);
88
89     virtual bool canRunBeforeUnloadConfirmPanel();
90     virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame*);
91
92     virtual void closeWindowSoon();
93
94     virtual void runJavaScriptAlert(Frame*, const String&);
95     virtual bool runJavaScriptConfirm(Frame*, const String&);
96     virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result);
97     virtual void setStatusbarText(const String&);
98     virtual bool shouldInterruptJavaScript();
99     virtual WebCore::KeyboardUIMode keyboardUIMode();
100
101     virtual IntRect windowResizerRect() const;
102
103     virtual void contentsSizeChanged(Frame*, const IntSize&) const;
104     virtual IntPoint screenToRootView(const IntPoint&) const;
105     virtual IntRect rootViewToScreen(const IntRect&) const;
106     virtual PlatformPageClient platformPageClient() const;
107
108     virtual void scrollbarsModeDidChange() const;
109     virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
110
111     virtual void setToolTip(const String&, TextDirection);
112
113     virtual void print(Frame*);
114
115 #if ENABLE(SQL_DATABASE)
116     virtual void exceededDatabaseQuota(Frame*, const String&, DatabaseDetails);
117 #endif
118
119 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
120     virtual WebCore::NotificationClient* notificationPresenter() const;
121 #endif
122
123     virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
124     virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*, int64_t totalSpaceNeeded);
125
126     virtual void populateVisitedLinks();
127
128 #if ENABLE(TOUCH_EVENTS)
129     virtual void needTouchEvents(bool);
130 #endif
131
132 #if USE(ACCELERATED_COMPOSITING)
133     virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*);
134     virtual void setNeedsOneShotDrawingSynchronization();
135     virtual void scheduleCompositingLayerFlush();
136     virtual CompositingTriggerFlags allowedCompositingTriggers() const;
137 #endif
138
139 #if ENABLE(FULLSCREEN_API)
140     virtual bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard);
141     virtual void enterFullScreenForElement(WebCore::Element*);
142     virtual void exitFullScreenForElement(WebCore::Element*);
143 #endif
144
145 #if ENABLE(INPUT_TYPE_COLOR)
146     virtual PassOwnPtr<ColorChooser> createColorChooser(ColorChooserClient*, const Color&);
147     virtual void removeColorChooser();
148     virtual void updateColorChooser(const Color&);
149 #endif
150
151     virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
152     virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*);
153     virtual void formStateDidChange(const Node*);
154
155     virtual void setCursor(const Cursor&);
156     virtual void setCursorHiddenUntilMouseMoves(bool);
157
158 #if ENABLE(REQUEST_ANIMATION_FRAME) && !USE(REQUEST_ANIMATION_FRAME_TIMER)
159     virtual void scheduleAnimation();
160     virtual void serviceScriptedAnimations();
161 #endif
162
163     virtual void scrollRectIntoView(const IntRect&) const { }
164
165     virtual void cancelGeolocationPermissionForFrame(Frame*, Geolocation*);
166
167     virtual void invalidateContents(const IntRect&, bool);
168     virtual void invalidateRootView(const IntRect&, bool);
169     virtual void invalidateContentsAndRootView(const IntRect&, bool);
170     virtual void invalidateContentsForSlowScroll(const IntRect&, bool);
171     virtual void scroll(const IntSize&, const IntRect&, const IntRect&);
172     virtual void cancelGeolocationPermissionRequestForFrame(Frame*);
173     virtual void iconForFiles(const Vector<String, 0u>&, PassRefPtr<FileChooser>);
174
175     virtual void dispatchViewportPropertiesDidChange(const ViewportArguments&) const;
176
177     virtual bool selectItemWritingDirectionIsNatural();
178     virtual bool selectItemAlignmentFollowsMenuWritingDirection();
179     virtual bool hasOpenedPopup() const;
180     virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
181     virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
182
183     virtual bool shouldRubberBandInDirection(WebCore::ScrollDirection) const { return true; }
184     virtual void numWheelEventHandlersChanged(unsigned) { }
185
186 #if USE(TILED_BACKING_STORE)
187     virtual void delegatedScrollRequested(const IntPoint& scrollPoint);
188     virtual IntRect visibleRectForTiledBackingStore() const;
189 #endif
190
191     Evas_Object* m_view;
192     KURL m_hoveredLinkURL;
193 #if ENABLE(FULLSCREEN_API)
194     RefPtr<Element> m_fullScreenElement;
195 #endif
196 };
197 }
198
199 #endif // ChromeClientEfl_h