[BLACKBERRY] Add notification if an element does not have touch move or mouse move...
[WebKit-https.git] / Source / WebKit / blackberry / Api / WebPageClient.h
1 /*
2  * Copyright (C) 2009, 2010, 2011, 2012 Research In Motion Limited. All rights reserved.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18
19 #ifndef WebPageClient_h
20 #define WebPageClient_h
21
22 #include "BlackBerryGlobal.h"
23 #include "WebString.h"
24
25 #include <BlackBerryPlatformCursor.h>
26 #include <BlackBerryPlatformInputEvents.h>
27 #include <BlackBerryPlatformNavigationType.h>
28 #include <BlackBerryPlatformPrimitives.h>
29 #include <imf/events.h>
30 #include <interaction/ScrollViewBase.h>
31 #include <vector>
32
33 template<typename T> class ScopeArray;
34 template<typename T> class SharedArray;
35
36 typedef void* WebFrame;
37
38 namespace BlackBerry {
39
40 namespace Platform {
41 class FilterStream;
42 class GeoTrackerListener;
43 class IntRectRegion;
44 class NetworkRequest;
45 class NetworkStreamFactory;
46
47 namespace Graphics {
48 class Window;
49 }
50 }
51
52 namespace WebKit {
53 class WebPage;
54
55 class BLACKBERRY_EXPORT WebPageClient {
56 public:
57     virtual ~WebPageClient() { }
58     enum WindowStyleFlag {
59         FlagWindowHasMenuBar = 0x00000001,
60         FlagWindowHasToolBar = 0x00000002,
61         FlagWindowHasLocationBar = 0x00000004,
62         FlagWindowHasStatusBar = 0x00000008,
63         FlagWindowHasScrollBar = 0x00000010,
64         FlagWindowIsResizable = 0x00000020,
65         FlagWindowIsFullScreen = 0x00000040,
66         FlagWindowIsDialog = 0x00000080,
67         FlagWindowDefault = 0xFFFFFFFF,
68     };
69
70     enum AlertType {
71         MediaOK = 0,
72         MediaDecodeError,
73         MediaMetaDataError,
74         MediaMetaDataTimeoutError,
75         MediaNoMetaDataError,
76         MediaVideoReceiveError,
77         MediaAudioReceiveError,
78         MediaInvalidError,
79     };
80
81     enum SaveCredentialType {
82         SaveCredentialNeverForThisSite = 0,
83         SaveCredentialNotNow,
84         SaveCredentialYes
85     };
86
87     virtual int getInstanceId() const = 0;
88
89     virtual void notifyLoadStarted() = 0;
90     virtual void notifyLoadCommitted(const unsigned short* originalUrl, unsigned int originalUrlLength, const unsigned short* finalUrl, unsigned int finalUrlLength, const unsigned short* networkToken, unsigned int networkTokenLength) = 0;
91     virtual void notifyLoadFailedBeforeCommit(const unsigned short* originalUrl, unsigned int originalUrlLength, const unsigned short* finalUrl, unsigned int finalUrlLength, const unsigned short* networkToken, unsigned int networkTokenLength) = 0;
92     virtual void notifyLoadToAnchor(const unsigned short* url, unsigned int urlLength, const unsigned short* networkToken, unsigned int networkTokenLength) = 0;
93     virtual void notifyLoadProgress(int percentage) = 0;
94     virtual void notifyLoadReadyToRender(bool pageIsVisuallyNonEmpty) = 0;
95     virtual void notifyFirstVisuallyNonEmptyLayout() = 0;
96     virtual void notifyLoadFinished(int status) = 0;
97     virtual void notifyClientRedirect(const unsigned short* originalUrl, unsigned int originalUrlLength, const unsigned short* finalUrl, unsigned int finalUrlLength) = 0;
98
99     virtual void notifyFrameDetached(const WebFrame) = 0;
100
101     virtual void notifyRunLayoutTestsFinished() = 0;
102
103     virtual void notifyInRegionScrollingStartingPointChanged(const std::vector<Platform::ScrollViewBase*>&) = 0;
104     virtual void notifyNoMouseMoveOrTouchMoveHandlers() = 0;
105
106     virtual void notifyDocumentOnLoad() = 0;
107
108     virtual void notifyWindowObjectCleared() = 0;
109     virtual WebString invokeClientJavaScriptCallback(const char* const* args, unsigned numArgs) = 0;
110
111     virtual void addMessageToConsole(const unsigned short* message, unsigned messageLength, const unsigned short* source, unsigned sourceLength, unsigned lineNumber) = 0;
112     virtual int showAlertDialog(AlertType) = 0;
113
114     virtual void runJavaScriptAlert(const unsigned short* message, unsigned messageLength, const char* origin, unsigned originLength) = 0;
115     virtual bool runJavaScriptConfirm(const unsigned short* message, unsigned messageLength, const char* origin, unsigned originLength) = 0;
116     virtual bool runJavaScriptPrompt(const unsigned short* message, unsigned messageLength, const unsigned short* defaultValue, unsigned defaultValueLength, const char* origin, unsigned originLength, WebString& result) = 0;
117     virtual bool runBeforeUnloadConfirmPanel(const unsigned short* message, unsigned messageLength, const char* origin, unsigned originLength) = 0;
118
119     virtual bool shouldInterruptJavaScript() = 0;
120
121     virtual void javascriptSourceParsed(const unsigned short* url, unsigned urlLength, const unsigned short* script, unsigned scriptLength) = 0;
122     virtual void javascriptParsingFailed(const unsigned short* url, unsigned urlLength, const unsigned short* error, unsigned errorLength, int lineNumber) = 0;
123     virtual void javascriptPaused(const unsigned short* stack, unsigned stackLength) = 0;
124     virtual void javascriptContinued() = 0;
125
126     // All of these methods use transformed coordinates.
127     virtual void contentsSizeChanged(const Platform::IntSize&) const = 0;
128     virtual void scrollChanged(const Platform::IntPoint&) const = 0;
129     virtual void zoomChanged(bool isMinZoomed, bool isMaxZoomed, bool isAtInitialZoom, double newZoom) const = 0;
130
131     virtual void requestUpdateViewport(int width, int height) = 0;
132
133     virtual void setPageTitle(const unsigned short* title, unsigned titleLength) = 0;
134
135     virtual Platform::Graphics::Window* window() const = 0;
136
137     virtual void notifyContentRendered(const Platform::IntRect&) = 0;
138     virtual void resizeSurfaceIfNeeded() = 0;
139
140     virtual void inputFocusGained(Platform::BlackBerryInputType, int inputStyle, Platform::VirtualKeyboardType, Platform::VirtualKeyboardEnterKeyType) = 0;
141     virtual void inputFocusLost() = 0;
142     virtual void inputTextChanged() = 0;
143     virtual void inputSelectionChanged(unsigned selectionStart, unsigned selectionEnd) = 0;
144     virtual void inputLearnText(wchar_t* text, int length) = 0;
145
146     virtual void showVirtualKeyboard(bool) = 0;
147
148     virtual void requestSpellingCheckingOptions(imf_sp_text_t&) = 0;
149     virtual int32_t checkSpellingOfStringAsync(wchar_t* text, int length) = 0;
150
151     virtual void notifySelectionDetailsChanged(const Platform::IntRect& start, const Platform::IntRect& end, const Platform::IntRectRegion&, bool overrideTouchHandling = false) = 0;
152     virtual void cancelSelectionVisuals() = 0;
153     virtual void notifySelectionHandlesReversed() = 0;
154     virtual void notifyCaretChanged(const Platform::IntRect& caret, bool userTouchTriggered, bool singleLineInput = false, const Platform::IntRect& singleLineBoundingBox = Platform::IntRect()) = 0;
155
156     virtual void cursorChanged(Platform::CursorType, const char* url, int x, int y) = 0;
157
158     virtual void requestGeolocationPermission(Platform::GeoTrackerListener*, void* context, const char* origin, unsigned originLength) = 0;
159     virtual void cancelGeolocationPermission(Platform::GeoTrackerListener*, void* context) = 0;
160     virtual Platform::NetworkStreamFactory* networkStreamFactory() = 0;
161
162     virtual void handleStringPattern(const unsigned short* pattern, unsigned length) = 0;
163     virtual void handleExternalLink(const Platform::NetworkRequest&, const unsigned short* context, unsigned contextLength, bool isClientRedirect) = 0;
164
165     virtual void resetBackForwardList(unsigned listSize, unsigned currentIndex) = 0;
166
167     virtual void openPopupList(bool multiple, int size, const ScopeArray<WebString>& labels, const bool* enableds, const int* itemType, const bool* selecteds) = 0;
168     virtual void openDateTimePopup(int type, const WebString& value, const WebString& min, const WebString& max, double step) = 0;
169     virtual void openColorPopup(const WebString& value) = 0;
170
171     virtual bool chooseFilenames(bool allowMultiple, const SharedArray<WebString>& acceptTypes, const SharedArray<WebString>& initialFiles, const WebString& capture, SharedArray<WebString>& chosenFiles) = 0;
172
173     virtual void loadPluginForMimetype(int, int width, int height, const SharedArray<WebString>& paramNames, const SharedArray<WebString>& paramValues, const char* url) = 0;
174     virtual void notifyPluginRectChanged(int, Platform::IntRect rectChanged) = 0;
175     virtual void destroyPlugin(int) = 0;
176     virtual void playMedia(int) = 0;
177     virtual void pauseMedia(int) = 0;
178     virtual float getTime(int) = 0;
179     virtual void setTime(int, float) = 0;
180     virtual void setVolume(int, float) = 0;
181     virtual void setMuted(int, bool) = 0;
182
183     virtual WebPage* createWindow(int x, int y, int width, int height, unsigned flags, const WebString& url, const WebString& windowName) = 0;
184
185     virtual void scheduleCloseWindow() = 0;
186
187     // Database interface.
188     virtual unsigned long long databaseQuota(const unsigned short* origin, unsigned originLength, const unsigned short* databaseName, unsigned databaseNameLength, unsigned long long totalUsage, unsigned long long originUsage, unsigned long long estimatedSize) = 0;
189
190     virtual void setIconForUrl(const char* originalPageUrl, const char* finalPageUrl, const char* iconUrl) = 0;
191     virtual void setFavicon(const char* dataInBase64, const char* url) = 0;
192     virtual void setLargeIcon(const char* iconUrl) = 0;
193     virtual void setWebAppCapable() = 0;
194     virtual void setSearchProviderDetails(const char* title, const char* documentUrl) = 0;
195     virtual void setAlternateFeedDetails(const char* title, const char* feedUrl) = 0;
196
197     virtual WebString getErrorPage(int errorCode, const char* errorMessage, const char* url) = 0;
198
199     virtual void willDeferLoading() = 0;
200     virtual void didResumeLoading() = 0;
201
202     // Headers is a list of alternating key and value.
203     virtual void setMetaHeaders(const ScopeArray<WebString>& headers, unsigned int headersSize) = 0;
204
205     virtual void needMoreData() = 0;
206     virtual void handleWebInspectorMessageToFrontend(int id, const char* message, int length) = 0;
207
208     virtual bool hasPendingScrollOrZoomEvent() const = 0;
209     virtual Platform::IntRect userInterfaceBlittedDestinationRect() const = 0;
210     virtual Platform::IntRect userInterfaceBlittedVisibleContentsRect() const = 0;
211
212     virtual void resetBitmapZoomScale(double scale) = 0;
213     virtual void animateBlockZoom(const Platform::FloatPoint& finalPoint, double finalScale) = 0;
214
215     virtual void setPreventsScreenIdleDimming(bool noDimming) = 0;
216     virtual bool authenticationChallenge(const unsigned short* realm, unsigned int realmLength, WebString& username, WebString& password) = 0;
217     virtual SaveCredentialType notifyShouldSaveCredential(bool isNew) = 0;
218     virtual void syncProxyCredential(const WebString& username, const WebString& password) = 0;
219     virtual void notifyPopupAutofillDialog(const std::vector<std::string>&, const Platform::IntRect&) = 0;
220     virtual void notifyDismissAutofillDialog() = 0;
221
222     virtual bool shouldPluginEnterFullScreen() = 0;
223     virtual void didPluginEnterFullScreen() = 0;
224     virtual void didPluginExitFullScreen() = 0;
225     virtual void onPluginStartBackgroundPlay() = 0;
226     virtual void onPluginStopBackgroundPlay() = 0;
227     virtual bool lockOrientation(bool landscape) = 0;
228     virtual void unlockOrientation() = 0;
229     virtual bool isActive() const = 0;
230     virtual bool isVisible() const = 0;
231     virtual void requestWebGLPermission(const WebString&) = 0;
232
233     virtual void setToolTip(WebString) = 0;
234     virtual void setStatus(WebString) = 0;
235     virtual bool acceptNavigationRequest(const Platform::NetworkRequest&, Platform::NavigationType) = 0;
236     virtual void cursorEventModeChanged(Platform::CursorEventMode) = 0;
237     virtual void touchEventModeChanged(Platform::TouchEventMode) = 0;
238
239     virtual bool downloadAllowed(const char* url) = 0;
240     virtual void downloadRequested(Platform::FilterStream*, const WebString& suggestedFilename) = 0;
241
242     virtual int fullscreenStart() = 0;
243     virtual int fullscreenStart(const char* contextName, Platform::Graphics::Window*, unsigned x, unsigned y, unsigned width, unsigned height) = 0;
244
245     virtual int fullscreenStop() = 0;
246
247     virtual int fullscreenWindowSet(unsigned x, unsigned y, unsigned width, unsigned height) = 0;
248
249     virtual void drawVerticalScrollbar() = 0;
250     virtual void drawHorizontalScrollbar() = 0;
251     virtual void populateCustomHeaders(Platform::NetworkRequest&) = 0;
252
253     virtual void notifyWillUpdateApplicationCache() = 0;
254     virtual void notifyDidLoadFromApplicationCache() = 0;
255
256     virtual void clearCookies() = 0;
257     virtual void clearCache() = 0;
258
259     virtual bool hasKeyboardFocus() = 0;
260     virtual bool createPopupWebView(const Platform::IntRect&) = 0;
261     virtual void closePopupWebView() = 0;
262
263     // Match with ChromeClient::CustomHandlersState.
264     enum ProtocolHandlersState {
265         ProtocolHandlersNew,
266         ProtocolHandlersRegistered,
267         ProtocolHandlersDeclined
268     };
269     virtual void registerProtocolHandler(const WebString& /*scheme*/, const WebString& /*baseURL*/, const WebString& /*url*/, const WebString& /*title*/) = 0;
270     virtual ProtocolHandlersState isProtocolHandlerRegistered(const WebString& /*scheme*/, const WebString& /*baseURL*/, const WebString& /*url*/) = 0;
271     virtual void unregisterProtocolHandler(const WebString& /*scheme*/, const WebString& /*baseURL*/, const WebString& /*url*/) = 0;
272 };
273 } // namespace WebKit
274 } // namespace BlackBerry
275
276 #endif // WebPageClient_h