18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2006, 2007, 2008, 2009 Apple, Inc. All rights reserved. 3db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ChromeClient_h 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ChromeClient_h 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 24bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#include "AXObjectCache.h" 255f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "Console.h" 265f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "Cursor.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FocusDirection.h" 285f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "GraphicsContext.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HostWindow.h" 30db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "PopupMenu.h" 31db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "PopupMenuClient.h" 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "ScrollTypes.h" 33db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "SearchPopupMenu.h" 3481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "WebCoreKeyboardUIMode.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Forward.h> 365f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include <wtf/PassOwnPtr.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Vector.h> 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef __OBJC__ 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSMenu; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSResponder; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 46bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen class AccessibilityObject; 47ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block class Element; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class FileChooser; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class FloatRect; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Frame; 518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian class Geolocation; 522bde8e466a4451c7319e3a072d118917957d6554Steve Block class GraphicsLayer; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class HitTestResult; 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class IntRect; 55e14391e94c850b8bd03680c23b38978db68687a8John Reck class NavigationAction; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Node; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Page; 58e14391e94c850b8bd03680c23b38978db68687a8John Reck class PopupMenuClient; 59db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block class SecurityOrigin; 605abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick class SharedGraphicsContext3D; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Widget; 628f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project struct FrameLoadRequest; 64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block struct ViewportArguments; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project struct WindowFeatures; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if USE(ACCELERATED_COMPOSITING) 688f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian class GraphicsLayer; 698f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 708f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(NOTIFICATIONS) 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class NotificationPresenter; 73231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ChromeClient { 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void chromeDestroyed() = 0; 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setWindowRect(const FloatRect&) = 0; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual FloatRect windowRect() = 0; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual FloatRect pageRect() = 0; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual float scaleFactor() = 0; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void focus() = 0; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void unfocus() = 0; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canTakeFocus(FocusDirection) = 0; 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void takeFocus(FocusDirection) = 0; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void focusedNodeChanged(Node*) = 0; 9328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu virtual void focusedFrameChanged(Frame*) = 0; 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // The Frame pointer provides the ChromeClient with context about which 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Frame wants to create the new Page. Also, the newly created window 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // should not be shown to the user until the ChromeClient of the newly 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // created Page has its show method called. 9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // The FrameLoadRequest parameter is only for ChromeClient to check if the 10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // request could be fulfilled. The ChromeClient should not load the request. 101e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) = 0; 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void show() = 0; 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canRunModal() = 0; 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void runModal() = 0; 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setToolbarsVisible(bool) = 0; 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool toolbarsVisible() = 0; 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setStatusbarVisible(bool) = 0; 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool statusbarVisible() = 0; 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setScrollbarsVisible(bool) = 0; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool scrollbarsVisible() = 0; 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setMenubarVisible(bool) = 0; 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool menubarVisible() = 0; 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setResizable(bool) = 0; 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, unsigned int lineNumber, const String& sourceID) = 0; 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canRunBeforeUnloadConfirmPanel() = 0; 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame* frame) = 0; 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void closeWindowSoon() = 0; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void runJavaScriptAlert(Frame*, const String&) = 0; 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool runJavaScriptConfirm(Frame*, const String&) = 0; 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result) = 0; 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setStatusbarText(const String&) = 0; 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool shouldInterruptJavaScript() = 0; 13381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual KeyboardUIMode keyboardUIMode() = 0; 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13554cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block virtual void* webView() const = 0; 13654cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block 1372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(REGISTER_PROTOCOL_HANDLER) 1382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void registerProtocolHandler(const String& scheme, const String& baseURL, const String& url, const String& title) = 0; 1392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 1402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual IntRect windowResizerRect() const = 0; 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Methods used by HostWindow. 144dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void invalidateWindow(const IntRect&, bool) = 0; 145dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void invalidateContentsAndWindow(const IntRect&, bool) = 0; 146dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void invalidateContentsForSlowScroll(const IntRect&, bool) = 0; 147dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void scroll(const IntSize&, const IntRect&, const IntRect&) = 0; 14828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(TILED_BACKING_STORE) 1492bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void delegatedScrollRequested(const IntPoint&) = 0; 15028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual IntPoint screenToWindow(const IntPoint&) const = 0; 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual IntRect windowToScreen(const IntRect&) const = 0; 153231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual PlatformPageClient platformPageClient() const = 0; 154967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void scrollbarsModeDidChange() const = 0; 155967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void setCursor(const Cursor&) = 0; 156ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#if ENABLE(REQUEST_ANIMATION_FRAME) 157ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch virtual void scheduleAnimation() = 0; 158ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#endif 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // End methods used by HostWindow. 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 161a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual void dispatchViewportDataDidChange(const ViewportArguments&) const { } 162a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 163967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void contentsSizeChanged(Frame*, const IntSize&) const = 0; 164967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const = 0; // Currently only Mac has a non empty implementation. 165967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 166e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke virtual bool shouldMissingPluginMessageBeButton() const { return false; } 167ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual void missingPluginButtonClicked(Element*) const { } 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags) = 0; 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void setToolTip(const String&, TextDirection) = 0; 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void print(Frame*) = 0; 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1748ccf722629b08f2a06b2cadbdc3d0c9dc885e25dBen Murdoch#if ENABLE(DATABASE) 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void exceededDatabaseQuota(Frame*, const String& databaseName) = 0; 1768ccf722629b08f2a06b2cadbdc3d0c9dc885e25dBen Murdoch#endif 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 178c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu#if ENABLE(OFFLINE_WEB_APPLICATIONS) 179c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // Callback invoked when the application cache fails to save a cache object 180c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // because storing it would grow the database file past its defined maximum 181c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // size or past the amount of free space on the device. 182c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // The chrome client would need to take some action such as evicting some 183c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // old caches. 184c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu virtual void reachedMaxAppCacheSize(int64_t spaceNeeded) = 0; 185db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 186db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // Callback invoked when the application cache origin quota is reached. This 187db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // means that the resources attempting to be cached via the manifest are 188db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // more than allowed on this origin. This callback allows the chrome client 189db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // to take action, such as prompting the user to ask to increase the quota 190db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // for this origin. 191db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block virtual void reachedApplicationCacheOriginQuota(SecurityOrigin* origin) = 0; 192c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu#endif 193c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DASHBOARD_SUPPORT) 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dashboardRegionsChanged(); 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 198231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(NOTIFICATIONS) 199231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual NotificationPresenter* notificationPresenter() const = 0; 200231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 201231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void populateVisitedLinks(); 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual FloatRect customHighlightRect(Node*, const AtomicString& type, const FloatRect& lineRect); 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void paintCustomHighlight(Node*, const AtomicString& type, const FloatRect& boxRect, const FloatRect& lineRect, 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool behindText, bool entireLine); 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool shouldReplaceWithGeneratedFileForUpload(const String& path, String& generatedFilename); 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual String generateReplacementFile(const String& path); 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool paintCustomScrollbar(GraphicsContext*, const FloatRect&, ScrollbarControlSize, 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ScrollbarControlState, ScrollbarPart pressedPart, bool vertical, 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project float value, float proportion, ScrollbarControlPartMask); 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool paintCustomScrollCorner(GraphicsContext*, const FloatRect&); 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual bool paintCustomOverhangArea(GraphicsContext*, const IntRect&, const IntRect&, const IntRect&); 2172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 218f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // FIXME: Remove once all ports are using client-based geolocation. https://bugs.webkit.org/show_bug.cgi?id=40373 219f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // For client-based geolocation, these two methods have moved to GeolocationClient. https://bugs.webkit.org/show_bug.cgi?id=50061 220231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // This can be either a synchronous or asynchronous call. The ChromeClient can display UI asking the user for permission 221234ad679c5705a581292e45349c33513bbaa526aSteve Block // to use Geolocation. 2225f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*) = 0; 223dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*) = 0; 224f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) = 0; 226692e5dbf12901edacf14812a6fae25462920af42Steve Block // Asynchronous request to load an icon for specified filenames. 227dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void chooseIconForFiles(const Vector<String>&, FileChooser*) = 0; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if ENABLE(DIRECTORY_UPLOAD) 2302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // Asychronous request to enumerate all files in a directory chosen by the user. 2312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void enumerateChosenDirectory(const String&, FileChooser*) = 0; 2322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 2332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 234635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // Notification that the given form element has changed. This function 235635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // will be called frequently, so handling should be very fast. 236635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void formStateDidChange(const Node*) = 0; 2370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void formDidFocus(const Node*) { }; 2390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void formDidBlur(const Node*) { }; 240635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 2418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if USE(ACCELERATED_COMPOSITING) 2428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // Pass 0 as the GraphicsLayer to detatch the root layer. 2435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*) = 0; 2448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // Sets a flag to specify that the next time content is drawn to the window, 2458f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // the changes appear on the screen in synchrony with updates to GraphicsLayers. 2465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void setNeedsOneShotDrawingSynchronization() = 0; 2475f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // Sets a flag to specify that the view needs to be updated, so we need 2485f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // to do an eager layout before the drawing. 2490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void scheduleCompositingLayerSync() = 0; 250dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns whether or not the client can render the composited layer, 251dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // regardless of the settings. 252dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool allowsAcceleratedCompositing() const { return true; } 2534a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch 2544a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch enum CompositingTrigger { 2554a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch ThreeDTransformTrigger = 1 << 0, 2564a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch VideoTrigger = 1 << 1, 2574a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch PluginTrigger = 1 << 2, 2584a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch CanvasTrigger = 1 << 3, 2594a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch AnimationTrigger = 1 << 4, 2604a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch AllTriggers = 0xFFFFFFFF 2614a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch }; 2624a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch typedef unsigned CompositingTriggerFlags; 2634a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch 2644a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch // Returns a bitfield indicating conditions that can trigger the compositor. 2654a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch virtual CompositingTriggerFlags allowedCompositingTriggers() const { return static_cast<CompositingTriggerFlags>(AllTriggers); } 2668f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 2678f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 268231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual bool supportsFullscreenForNode(const Node*) { return false; } 269231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void enterFullscreenForNode(Node*) { } 270231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void exitFullscreenForNode(Node*) { } 271f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual bool requiresFullscreenForVideoPlayback() { return false; } 2726c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 2735ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#if ENABLE(FULLSCREEN_API) 2742bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual bool supportsFullScreenForElement(const Element*, bool) { return false; } 2755ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual void enterFullScreenForElement(Element*) { } 2765ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual void exitFullScreenForElement(Element*) { } 277cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void fullScreenRendererChanged(RenderBox*) { } 2782bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setRootFullScreenLayer(GraphicsLayer*) { } 2795ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#endif 2805ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 2816c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(TILED_BACKING_STORE) 2826c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual IntRect visibleRectForTiledBackingStore() const { return IntRect(); } 2836c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif 2846c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual NSResponder *firstResponder() { return 0; } 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void makeFirstResponder(NSResponder *) { } 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void willPopUpMenu(NSMenu *) { } 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 292967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch#if PLATFORM(WIN) 293967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void setLastSetCursorToCurrentCursor() = 0; 294967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch#endif 295967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 296f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if ENABLE(TOUCH_EVENTS) 297d1919980a4bbb7f3aa73a6a83110fbec0c220e59Ben Murdoch virtual void needTouchEvents(bool) = 0; 298f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif 299f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch 300db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block virtual bool selectItemWritingDirectionIsNatural() = 0; 3012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual bool selectItemAlignmentFollowsMenuWritingDirection() = 0; 302db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const = 0; 303db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const = 0; 304dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 30528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(CONTEXT_MENUS) 30628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu virtual void showContextMenu() = 0; 30728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif 30828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 309e1a0cd8247467a70fed9f6099fc9c65ec35ae23eKristian Monsen virtual void postAccessibilityNotification(AccessibilityObject*, AXObjectCache::AXNotification) { } 310e1a0cd8247467a70fed9f6099fc9c65ec35ae23eKristian Monsen 31109b60ab8488b362c96df8f268613aafaeebfcfa1Steve Block virtual void didCompleteRubberBandForMainFrame(const IntSize&) const { } 31209b60ab8488b362c96df8f268613aafaeebfcfa1Steve Block 3132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch enum DialogType { 3142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch AlertDialog = 0, 3152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch ConfirmDialog = 1, 3162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch PromptDialog = 2, 3172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch HTMLDialog = 3, 3182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch NumDialogTypes = 4 3192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch }; 3202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void willRunModalDialogDuringPageDismissal(const DialogType&) const { } 321bbcce278be9be6a85f47928c38a74c8d36a13a85Ben Murdoch 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project protected: 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~ChromeClient() { } 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ChromeClient_h 329