2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies)
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15 * its contributors may be used to endorse or promote products derived
16 * from this software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #import <WebCore/ChromeClient.h>
31 #import <WebCore/FocusDirection.h>
32 #import <wtf/Forward.h>
36 class WebChromeClient : public WebCore::ChromeClient {
38 WebChromeClient(WebView *webView);
39 WebView *webView() const { return m_webView; }
41 virtual void chromeDestroyed();
43 virtual void setWindowRect(const WebCore::FloatRect&);
44 virtual WebCore::FloatRect windowRect();
46 virtual WebCore::FloatRect pageRect();
48 virtual float scaleFactor();
51 virtual void unfocus();
53 virtual bool canTakeFocus(WebCore::FocusDirection);
54 virtual void takeFocus(WebCore::FocusDirection);
56 virtual void focusedNodeChanged(WebCore::Node*);
57 virtual void focusedFrameChanged(WebCore::Frame*);
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 source, WebCore::MessageType type, WebCore::MessageLevel level, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceURL);
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 bool shouldInterruptJavaScript();
91 virtual bool tabsToLinks() const;
93 virtual WebCore::IntRect windowResizerRect() const;
95 virtual void invalidateWindow(const WebCore::IntRect&, bool);
96 virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
97 virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
98 virtual void scroll(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& rectToScroll, const WebCore::IntRect& clipRect);
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 WebCore::ScrollView*) const;
106 virtual void setStatusbarText(const WTF::String&);
108 virtual void scrollbarsModeDidChange() const { }
109 virtual bool shouldMissingPluginMessageBeButton() const;
110 virtual void missingPluginButtonClicked(WebCore::Element*) const;
111 virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
113 virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
115 virtual void print(WebCore::Frame*);
117 virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String& databaseName);
119 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
120 virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
121 virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*);
123 virtual void populateVisitedLinks();
125 #if ENABLE(DASHBOARD_SUPPORT)
126 virtual void dashboardRegionsChanged();
129 virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
130 virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
132 virtual void setCursor(const WebCore::Cursor&);
134 virtual WebCore::FloatRect customHighlightRect(WebCore::Node*, const WTF::AtomicString& type,
135 const WebCore::FloatRect& lineRect);
136 virtual void paintCustomHighlight(WebCore::Node*, const WTF::AtomicString& type,
137 const WebCore::FloatRect& boxRect, const WebCore::FloatRect& lineRect,
138 bool behindText, bool entireLine);
140 virtual WebCore::KeyboardUIMode keyboardUIMode();
142 virtual NSResponder *firstResponder();
143 virtual void makeFirstResponder(NSResponder *);
145 virtual void willPopUpMenu(NSMenu *);
147 virtual bool shouldReplaceWithGeneratedFileForUpload(const WTF::String& path, WTF::String &generatedFilename);
148 virtual WTF::String generateReplacementFile(const WTF::String& path);
150 virtual void formStateDidChange(const WebCore::Node*) { }
152 virtual void formDidFocus(const WebCore::Node*);
153 virtual void formDidBlur(const WebCore::Node*);
155 virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; }
157 #if USE(ACCELERATED_COMPOSITING)
158 virtual void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*);
159 virtual void setNeedsOneShotDrawingSynchronization();
160 virtual void scheduleCompositingLayerSync();
164 virtual bool supportsFullscreenForNode(const WebCore::Node*);
165 virtual void enterFullscreenForNode(WebCore::Node*);
166 virtual void exitFullscreenForNode(WebCore::Node*);
169 #if ENABLE(FULLSCREEN_API)
170 virtual bool supportsFullScreenForElement(const WebCore::Element*);
171 virtual void enterFullScreenForElement(WebCore::Element*);
172 virtual void exitFullScreenForElement(WebCore::Element*);
175 virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
176 virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*) { }
178 virtual bool selectItemWritingDirectionIsNatural();
179 virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
180 virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
182 #if ENABLE(CONTEXT_MENUS)
183 virtual void showContextMenu() { }