165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/*
265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben 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 WebPage_h
2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define WebPage_h
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "APIObject.h"
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "DrawingArea.h"
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "FindController.h"
3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "GeolocationPermissionRequestManager.h"
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "ImageOptions.h"
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InjectedBundlePageContextMenuClient.h"
3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InjectedBundlePageEditorClient.h"
3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InjectedBundlePageFormClient.h"
372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "InjectedBundlePageFullScreenClient.h"
3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InjectedBundlePageLoaderClient.h"
392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InjectedBundlePagePolicyClient.h"
402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InjectedBundlePageResourceLoadClient.h"
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InjectedBundlePageUIClient.h"
4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "MessageSender.h"
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Plugin.h"
4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "SandboxExtension.h"
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebEditCommand.h"
462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <WebCore/DragData.h>
4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/Editor.h>
4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/FrameLoaderTypes.h>
4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/IntRect.h>
502bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <WebCore/ScrollTypes.h>
5181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include <WebCore/WebCoreKeyboardUIMode.h>
5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/HashMap.h>
5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/OwnPtr.h>
5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/PassRefPtr.h>
5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/RefPtr.h>
5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/text/WTFString.h>
5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS)
5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/PlatformTouchEvent.h>
6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
6381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "DictionaryPopupInfo.h"
6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/RetainPtr.h>
652fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockOBJC_CLASS AccessibilityWebPageObject;
662bde8e466a4451c7319e3a072d118917957d6554Steve BlockOBJC_CLASS NSDictionary;
672bde8e466a4451c7319e3a072d118917957d6554Steve BlockOBJC_CLASS NSObject;
6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace CoreIPC {
7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class ArgumentDecoder;
7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class Connection;
7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class MessageID;
7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebCore {
7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class GraphicsContext;
7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class KeyboardEvent;
7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class Page;
8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class PrintContext;
8181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    class Range;
8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class ResourceRequest;
8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class SharedBuffer;
842bde8e466a4451c7319e3a072d118917957d6554Steve Block    class VisibleSelection;
852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    struct KeypressCommand;
8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit {
8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass DrawingArea;
9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass InjectedBundleBackForwardList;
9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass PageOverlay;
9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass PluginView;
9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass SessionState;
9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebContextMenu;
9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebContextMenuItemData;
9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebEvent;
9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebFrame;
992bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebFullScreenManager;
10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebImage;
10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebInspector;
10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebKeyboardEvent;
10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebMouseEvent;
10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebOpenPanelResultListener;
10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebPageGroupProxy;
10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebPopupMenu;
10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebWheelEvent;
1082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochstruct AttributedString;
1092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochstruct EditorState;
11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct PrintInfo;
11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct WebPageCreationParameters;
11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct WebPreferencesStore;
11365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(GESTURE_EVENTS)
1152fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass WebGestureEvent;
1162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif
1172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS)
11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebTouchEvent;
12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebPage : public APIObject, public CoreIPC::MessageSender<WebPage> {
12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic:
12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Type APIType = TypeBundlePage;
12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
12665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static PassRefPtr<WebPage> create(uint64_t pageID, const WebPageCreationParameters&);
12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual ~WebPage();
12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // Used by MessageSender.
13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    CoreIPC::Connection* connection() const;
13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    uint64_t destinationID() const { return pageID(); }
13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void close();
13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::Page* corePage() const { return m_page.get(); }
13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    uint64_t pageID() const { return m_pageID; }
13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setSize(const WebCore::IntSize&);
13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    const WebCore::IntSize& size() const { return m_viewSize; }
1402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    WebCore::IntRect bounds() const { return WebCore::IntRect(WebCore::IntPoint(), size()); }
1412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundleBackForwardList* backForwardList();
14365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    DrawingArea* drawingArea() const { return m_drawingArea.get(); }
14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebPageGroupProxy* pageGroup() const { return m_pageGroup.get(); }
14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void scrollMainFrameIfNotAtMaxScrollPosition(const WebCore::IntSize& scrollOffset);
1482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
1492bde8e466a4451c7319e3a072d118917957d6554Steve Block    void scrollBy(uint32_t scrollDirection, uint32_t scrollGranularity);
1502bde8e466a4451c7319e3a072d118917957d6554Steve Block
15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR)
15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebInspector* inspector();
15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1552bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API)
1562bde8e466a4451c7319e3a072d118917957d6554Steve Block    WebFullScreenManager* fullScreenManager();
1572bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
1582bde8e466a4451c7319e3a072d118917957d6554Steve Block
15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // -- Called by the DrawingArea.
16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // FIXME: We could genericize these into a DrawingArea client interface. Would that be beneficial?
16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void drawRect(WebCore::GraphicsContext&, const WebCore::IntRect&);
1622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void drawPageOverlay(WebCore::GraphicsContext&, const WebCore::IntRect&);
16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void layoutIfNeeded();
16465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
16565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // -- Called from WebCore clients.
1662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(MAC)
1672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*, bool saveCommands);
1682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#elif !PLATFORM(GTK)
16965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*);
17065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
1712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
17265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void show();
17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    String userAgent() const { return m_userAgent; }
17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntRect windowResizerRect() const;
17581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    WebCore::KeyboardUIMode keyboardUIMode();
17665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
17765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebEditCommand* webEditCommand(uint64_t);
17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void addWebEditCommand(uint64_t, WebEditCommand*);
17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void removeWebEditCommand(uint64_t);
18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool isInRedo() const { return m_isInRedo; }
18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
18265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setActivePopupMenu(WebPopupMenu*);
18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
18465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebOpenPanelResultListener* activeOpenPanelResultListener() const { return m_activeOpenPanelResultListener.get(); }
18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setActiveOpenPanelResultListener(PassRefPtr<WebOpenPanelResultListener>);
18665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
18765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // -- Called from WebProcess.
18865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
18965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    CoreIPC::SyncReplyMode didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*);
19065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
19165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // -- InjectedBundle methods
19265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void initializeInjectedBundleContextMenuClient(WKBundlePageContextMenuClient*);
19365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void initializeInjectedBundleEditorClient(WKBundlePageEditorClient*);
19465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void initializeInjectedBundleFormClient(WKBundlePageFormClient*);
19565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void initializeInjectedBundleLoaderClient(WKBundlePageLoaderClient*);
1962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void initializeInjectedBundlePolicyClient(WKBundlePagePolicyClient*);
1972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void initializeInjectedBundleResourceLoadClient(WKBundlePageResourceLoadClient*);
19865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void initializeInjectedBundleUIClient(WKBundlePageUIClient*);
1992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if ENABLE(FULLSCREEN_API)
2002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void initializeInjectedBundleFullScreenClient(WKBundlePageFullScreenClient*);
2012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif
20265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageContextMenuClient& injectedBundleContextMenuClient() { return m_contextMenuClient; }
20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageEditorClient& injectedBundleEditorClient() { return m_editorClient; }
20565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageFormClient& injectedBundleFormClient() { return m_formClient; }
20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageLoaderClient& injectedBundleLoaderClient() { return m_loaderClient; }
2072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InjectedBundlePagePolicyClient& injectedBundlePolicyClient() { return m_policyClient; }
2082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InjectedBundlePageResourceLoadClient& injectedBundleResourceLoadClient() { return m_resourceLoadClient; }
20965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageUIClient& injectedBundleUIClient() { return m_uiClient; }
2102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if ENABLE(FULLSCREEN_API)
2112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    InjectedBundlePageFullScreenClient& injectedBundleFullScreenClient() { return m_fullScreenClient; }
2122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif
21365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
21465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool findStringFromInjectedBundle(const String&, FindOptions);
21565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
21665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebFrame* mainFrame() const { return m_mainFrame.get(); }
21765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    PassRefPtr<Plugin> createPlugin(const Plugin::Parameters&);
21865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    EditorState editorState() const;
2202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    String renderTreeExternalRepresentation() const;
22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void executeEditingCommand(const String& commandName, const String& argument);
22365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool isEditingCommandEnabled(const String& commandName);
22465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void clearMainFrameName();
22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void sendClose();
22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
22765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    double textZoomFactor() const;
22865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setTextZoomFactor(double);
22965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    double pageZoomFactor() const;
23065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setPageZoomFactor(double);
23165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setPageAndTextZoomFactors(double pageZoomFactor, double textZoomFactor);
23265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
23365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void scaleWebView(double scale, const WebCore::IntPoint& origin);
23465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    double viewScaleFactor() const;
23565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
23665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setUseFixedLayout(bool);
23765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setFixedLayoutSize(const WebCore::IntSize&);
23865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
23965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool drawsBackground() const { return m_drawsBackground; }
24065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool drawsTransparentBackground() const { return m_drawsTransparentBackground; }
24165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
24265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void stopLoading();
243ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    void stopLoadingFrame(uint64_t frameID);
24465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setDefersLoading(bool deferLoading);
24565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
24665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if USE(ACCELERATED_COMPOSITING)
24765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void enterAcceleratedCompositingMode(WebCore::GraphicsLayer*);
24865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void exitAcceleratedCompositingMode();
24965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
25065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
25165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
25265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void addPluginView(PluginView*);
25365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void removePluginView(PluginView*);
25465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
25565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool windowIsVisible() const { return m_windowIsVisible; }
25665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    const WebCore::IntRect& windowFrameInScreenCoordinates() const { return m_windowFrameInScreenCoordinates; }
25765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    const WebCore::IntRect& viewFrameInWindowCoordinates() const { return m_viewFrameInWindowCoordinates; }
25865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#elif PLATFORM(WIN)
25965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    HWND nativeWindow() const { return m_nativeWindow; }
26065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
26165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2622bde8e466a4451c7319e3a072d118917957d6554Steve Block    bool windowIsFocused() const;
26365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void installPageOverlay(PassRefPtr<PageOverlay>);
2642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void uninstallPageOverlay(PageOverlay*, bool fadeOut);
2652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    bool hasPageOverlay() const { return m_pageOverlay; }
2662bde8e466a4451c7319e3a072d118917957d6554Steve Block    WebCore::IntRect windowToScreen(const WebCore::IntRect&);
26765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
26865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    PassRefPtr<WebImage> snapshotInViewCoordinates(const WebCore::IntRect&, ImageOptions);
26965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    PassRefPtr<WebImage> snapshotInDocumentCoordinates(const WebCore::IntRect&, ImageOptions);
2702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    PassRefPtr<WebImage> scaledSnapshotInDocumentCoordinates(const WebCore::IntRect&, double scaleFactor, ImageOptions);
27165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
27265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const WebEvent* currentEvent();
27365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
27465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    FindController& findController() { return m_findController; }
27565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    GeolocationPermissionRequestManager& geolocationPermissionRequestManager() { return m_geolocationPermissionRequestManager; }
27665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
27765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void pageDidScroll();
27865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TILED_BACKING_STORE)
2792bde8e466a4451c7319e3a072d118917957d6554Steve Block    void pageDidRequestScroll(const WebCore::IntPoint&);
28065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setActualVisibleContentRect(const WebCore::IntRect&);
28165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
28265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool resizesToContentsEnabled() const { return !m_resizesToContentsLayoutSize.isEmpty(); }
28365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntSize resizesToContentsLayoutSize() const { return m_resizesToContentsLayoutSize; }
28465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setResizesToContentsUsingLayoutSize(const WebCore::IntSize& targetLayoutSize);
28565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void resizeToContentsIfNeeded();
28665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
28765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
28865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebContextMenu* contextMenu();
28965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
29065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool hasLocalDataForURL(const WebCore::KURL&);
2912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    String cachedResponseMIMETypeForURL(const WebCore::KURL&);
29265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
29365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static bool canHandleRequest(const WebCore::ResourceRequest&);
29465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
29565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class SandboxExtensionTracker {
29665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    public:
29765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        ~SandboxExtensionTracker();
29865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
29965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        void invalidate();
30065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
30165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        void beginLoad(WebFrame*, const SandboxExtension::Handle& handle);
3022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        void willPerformLoadDragDestinationAction(PassRefPtr<SandboxExtension> pendingDropSandboxExtension);
30365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        void didStartProvisionalLoad(WebFrame*);
30465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        void didCommitProvisionalLoad(WebFrame*);
30565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        void didFailProvisionalLoad(WebFrame*);
3062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
30765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    private:
3082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        void setPendingProvisionalSandboxExtension(PassRefPtr<SandboxExtension>);
3092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
31065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        RefPtr<SandboxExtension> m_pendingProvisionalSandboxExtension;
31165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        RefPtr<SandboxExtension> m_provisionalSandboxExtension;
31265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        RefPtr<SandboxExtension> m_committedSandboxExtension;
31365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    };
31465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
31565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SandboxExtensionTracker& sandboxExtensionTracker() { return m_sandboxExtensionTracker; }
31665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
31765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
3182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void registerUIProcessAccessibilityTokens(const CoreIPC::DataReference& elemenToken, const CoreIPC::DataReference& windowToken);
31965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    AccessibilityWebPageObject* accessibilityRemoteObject();
32065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntPoint accessibilityPosition() const { return m_accessibilityPosition; }
32165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
32265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void sendComplexTextInputToPlugin(uint64_t pluginComplexTextInputIdentifier, const String& textInput);
32365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void setComposition(const String& text, Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, EditorState& newState);
3252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void confirmComposition(EditorState& newState);
3262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void insertText(const String& text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, bool& handled, EditorState& newState);
32765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getMarkedRange(uint64_t& location, uint64_t& length);
3282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void getSelectedRange(uint64_t& location, uint64_t& length);
3292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void getAttributedSubstringFromRange(uint64_t location, uint64_t length, AttributedString&);
33065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void characterIndexForPoint(const WebCore::IntPoint point, uint64_t& result);
33165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void firstRectForCharacterRange(uint64_t location, uint64_t length, WebCore::IntRect& resultRect);
3322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void executeKeypressCommands(const Vector<WebCore::KeypressCommand>&, bool& handled, EditorState& newState);
33381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void writeSelectionToPasteboard(const WTF::String& pasteboardName, const WTF::Vector<WTF::String>& pasteboardTypes, bool& result);
3342bde8e466a4451c7319e3a072d118917957d6554Steve Block    void readSelectionFromPasteboard(const WTF::String& pasteboardName, bool& result);
3352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void shouldDelayWindowOrderingEvent(const WebKit::WebMouseEvent&, bool& result);
3362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void acceptsFirstMouse(int eventNumber, const WebKit::WebMouseEvent&, bool& result);
3372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool performNonEditingBehaviorForSelector(const String&);
33865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#elif PLATFORM(WIN)
33965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void confirmComposition(const String& compositionString);
34065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setComposition(const WTF::String& compositionString, const WTF::Vector<WebCore::CompositionUnderline>& underlines, uint64_t cursorPosition);
34165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void firstRectForCharacterInSelectedRange(const uint64_t characterPosition, WebCore::IntRect& resultRect);
34265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getSelectedText(WTF::String&);
3432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
3442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void gestureWillBegin(const WebCore::IntPoint&, bool& canBeginPanning);
3452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void gestureDidScroll(const WebCore::IntSize&);
3462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void gestureDidEnd();
34765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
34865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
34965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // FIXME: This a dummy message, to avoid breaking the build for platforms that don't require
35065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // any synchronous messages, and should be removed when <rdar://problem/8775115> is fixed.
35165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void dummy(bool&);
35265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
35365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
3542bde8e466a4451c7319e3a072d118917957d6554Steve Block    void performDictionaryLookupForSelection(DictionaryPopupInfo::Type, WebCore::Frame*, const WebCore::VisibleSelection&);
35581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
35665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool isSpeaking();
35765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void speak(const String&);
35865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void stopSpeaking();
35965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
36065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool isSmartInsertDeleteEnabled() const { return m_isSmartInsertDeleteEnabled; }
36165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
36265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
36365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void replaceSelectionWithText(WebCore::Frame*, const String&);
3642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if PLATFORM(WIN)
3652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void performDragControllerAction(uint64_t action, WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, uint64_t draggingSourceOperationMask, const WebCore::DragDataMap&, uint32_t flags);
3662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#else
3672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void performDragControllerAction(uint64_t action, WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, uint64_t draggingSourceOperationMask, const WTF::String& dragStorageName, uint32_t flags, const SandboxExtension::Handle&);
3682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif
369ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    void dragEnded(WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, uint64_t operation);
37065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void willPerformLoadDragDestinationAction();
3722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
37365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void beginPrinting(uint64_t frameID, const PrintInfo&);
37465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void endPrinting();
3752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void computePagesForPrinting(uint64_t frameID, const PrintInfo&, uint64_t callbackID);
37681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if PLATFORM(MAC) || PLATFORM(WIN)
3772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void drawRectToPDF(uint64_t frameID, const WebCore::IntRect&, uint64_t callbackID);
3782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void drawPagesToPDF(uint64_t frameID, uint32_t first, uint32_t count, uint64_t callbackID);
37965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
38065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
38165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool mainFrameHasCustomRepresentation() const;
38265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
38381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void didChangeScrollOffsetForMainFrame();
38481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
38581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    bool canRunBeforeUnloadConfirmPanel() const { return m_canRunBeforeUnloadConfirmPanel; }
38681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void setCanRunBeforeUnloadConfirmPanel(bool canRunBeforeUnloadConfirmPanel) { m_canRunBeforeUnloadConfirmPanel = canRunBeforeUnloadConfirmPanel; }
38781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
388ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool canRunModal() const { return m_canRunModal; }
38981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void setCanRunModal(bool canRunModal) { m_canRunModal = canRunModal; }
39081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
391ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    void runModal();
392ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
3932bde8e466a4451c7319e3a072d118917957d6554Steve Block    float userSpaceScaleFactor() const { return m_userSpaceScaleFactor; }
3942bde8e466a4451c7319e3a072d118917957d6554Steve Block
39581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void setMemoryCacheMessagesEnabled(bool);
39681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
39781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void forceRepaintWithoutCallback();
39881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
3992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void unmarkAllMisspellings();
4002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void unmarkAllBadGrammar();
4012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4022bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
4032bde8e466a4451c7319e3a072d118917957d6554Steve Block    void setDragSource(NSObject *);
4042bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
4052bde8e466a4451c7319e3a072d118917957d6554Steve Block
4062bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD)
4072bde8e466a4451c7319e3a072d118917957d6554Steve Block    void handleCorrectionPanelResult(const String&);
4082bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
4092bde8e466a4451c7319e3a072d118917957d6554Steve Block
4102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void simulateMouseDown(int button, WebCore::IntPoint, int clickCount, WKEventModifiers, double time);
4112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void simulateMouseUp(int button, WebCore::IntPoint, int clickCount, WKEventModifiers, double time);
4122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void simulateMouseMotion(WebCore::IntPoint, double time);
4132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void contextMenuShowing() { m_isShowingContextMenu = true; }
4152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
41665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprivate:
41765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebPage(uint64_t pageID, const WebPageCreationParameters&);
41865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
41965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual Type type() const { return APIType; }
42065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
42165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void platformInitialize();
42265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
42365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didReceiveWebPageMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
42465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    CoreIPC::SyncReplyMode didReceiveSyncWebPageMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*);
42565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if !PLATFORM(MAC)
42765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
4282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif
42965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool performDefaultBehaviorForKeyEvent(const WebKeyboardEvent&);
43065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(MAC)
4322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool executeKeypressCommandsInternal(const Vector<WebCore::KeypressCommand>&, WebCore::KeyboardEvent*);
4332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif
4342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
43565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    String sourceForFrame(WebFrame*);
43665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
43765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void loadData(PassRefPtr<WebCore::SharedBuffer>, const String& MIMEType, const String& encodingName, const WebCore::KURL& baseURL, const WebCore::KURL& failingURL);
43865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
43965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool platformHasLocalDataForURL(const WebCore::KURL&);
44065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
44165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // Actions
44265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void tryClose();
4432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void loadURL(const String&, const SandboxExtension::Handle&);
4442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void loadURLRequest(const WebCore::ResourceRequest&, const SandboxExtension::Handle&);
44565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void loadHTMLString(const String& htmlString, const String& baseURL);
44665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL);
44765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void loadPlainTextString(const String&);
4482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void linkClicked(const String& url, const WebMouseEvent&);
44965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void reload(bool reloadFromOrigin);
4502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void goForward(uint64_t, const SandboxExtension::Handle&);
4512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void goBack(uint64_t, const SandboxExtension::Handle&);
4522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void goToBackForwardItem(uint64_t, const SandboxExtension::Handle&);
45365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setActive(bool);
45465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setFocused(bool);
45565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setInitialFocus(bool);
45665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setWindowResizerSize(const WebCore::IntSize&);
45765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setIsInWindow(bool);
45881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void validateCommand(const String&, uint64_t);
4592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void executeEditCommand(const String&);
4602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
46165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void mouseEvent(const WebMouseEvent&);
46265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void wheelEvent(const WebWheelEvent&);
46365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void keyEvent(const WebKeyboardEvent&);
4642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(GESTURE_EVENTS)
4652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void gestureEvent(const WebGestureEvent&);
4662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif
46765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS)
46865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void touchEvent(const WebTouchEvent&);
46965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
4702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void contextMenuHidden() { m_isShowingContextMenu = false; }
47165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4722bde8e466a4451c7319e3a072d118917957d6554Steve Block    static void scroll(WebCore::Page*, WebCore::ScrollDirection, WebCore::ScrollGranularity);
4732bde8e466a4451c7319e3a072d118917957d6554Steve Block    static void logicalScroll(WebCore::Page*, WebCore::ScrollLogicalDirection, WebCore::ScrollGranularity);
4742bde8e466a4451c7319e3a072d118917957d6554Steve Block
47565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    uint64_t restoreSession(const SessionState&);
4762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void restoreSessionAndNavigateToCurrentItem(const SessionState&, const SandboxExtension::Handle&);
47765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
47865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didRemoveBackForwardItem(uint64_t);
47965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
48065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setDrawsBackground(bool);
48165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setDrawsTransparentBackground(bool);
48265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void viewWillStartLiveResize();
4842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void viewWillEndLiveResize();
4852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
48665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getContentsAsString(uint64_t callbackID);
48765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getMainResourceDataOfFrame(uint64_t frameID, uint64_t callbackID);
488ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    void getResourceDataFromFrame(uint64_t frameID, const String& resourceURL, uint64_t callbackID);
48965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getRenderTreeExternalRepresentation(uint64_t callbackID);
49065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getSelectionOrContentsAsString(uint64_t callbackID);
49165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getSourceForFrame(uint64_t frameID, uint64_t callbackID);
49265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void getWebArchiveOfFrame(uint64_t frameID, uint64_t callbackID);
49365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void runJavaScriptInMainFrame(const String&, uint64_t callbackID);
4942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void forceRepaint(uint64_t callbackID);
49565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
49665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void preferencesDidChange(const WebPreferencesStore&);
49765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void platformPreferencesDidChange(const WebPreferencesStore&);
49865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void updatePreferences(const WebPreferencesStore&);
49965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
50065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, uint32_t policyAction, uint64_t downloadID);
50165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setUserAgent(const String&);
50265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setCustomTextEncodingName(const String&);
50365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
50465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
50581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void performDictionaryLookupAtLocation(const WebCore::FloatPoint&);
5062bde8e466a4451c7319e3a072d118917957d6554Steve Block    void performDictionaryLookupForRange(DictionaryPopupInfo::Type, WebCore::Frame*, WebCore::Range*, NSDictionary *options);
50781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
50865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setWindowIsVisible(bool windowIsVisible);
50965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);
51065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
51165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
51265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void unapplyEditCommand(uint64_t commandID);
51365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void reapplyEditCommand(uint64_t commandID);
51465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didRemoveEditCommand(uint64_t commandID);
51565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
51665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void findString(const String&, uint32_t findOptions, uint32_t maxMatchCount);
51765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void hideFindUI();
51865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void countStringMatches(const String&, uint32_t findOptions, uint32_t maxMatchCount);
51965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
52065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(QT)
52165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void findZoomableAreaForPoint(const WebCore::IntPoint&);
52265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
52365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
52465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didChangeSelectedIndexForActivePopupMenu(int32_t newIndex);
52565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setTextForActivePopupMenu(int32_t index);
52665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
52765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didChooseFilesForOpenPanel(const Vector<String>&);
52865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didCancelForOpenPanel();
5292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(WEB_PROCESS_SANDBOX)
5302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void extendSandboxForFileFromOpenPanel(const SandboxExtension::Handle&);
5312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif
53265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
53365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didReceiveGeolocationPermissionDecision(uint64_t geolocationID, bool allowed);
53465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
53565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void advanceToNextMisspelling(bool startBeforeSelection);
53665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void changeSpellingToWord(const String& word);
53765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
53865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void uppercaseWord();
53965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void lowercaseWord();
54065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void capitalizeWord();
54165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
54265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setSmartInsertDeleteEnabled(bool isSmartInsertDeleteEnabled) { m_isSmartInsertDeleteEnabled = isSmartInsertDeleteEnabled; }
54365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
54465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
54565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(CONTEXT_MENUS)
54665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void didSelectItemFromActiveContextMenu(const WebContextMenuItemData&);
54765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
54865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5492bde8e466a4451c7319e3a072d118917957d6554Steve Block    void platformDragEnded();
5502bde8e466a4451c7319e3a072d118917957d6554Steve Block
5512bde8e466a4451c7319e3a072d118917957d6554Steve Block    static bool platformCanHandleRequest(const WebCore::ResourceRequest&);
5522bde8e466a4451c7319e3a072d118917957d6554Steve Block
55365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    OwnPtr<WebCore::Page> m_page;
55465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RefPtr<WebFrame> m_mainFrame;
55565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RefPtr<InjectedBundleBackForwardList> m_backForwardList;
55665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
55765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RefPtr<WebPageGroupProxy> m_pageGroup;
55865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
55965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    String m_userAgent;
56065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
56165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntSize m_viewSize;
56281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    OwnPtr<DrawingArea> m_drawingArea;
56365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
56465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool m_drawsBackground;
56565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool m_drawsTransparentBackground;
56665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
56765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool m_isInRedo;
56865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool m_isClosed;
56965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
57065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool m_tabToLinks;
57165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
57265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
57365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // Whether the containing window is visible or not.
57465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool m_windowIsVisible;
57565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
57665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // Whether smart insert/delete is enabled or not.
57765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    bool m_isSmartInsertDeleteEnabled;
57865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
57965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // The frame of the containing window in screen coordinates.
58065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntRect m_windowFrameInScreenCoordinates;
58165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
58265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // The frame of the view in window coordinates.
58365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntRect m_viewFrameInWindowCoordinates;
58465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
58565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // The accessibility position of the view.
58665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntPoint m_accessibilityPosition;
58765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
58865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // All plug-in views on this web page.
58965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    HashSet<PluginView*> m_pluginViews;
59065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
59165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RetainPtr<AccessibilityWebPageObject> m_mockAccessibilityElement;
5922bde8e466a4451c7319e3a072d118917957d6554Steve Block
5932bde8e466a4451c7319e3a072d118917957d6554Steve Block    RetainPtr<NSObject> m_dragSource;
5942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    WebCore::KeyboardEvent* m_keyboardEventBeingInterpreted;
5962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
59765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#elif PLATFORM(WIN)
59865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // Our view's window (in the UI process).
59965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    HWND m_nativeWindow;
6002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
6012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    RefPtr<WebCore::Node> m_gestureTargetNode;
60265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
60365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
60465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    HashMap<uint64_t, RefPtr<WebEditCommand> > m_editCommandMap;
60565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
60665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntSize m_windowResizerSize;
60765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
60865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageContextMenuClient m_contextMenuClient;
60965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageEditorClient m_editorClient;
61065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageFormClient m_formClient;
61165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageLoaderClient m_loaderClient;
6122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InjectedBundlePagePolicyClient m_policyClient;
6132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InjectedBundlePageResourceLoadClient m_resourceLoadClient;
61465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InjectedBundlePageUIClient m_uiClient;
6152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if ENABLE(FULLSCREEN_API)
6162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    InjectedBundlePageFullScreenClient m_fullScreenClient;
6172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif
61865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
61965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TILED_BACKING_STORE)
62065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::IntSize m_resizesToContentsLayoutSize;
62165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
62265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
62365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    FindController m_findController;
62465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RefPtr<PageOverlay> m_pageOverlay;
62565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
62665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR)
6272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    RefPtr<WebInspector> m_inspector;
62865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
6292bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API)
6302bde8e466a4451c7319e3a072d118917957d6554Steve Block    RefPtr<WebFullScreenManager> m_fullScreenManager;
6312bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
63265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RefPtr<WebPopupMenu> m_activePopupMenu;
63365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RefPtr<WebContextMenu> m_contextMenu;
63465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RefPtr<WebOpenPanelResultListener> m_activeOpenPanelResultListener;
63565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    GeolocationPermissionRequestManager m_geolocationPermissionRequestManager;
63665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
63765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    OwnPtr<WebCore::PrintContext> m_printContext;
63865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
63965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SandboxExtensionTracker m_sandboxExtensionTracker;
64065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    uint64_t m_pageID;
641ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
6422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    RefPtr<SandboxExtension> m_pendingDropSandboxExtension;
6432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
64481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    bool m_canRunBeforeUnloadConfirmPanel;
64581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
646ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool m_canRunModal;
647ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool m_isRunningModal;
64881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
6492bde8e466a4451c7319e3a072d118917957d6554Steve Block    float m_userSpaceScaleFactor;
6502bde8e466a4451c7319e3a072d118917957d6554Steve Block
65181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    bool m_cachedMainFrameIsPinnedToLeftSide;
65281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    bool m_cachedMainFrameIsPinnedToRightSide;
6532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
6542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool m_isShowingContextMenu;
6552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
6562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(WIN)
6572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool m_gestureReachedScrollingLimit;
6582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif
65965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
66065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
66165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit
66265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
66365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // WebPage_h
664