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