10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*
20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2006 Zack Rusin <zack@kde.org>
30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com> All rights reserved.
4db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without
80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions
90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * are met:
100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1. Redistributions of source code must retain the above copyright
110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *    notice, this list of conditions and the following disclaimer.
120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright
130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *    notice, this list of conditions and the following disclaimer in the
140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *    documentation and/or other materials provided with the distribution.
150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */
280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#ifndef ChromeClientHaiku_h
300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#define ChromeClientHaiku_h
310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ChromeClient.h"
330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "FloatRect.h"
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "RefCounted.h"
350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore {
370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    class FloatRect;
390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    class Page;
400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    struct FrameLoadRequest;
410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    class ChromeClientHaiku : public ChromeClient {
430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    public:
440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        ChromeClientHaiku();
450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        virtual ~ChromeClientHaiku();
4628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void chromeDestroyed();
470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
4828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setWindowRect(const FloatRect&);
4928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual FloatRect windowRect();
500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
5128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual FloatRect pageRect();
520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
5328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual float scaleFactor();
540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
5528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void focus();
5628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void unfocus();
570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
5828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool canTakeFocus(FocusDirection);
5928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void takeFocus(FocusDirection);
600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
6128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void focusedNodeChanged(Node*);
6228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void focusedFrameChanged(Frame*);
63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
6428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&);
6528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual Page* createModalDialog(Frame*, const FrameLoadRequest&);
6628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void show();
670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
6828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool canRunModal();
6928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void runModal();
700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
7128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setToolbarsVisible(bool);
7228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool toolbarsVisible();
730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
7428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setStatusbarVisible(bool);
7528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool statusbarVisible();
760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
7728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setScrollbarsVisible(bool);
7828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool scrollbarsVisible();
790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
8028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setMenubarVisible(bool);
8128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool menubarVisible();
820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
8328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setResizable(bool);
840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
8528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void addMessageToConsole(const String& message, unsigned int lineNumber,
860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                                 const String& sourceID);
8728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void addMessageToConsole(MessageSource, MessageLevel, const String& message,
880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                                 unsigned int lineNumber, const String& sourceID);
8928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel,
900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                                 const String&, unsigned int, const String&);
910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
9228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool canRunBeforeUnloadConfirmPanel();
930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
9428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame* frame);
950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
9628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void closeWindowSoon();
970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
9828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void runJavaScriptAlert(Frame*, const String&);
9928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool runJavaScriptConfirm(Frame*, const String&);
10028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result);
10128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual bool shouldInterruptJavaScript();
1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
10328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setStatusbarText(const WTF::String&);
10481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        virtual WebCore::KeyboardUIMode keyboardUIMode();
10528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual IntRect windowResizerRect() const;
1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
10728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void invalidateWindow(const IntRect&, bool);
10828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void invalidateContentsAndWindow(const IntRect&, bool);
10928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void invalidateContentsForSlowScroll(const IntRect&, bool);
11028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void scroll(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect);
111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
11228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual IntPoint screenToWindow(const IntPoint&) const;
11328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual IntRect windowToScreen(const IntRect&) const;
11428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual PlatformPageClient platformPageClient() const;
11528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void contentsSizeChanged(Frame*, const IntSize&) const;
11628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const;
1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void addToDirtyRegion(const IntRect&);
1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void scrollBackingStore(int, int, const IntRect&, const IntRect&);
1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void updateBackingStore();
1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
12228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void scrollbarsModeDidChange() const { }
12328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void setToolTip(const String&);
1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        virtual void setToolTip(const String&, TextDirection);
1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        void print(Frame*);
1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
13128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(DATABASE)
13228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void exceededDatabaseQuota(Frame*, const String& databaseName);
13328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif
1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
135db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual bool selectItemWritingDirectionIsNatural();
1362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block        virtual bool selectItemAlignmentFollowsMenuWritingDirection();
137db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
138db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
139db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if ENABLE(OFFLINE_WEB_APPLICATIONS)
1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
142db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*);
1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif
14428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(CONTEXT_MENUS)
14528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void showContextMenu() { }
14628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif
1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        // This is an asynchronous call. The ChromeClient can display UI asking the user for permission
149dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        // to use Geolococation.
15028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*);
15128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*) { }
1520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
15328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
15428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
15628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void setCursor(const Cursor&);
1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        // Notification that the given form element has changed. This function
1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        // will be called frequently, so handling should be very fast.
16028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void formStateDidChange(const Node*);
1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    };
1620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} // namespace WebCore
1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif
1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
167