1/* 2 * Copyright (C) 2007 Holger Hans Peter Freyther 3 * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia 4 * Copyright (C) 2009-2010 ProFUSION embedded systems 5 * Copyright (C) 2009-2010 Samsung Electronics 6 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Library General Public 10 * License as published by the Free Software Foundation; either 11 * version 2 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Library General Public License for more details. 17 * 18 * You should have received a copy of the GNU Library General Public License 19 * along with this library; see the file COPYING.LIB. If not, write to 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 21 * Boston, MA 02110-1301, USA. 22 */ 23 24#ifndef ChromeClientEfl_h 25#define ChromeClientEfl_h 26 27#include "ChromeClient.h" 28#include "KURL.h" 29#include "PopupMenu.h" 30 31#if ENABLE(INPUT_TYPE_COLOR) 32#include "ColorChooser.h" 33#endif 34 35#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) 36#include "NotificationClient.h" 37#endif 38 39namespace WebCore { 40 41class ChromeClientEfl : public ChromeClient { 42public: 43 explicit ChromeClientEfl(Evas_Object* view); 44 virtual ~ChromeClientEfl(); 45 46 virtual void chromeDestroyed(); 47 48 virtual void setWindowRect(const FloatRect&); 49 virtual FloatRect windowRect(); 50 51 virtual FloatRect pageRect(); 52 53 virtual void focus(); 54 virtual void unfocus(); 55 56 virtual bool canTakeFocus(FocusDirection); 57 virtual void takeFocus(FocusDirection); 58 59 virtual void focusedNodeChanged(Node*); 60 virtual void focusedFrameChanged(Frame*); 61 62 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&); 63 virtual void show(); 64 65 virtual bool canRunModal(); 66 virtual void runModal(); 67 68 virtual void setToolbarsVisible(bool); 69 virtual bool toolbarsVisible(); 70 71 virtual void setStatusbarVisible(bool); 72 virtual bool statusbarVisible(); 73 74 virtual void setScrollbarsVisible(bool); 75 virtual bool scrollbarsVisible(); 76 77 virtual void setMenubarVisible(bool); 78 virtual bool menubarVisible(); 79 80 virtual void createSelectPopup(PopupMenuClient*, int selected, const IntRect&); 81 virtual bool destroySelectPopup(); 82 83 virtual void setResizable(bool); 84 85 virtual void addMessageToConsole(MessageSource, MessageLevel, const String& message, 86 unsigned lineNumber, unsigned columnNumber, const String& sourceID); 87 88 virtual bool canRunBeforeUnloadConfirmPanel(); 89 virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame*); 90 91 virtual void closeWindowSoon(); 92 93 virtual void runJavaScriptAlert(Frame*, const String&); 94 virtual bool runJavaScriptConfirm(Frame*, const String&); 95 virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result); 96 virtual void setStatusbarText(const String&); 97 virtual bool shouldInterruptJavaScript(); 98 virtual WebCore::KeyboardUIMode keyboardUIMode(); 99 100 virtual IntRect windowResizerRect() const; 101 102 virtual void contentsSizeChanged(Frame*, const IntSize&) const; 103 virtual IntPoint screenToRootView(const IntPoint&) const; 104 virtual IntRect rootViewToScreen(const IntRect&) const; 105 virtual PlatformPageClient platformPageClient() const; 106 107 virtual void scrollbarsModeDidChange() const; 108 virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags); 109 110 virtual void setToolTip(const String&, TextDirection); 111 112 virtual void print(Frame*); 113 114#if ENABLE(SQL_DATABASE) 115 virtual void exceededDatabaseQuota(Frame*, const String&, DatabaseDetails); 116#endif 117 118#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) 119 virtual WebCore::NotificationClient* notificationPresenter() const; 120#endif 121 122 virtual void reachedMaxAppCacheSize(int64_t spaceNeeded); 123 virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*, int64_t totalSpaceNeeded); 124 125 virtual void populateVisitedLinks(); 126 127#if ENABLE(TOUCH_EVENTS) 128 virtual void needTouchEvents(bool); 129#endif 130 131#if USE(ACCELERATED_COMPOSITING) 132 virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*); 133 virtual void setNeedsOneShotDrawingSynchronization(); 134 virtual void scheduleCompositingLayerFlush(); 135 virtual CompositingTriggerFlags allowedCompositingTriggers() const; 136#endif 137 138#if ENABLE(FULLSCREEN_API) 139 virtual bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard); 140 virtual void enterFullScreenForElement(WebCore::Element*); 141 virtual void exitFullScreenForElement(WebCore::Element*); 142#endif 143 144#if ENABLE(INPUT_TYPE_COLOR) 145 virtual PassOwnPtr<ColorChooser> createColorChooser(ColorChooserClient*, const Color&); 146 virtual void removeColorChooser(); 147 virtual void updateColorChooser(const Color&); 148#endif 149 150 virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>); 151 virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*); 152 virtual void formStateDidChange(const Node*); 153 154 virtual void setCursor(const Cursor&); 155 virtual void setCursorHiddenUntilMouseMoves(bool); 156 157#if ENABLE(REQUEST_ANIMATION_FRAME) && !USE(REQUEST_ANIMATION_FRAME_TIMER) 158 virtual void scheduleAnimation(); 159 virtual void serviceScriptedAnimations(); 160#endif 161 162 virtual void scrollRectIntoView(const IntRect&) const { } 163 164 virtual void cancelGeolocationPermissionForFrame(Frame*, Geolocation*); 165 166 virtual void invalidateContents(const IntRect&, bool); 167 virtual void invalidateRootView(const IntRect&, bool); 168 virtual void invalidateContentsAndRootView(const IntRect&, bool); 169 virtual void invalidateContentsForSlowScroll(const IntRect&, bool); 170 virtual void scroll(const IntSize&, const IntRect&, const IntRect&); 171 virtual void cancelGeolocationPermissionRequestForFrame(Frame*); 172 virtual void iconForFiles(const Vector<String, 0u>&, PassRefPtr<FileChooser>); 173 174 virtual void dispatchViewportPropertiesDidChange(const ViewportArguments&) const; 175 176 virtual bool selectItemWritingDirectionIsNatural(); 177 virtual bool selectItemAlignmentFollowsMenuWritingDirection(); 178 virtual bool hasOpenedPopup() const; 179 virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const; 180 virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const; 181 182 virtual bool shouldRubberBandInDirection(WebCore::ScrollDirection) const { return true; } 183 virtual void numWheelEventHandlersChanged(unsigned) { } 184 185#if USE(TILED_BACKING_STORE) 186 virtual void delegatedScrollRequested(const IntPoint& scrollPoint); 187 virtual IntRect visibleRectForTiledBackingStore() const; 188#endif 189 190 Evas_Object* m_view; 191 KURL m_hoveredLinkURL; 192#if ENABLE(FULLSCREEN_API) 193 RefPtr<Element> m_fullScreenElement; 194#endif 195}; 196} 197 198#endif // ChromeClientEfl_h 199