2 * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
13 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 #ifndef ChromeClientWinCE_h
26 #define ChromeClientWinCE_h
28 #include "ChromeClient.h"
34 class ChromeClientWinCE : public WebCore::ChromeClient {
36 ChromeClientWinCE(WebView* webView);
38 virtual void chromeDestroyed();
40 virtual void* webView() const { return 0; }
41 virtual void setWindowRect(const WebCore::FloatRect&);
42 virtual WebCore::FloatRect windowRect();
44 virtual WebCore::FloatRect pageRect();
47 virtual void unfocus();
49 virtual bool canTakeFocus(WebCore::FocusDirection);
50 virtual void takeFocus(WebCore::FocusDirection);
52 virtual void focusedNodeChanged(WebCore::Node*);
53 virtual void focusedFrameChanged(WebCore::Frame*);
55 // The Frame pointer provides the ChromeClient with context about which
56 // Frame wants to create the new Page. Also, the newly created window
57 // should not be shown to the user until the ChromeClient of the newly
58 // created Page has its show method called.
59 virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&);
62 virtual bool canRunModal();
63 virtual void runModal();
65 virtual void setToolbarsVisible(bool);
66 virtual bool toolbarsVisible();
68 virtual void setStatusbarVisible(bool);
69 virtual bool statusbarVisible();
71 virtual void setScrollbarsVisible(bool);
72 virtual bool scrollbarsVisible();
74 virtual void setMenubarVisible(bool);
75 virtual bool menubarVisible();
77 virtual void setResizable(bool);
79 virtual void addMessageToConsole(WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceID);
81 virtual bool canRunBeforeUnloadConfirmPanel();
82 virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
84 virtual void closeWindowSoon();
86 virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
87 virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
88 virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
89 virtual void setStatusbarText(const WTF::String&);
90 virtual bool shouldInterruptJavaScript();
91 virtual WebCore::KeyboardUIMode keyboardUIMode();
93 virtual WebCore::IntRect windowResizerRect() const;
95 // Methods used by HostWindow.
96 virtual void invalidateWindow(const WebCore::IntRect&, bool);
97 virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
98 virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
99 virtual void scroll(const WebCore::IntSize&, const WebCore::IntRect&, const WebCore::IntRect&);
100 virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const;
101 virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const;
102 virtual PlatformPageClient platformPageClient() const;
103 virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
104 virtual void scrollRectIntoView(const WebCore::IntRect&) const; // Currently only Mac has a non empty implementation.
105 virtual void scrollbarsModeDidChange() const;
106 virtual void setCursor(const WebCore::Cursor&);
107 virtual void setCursorHiddenUntilMouseMoves(bool);
108 // End methods used by HostWindow.
110 virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
112 virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
114 virtual void print(WebCore::Frame*);
117 virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String& databaseName);
120 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
121 // Callback invoked when the application cache fails to save a cache object
122 // because storing it would grow the database file past its defined maximum
123 // size or past the amount of free space on the device.
124 // The chrome client would need to take some action such as evicting some
126 virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
128 // Callback invoked when the application cache origin quota is reached. This
129 // means that the resources attempting to be cached via the manifest are
130 // more than allowed on this origin. This callback allows the chrome client
131 // to take action, such as prompting the user to ask to increase the quota
133 virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t totalSpaceNeeded);
136 #if ENABLE(CONTEXT_MENUS)
137 virtual void showContextMenu() { }
140 #if ENABLE(NOTIFICATIONS)
141 virtual WebCore::NotificationPresenter* notificationPresenter() const;
144 // This can be either a synchronous or asynchronous call. The ChromeClient can display UI asking the user for permission
145 // to use Geolocation.
146 virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
147 virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
149 virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
150 // Asynchronous request to load an icon for specified filenames.
151 virtual void loadIconForFiles(const Vector<WTF::String>&, WebCore::FileIconLoader*);
153 // Notification that the given form element has changed. This function
154 // will be called frequently, so handling should be very fast.
155 virtual void formStateDidChange(const WebCore::Node*);
157 #if USE(ACCELERATED_COMPOSITING)
158 // Pass 0 as the GraphicsLayer to detatch the root layer.
159 virtual void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*);
160 // Sets a flag to specify that the next time content is drawn to the window,
161 // the changes appear on the screen in synchrony with updates to GraphicsLayers.
162 virtual void setNeedsOneShotDrawingSynchronization();
163 // Sets a flag to specify that the view needs to be updated, so we need
164 // to do an eager layout before the drawing.
165 virtual void scheduleCompositingLayerSync();
168 virtual void setLastSetCursorToCurrentCursor();
170 #if ENABLE(TOUCH_EVENTS)
171 virtual void needTouchEvents(bool);
174 virtual bool selectItemWritingDirectionIsNatural();
175 virtual bool selectItemAlignmentFollowsMenuWritingDirection();
176 virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
177 virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
179 virtual bool shouldRubberBandInDirection(WebCore::ScrollDirection) const { return true; }
180 virtual void numWheelEventHandlersChanged(unsigned) { }
186 } // namespace WebKit
188 #endif // ChromeClientWinCE_h