165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. 365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Redistribution and use in source and binary forms, with or without 565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modification, are permitted provided that the following conditions 665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * are met: 765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1. Redistributions of source code must retain the above copyright 865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer. 965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer in the 1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * documentation and/or other materials provided with the distribution. 1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE POSSIBILITY OF SUCH DAMAGE. 2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */ 2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef PageClient_h 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define PageClient_h 2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "ShareableBitmap.h" 3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPageProxy.h" 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPopupMenuProxy.h" 3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/Forward.h> 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebCore { 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch class Cursor; 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch struct ViewportArguments; 3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit { 4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass DrawingAreaProxy; 4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass FindIndicator; 4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass NativeWebKeyboardEvent; 4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass NativeWebKeyboardEvent; 4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebContextMenuProxy; 4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebEditCommandProxy; 4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebPopupMenuProxy; 4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass PageClient { 5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic: 5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual ~PageClient() { } 5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Create a new drawing area proxy for the given page. 5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy() = 0; 5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Tell the view to invalidate the given rect. The rect is in view coordinates. 5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void setViewNeedsDisplay(const WebCore::IntRect&) = 0; 5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Tell the view to immediately display its invalid rect. 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void displayView() = 0; 6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 62ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch // Tell the view to scroll scrollRect by scrollOffset. 63ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch virtual void scrollView(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset) = 0; 64ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Return the size of the view the page is associated with. 6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual WebCore::IntSize viewSize() = 0; 6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Return whether the view's containing window is active. 6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual bool isViewWindowActive() = 0; 7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Return whether the view is focused. 7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual bool isViewFocused() = 0; 7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Return whether the view is visible. 7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual bool isViewVisible() = 0; 7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Return whether the view is in a window. 7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual bool isViewInWindow() = 0; 7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void processDidCrash() = 0; 8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void didRelaunchProcess() = 0; 822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void pageClosed() = 0; 8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void toolTipChanged(const String&, const String&) = 0; 8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TILED_BACKING_STORE) 872bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void pageDidRequestScroll(const WebCore::IntPoint&) = 0; 8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(QT) 9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void didChangeContentsSize(const WebCore::IntSize&) = 0; 9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void didFindZoomableArea(const WebCore::IntRect&) = 0; 9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void setCursor(const WebCore::Cursor&) = 0; 9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void setViewportArguments(const WebCore::ViewportArguments&) = 0; 9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo) = 0; 9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void clearAllEditCommands() = 0; 992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool canUndoRedo(WebPageProxy::UndoOrRedo) = 0; 1002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void executeUndoRedo(WebPageProxy::UndoOrRedo) = 0; 10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC) 1022fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void accessibilityWebProcessTokenReceived(const CoreIPC::DataReference&) = 0; 1032daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool interpretKeyEvent(const NativeWebKeyboardEvent&, Vector<WebCore::KeypressCommand>&) = 0; 1042daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool executeSavedCommandBySelector(const String& selector) = 0; 1052bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setDragImage(const WebCore::IntPoint& clientPosition, PassRefPtr<ShareableBitmap> dragImage, bool isLinkDrag) = 0; 1062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void updateSecureInputState() = 0; 10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(WIN) 10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void compositionSelectionChanged(bool) = 0; 11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 1112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(GTK) 1122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent&, Vector<WTF::String>&) = 0; 1132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&) = 0; 11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&) = 0; 1162bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) = 0; 1172bde8e466a4451c7319e3a072d118917957d6554Steve Block 1182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled) = 0; 11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*) = 0; 12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*) = 0; 12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void setFindIndicator(PassRefPtr<FindIndicator>, bool fadeOut) = 0; 12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if USE(ACCELERATED_COMPOSITING) 1262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) = 0; 1272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void exitAcceleratedCompositingMode() = 0; 12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(WIN) 13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual HWND nativeWindow() = 0; 1322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void setGestureReachedScrollingLimit(bool) = 0; 13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC) 13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void setComplexTextInputEnabled(uint64_t pluginComplexTextInputIdentifier, bool complexTextInputEnabled) = 0; 137ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch virtual CGContextRef containingWindowGraphicsContext() = 0; 13881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void didPerformDictionaryLookup(const String&, double scaleFactor, const DictionaryPopupInfo&) = 0; 1392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void dismissDictionaryLookupPanel() = 0; 1402bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void showCorrectionPanel(WebCore::CorrectionPanelInfo::PanelType, const WebCore::FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings) = 0; 1412bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void dismissCorrectionPanel(WebCore::ReasonForDismissingCorrectionPanel) = 0; 1422bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual String dismissCorrectionPanelSoon(WebCore::ReasonForDismissingCorrectionPanel) = 0; 1432bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void recordAutocorrectionResponse(WebCore::EditorClient::AutocorrectionResponseType, const String& replacedString, const String& replacementString) = 0; 14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void didChangeScrollbarsForMainFrame() const = 0; 1472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 14865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Custom representations. 14965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void didCommitLoadForMainFrame(bool useCustomRepresentation) = 0; 15081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void didFinishLoadingDataForCustomRepresentation(const String& suggestedFilename, const CoreIPC::DataReference&) = 0; 15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual double customRepresentationZoomFactor() = 0; 15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void setCustomRepresentationZoomFactor(double) = 0; 15381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 15481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void flashBackingStoreUpdates(const Vector<WebCore::IntRect>& updateRects) = 0; 1552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void findStringInCustomRepresentation(const String&, FindOptions, unsigned maxMatchCount) = 0; 1562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void countStringMatchesInCustomRepresentation(const String&, FindOptions, unsigned maxMatchCount) = 0; 1572bde8e466a4451c7319e3a072d118917957d6554Steve Block 1582bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual float userSpaceScaleFactor() const = 0; 15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}; 16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit 16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // PageClient_h 164