1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/*
2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2007 Holger Hans Peter Freyther
3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia
4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2009-2010 ProFUSION embedded systems
5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2009-2010 Samsung Electronics
6db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
7dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block *
8dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * This library is free software; you can redistribute it and/or
9dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * modify it under the terms of the GNU Library General Public
10dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * License as published by the Free Software Foundation; either
11dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * version 2 of the License, or (at your option) any later version.
12dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block *
13dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * This library is distributed in the hope that it will be useful,
14dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * but WITHOUT ANY WARRANTY; without even the implied warranty of
15dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Library General Public License for more details.
17dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block *
18dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * You should have received a copy of the GNU Library General Public License
19dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * along with this library; see the file COPYING.LIB.  If not, write to
20dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Boston, MA 02110-1301, USA.
22dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block */
23dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#ifndef ChromeClientEfl_h
25dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#define ChromeClientEfl_h
26dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
27dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "ChromeClient.h"
28dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "KURL.h"
295af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#include "PopupMenu.h"
3006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
3106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsentypedef struct _Evas_Object Evas_Object;
32dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
33dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocknamespace WebCore {
34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass ChromeClientEfl : public ChromeClient {
36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockpublic:
3721939df44de1705786c545cd1bf519d47250322dBen Murdoch    explicit ChromeClientEfl(Evas_Object* view);
38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual ~ChromeClientEfl();
39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void chromeDestroyed();
41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setWindowRect(const FloatRect&);
43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual FloatRect windowRect();
44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual FloatRect pageRect();
46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual float scaleFactor();
48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void focus();
50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void unfocus();
51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool canTakeFocus(FocusDirection);
53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void takeFocus(FocusDirection);
54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
5521939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void focusedNodeChanged(Node*);
5628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    virtual void focusedFrameChanged(Frame*);
57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
58e14391e94c850b8bd03680c23b38978db68687a8John Reck    virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&);
59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void show();
60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool canRunModal();
62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void runModal();
63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setToolbarsVisible(bool);
65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool toolbarsVisible();
66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setStatusbarVisible(bool);
68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool statusbarVisible();
69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setScrollbarsVisible(bool);
71dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool scrollbarsVisible();
72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setMenubarVisible(bool);
74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool menubarVisible();
75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
765af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual void createSelectPopup(PopupMenuClient*, int selected, const IntRect& rect);
775af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual bool destroySelectPopup();
785af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setResizable(bool);
80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message,
82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block                                     unsigned int lineNumber, const String& sourceID);
83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool canRunBeforeUnloadConfirmPanel();
85dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame* frame);
86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void closeWindowSoon();
88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
89dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void runJavaScriptAlert(Frame*, const String&);
90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool runJavaScriptConfirm(Frame*, const String&);
91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result);
92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setStatusbarText(const String&);
93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool shouldInterruptJavaScript();
9481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual WebCore::KeyboardUIMode keyboardUIMode();
95dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
96dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual IntRect windowResizerRect() const;
97dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
98dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void contentsSizeChanged(Frame*, const IntSize&) const;
99dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual IntPoint screenToWindow(const IntPoint&) const;
100dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual IntRect windowToScreen(const IntRect&) const;
101dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual PlatformPageClient platformPageClient() const;
102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
103dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void scrollbarsModeDidChange() const;
104dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
106dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setToolTip(const String&, TextDirection);
107dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
108dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void print(Frame*);
109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(DATABASE)
111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void exceededDatabaseQuota(Frame*, const String&);
112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif
113dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
114dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(OFFLINE_WEB_APPLICATIONS)
115dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
116db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*);
117dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif
118dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
11928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(CONTEXT_MENUS)
12028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    virtual void showContextMenu() { }
12128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif
12228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu
123cad810f21b803229eb11403f9209855525a25d57Steve Block#if ENABLE(TOUCH_EVENTS)
1242bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual void needTouchEvents(bool);
125cad810f21b803229eb11403f9209855525a25d57Steve Block#endif
126cad810f21b803229eb11403f9209855525a25d57Steve Block
127dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
12821939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
129dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void formStateDidChange(const Node*);
130dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
131967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    virtual void setCursor(const Cursor&);
132dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
133dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const {}
134dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*);
13621939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*);
13721939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void cancelGeolocationPermissionForFrame(Frame*, Geolocation*);
13821939df44de1705786c545cd1bf519d47250322dBen Murdoch
13921939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void invalidateContents(const IntRect&, bool);
14021939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void invalidateWindow(const IntRect&, bool);
14121939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void invalidateContentsAndWindow(const IntRect&, bool);
14221939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void invalidateContentsForSlowScroll(const IntRect&, bool);
14321939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void scroll(const IntSize&, const IntRect&, const IntRect&);
14421939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void cancelGeolocationPermissionRequestForFrame(Frame*);
14521939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void iconForFiles(const Vector<String, 0u>&, PassRefPtr<FileChooser>);
14621939df44de1705786c545cd1bf519d47250322dBen Murdoch
147a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    virtual void dispatchViewportDataDidChange(const ViewportArguments&) const;
148e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
149db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    virtual bool selectItemWritingDirectionIsNatural();
1502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual bool selectItemAlignmentFollowsMenuWritingDirection();
151db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
152db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
153db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
15421939df44de1705786c545cd1bf519d47250322dBen Murdoch    Evas_Object* m_view;
155dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    KURL m_hoveredLinkURL;
156dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block};
157dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
158dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
159dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif // ChromeClientEfl_h
160