summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/WebPageProxy.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/UIProcess/WebPageProxy.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/UIProcess/WebPageProxy.h')
-rw-r--r--Source/WebKit2/UIProcess/WebPageProxy.h1573
1 files changed, 1079 insertions, 494 deletions
diff --git a/Source/WebKit2/UIProcess/WebPageProxy.h b/Source/WebKit2/UIProcess/WebPageProxy.h
index ae0a5a543..8436c2485 100644
--- a/Source/WebKit2/UIProcess/WebPageProxy.h
+++ b/Source/WebKit2/UIProcess/WebPageProxy.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2010-2016 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,88 +23,124 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef WebPageProxy_h
-#define WebPageProxy_h
+#pragma once
#include "APIObject.h"
-#include "APISession.h"
+#include "AssistedNodeInformation.h"
#include "AutoCorrectionCallback.h"
#include "Connection.h"
+#include "ContextMenuContextData.h"
+#include "DownloadID.h"
#include "DragControllerAction.h"
#include "DrawingAreaProxy.h"
+#include "EditingRange.h"
#include "EditorState.h"
#include "GeolocationPermissionRequestManagerProxy.h"
-#include "InteractionInformationAtPosition.h"
#include "LayerTreeContext.h"
#include "MessageSender.h"
#include "NotificationPermissionRequestManagerProxy.h"
#include "PageLoadState.h"
-#include "PlatformProcessIdentifier.h"
+#include "ProcessThrottler.h"
#include "SandboxExtension.h"
#include "ShareableBitmap.h"
+#include "UserMediaPermissionRequestManagerProxy.h"
+#include "VisibleContentRectUpdateInfo.h"
#include "WKBase.h"
#include "WKPagePrivate.h"
#include "WebColorPicker.h"
#include "WebContextMenuItemData.h"
#include "WebCoreArgumentCoders.h"
-#include "WebFindClient.h"
-#include "WebFormClient.h"
#include "WebFrameProxy.h"
-#include "WebHistoryClient.h"
-#include "WebHitTestResult.h"
-#include "WebPageContextMenuClient.h"
#include "WebPageCreationParameters.h"
+#include "WebPageDiagnosticLoggingClient.h"
+#include "WebPageInjectedBundleClient.h"
+#include "WebPaymentCoordinatorProxy.h"
+#include "WebPreferences.h"
#include <WebCore/AlternativeTextClient.h> // FIXME: Needed by WebPageProxyMessages.h for DICTATION_ALTERNATIVES.
#include "WebPageProxyMessages.h"
#include "WebPopupMenuProxy.h"
-#include "WebUIClient.h"
+#include "WebProcessLifetimeTracker.h"
+#include "WebsitePolicies.h"
+#include <WebCore/ActivityState.h>
#include <WebCore/Color.h>
#include <WebCore/DragActions.h>
-#include <WebCore/DragSession.h>
+#include <WebCore/EventTrackingRegions.h>
+#include <WebCore/FrameLoaderTypes.h>
#include <WebCore/HitTestResult.h>
+#include <WebCore/MediaProducer.h>
#include <WebCore/Page.h>
#include <WebCore/PlatformScreen.h>
#include <WebCore/ScrollTypes.h>
+#include <WebCore/SearchPopupMenu.h>
#include <WebCore/TextChecking.h>
#include <WebCore/TextGranularity.h>
-#include <WebCore/ViewState.h>
+#include <WebCore/UserInterfaceLayoutDirection.h>
+#include <WebCore/VisibleSelection.h>
+#include <memory>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
#include <wtf/PassRefPtr.h>
#include <wtf/Ref.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
+OBJC_CLASS NSView;
+OBJC_CLASS _WKRemoteObjectRegistry;
+
#if ENABLE(DRAG_SUPPORT)
#include <WebCore/DragActions.h>
-#include <WebCore/DragSession.h>
#endif
#if ENABLE(TOUCH_EVENTS)
#include "NativeWebTouchEvent.h"
#endif
-#if PLATFORM(EFL)
-#include "WKPageEfl.h"
-#include "WebUIPopupMenuClient.h"
-#include <Evas.h>
+#if PLATFORM(COCOA)
+#include "LayerRepresentation.h"
#endif
#if PLATFORM(MAC)
-#include <WebCore/PlatformLayer.h>
+#include "AttributedString.h"
+#endif
+
+#if PLATFORM(IOS)
+#include "ProcessThrottler.h"
+#endif
+
+#if PLATFORM(GTK)
+#include "ArgumentCodersGtk.h"
+#endif
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+#include <WebCore/MediaPlaybackTargetPicker.h>
+#include <WebCore/WebMediaSessionManagerClient.h>
+#endif
+
+#if ENABLE(MEDIA_SESSION)
+namespace WebCore {
+class MediaSessionMetadata;
+}
#endif
namespace API {
+class ContextMenuClient;
+class FindClient;
+class FindMatchesClient;
+class FormClient;
+class FullscreenClient;
+class HistoryClient;
+class IconLoadingClient;
class LoaderClient;
+class Navigation;
+class NavigationClient;
class PolicyClient;
+class UIClient;
class URLRequest;
}
namespace IPC {
-class ArgumentDecoder;
+class Decoder;
class Connection;
}
@@ -116,17 +152,24 @@ class FloatRect;
class GraphicsLayer;
class IntSize;
class ProtectionSpace;
+class RunLoopObserver;
class SharedBuffer;
+class TextIndicator;
+class ValidationBubble;
+
+struct DictionaryPopupInfo;
+struct ExceptionDetails;
struct FileChooserSettings;
+struct MediaConstraintsData;
+struct SecurityOriginData;
struct TextAlternativeWithRange;
struct TextCheckingResult;
struct ViewportAttributes;
struct WindowFeatures;
-}
-#if USE(APPKIT)
-OBJC_CLASS WKView;
-#endif
+enum class HasInsecureContent;
+enum class ShouldSample;
+}
#if PLATFORM(GTK)
typedef GtkWidget* PlatformWidget;
@@ -134,29 +177,45 @@ typedef GtkWidget* PlatformWidget;
namespace WebKit {
+enum HiddenPageThrottlingAutoIncreasesCounterType { };
+typedef RefCounter<HiddenPageThrottlingAutoIncreasesCounterType> HiddenPageThrottlingAutoIncreasesCounter;
+
class CertificateInfo;
+class NativeWebGestureEvent;
class NativeWebKeyboardEvent;
class NativeWebMouseEvent;
class NativeWebWheelEvent;
class PageClient;
+class RemoteLayerTreeScrollingPerformanceData;
+class RemoteLayerTreeTransaction;
class RemoteScrollingCoordinatorProxy;
-class StringPairVector;
+class UserData;
+class ViewSnapshot;
+class VisitedLinkStore;
class WebBackForwardList;
class WebBackForwardListItem;
-class WebColorPickerResultListenerProxy;
class WebContextMenuProxy;
class WebEditCommandProxy;
class WebFullScreenManagerProxy;
+class WebPlaybackSessionManagerProxy;
+class WebNavigationState;
+class WebVideoFullscreenManagerProxy;
class WebKeyboardEvent;
class WebMouseEvent;
class WebOpenPanelResultListenerProxy;
class WebPageGroup;
class WebProcessProxy;
+class WebUserContentControllerProxy;
class WebWheelEvent;
+class WebsiteDataStore;
+class GamepadData;
+
struct AttributedString;
struct ColorSpaceData;
-struct DictionaryPopupInfo;
+struct EditingRange;
struct EditorState;
+struct InteractionInformationRequest;
+struct LoadParameters;
struct PlatformPopupMenuData;
struct PrintInfo;
struct WebPopupItem;
@@ -165,11 +224,21 @@ struct WebPopupItem;
class WebVibrationProxy;
#endif
-typedef GenericCallback<WKStringRef, StringImpl*> StringCallback;
-typedef GenericCallback<WKSerializedScriptValueRef, WebSerializedScriptValue*> ScriptValueCallback;
+#if USE(QUICK_LOOK)
+class QuickLookDocumentData;
+#endif
+
+typedef GenericCallback<uint64_t> UnsignedCallback;
+typedef GenericCallback<EditingRange> EditingRangeCallback;
+typedef GenericCallback<const String&> StringCallback;
+typedef GenericCallback<API::SerializedScriptValue*, bool, const WebCore::ExceptionDetails&> ScriptValueCallback;
+
+enum VisibleWebPageCounterType { };
+using VisibleWebPageCounter = RefCounter<VisibleWebPageCounterType>;
+using VisibleWebPageToken = VisibleWebPageCounter::Token;
#if PLATFORM(GTK)
-typedef GenericCallback<WKErrorRef> PrintFinishedCallback;
+typedef GenericCallback<API::Error*> PrintFinishedCallback;
#endif
#if ENABLE(TOUCH_EVENTS)
@@ -183,179 +252,88 @@ struct QueuedTouchEvents {
};
#endif
-// FIXME: Make a version of CallbackBase with three arguments, and define ValidateCommandCallback as a specialization.
-class ValidateCommandCallback : public CallbackBase {
-public:
- typedef void (*CallbackFunction)(WKStringRef, bool, int32_t, WKErrorRef, void*);
+typedef GenericCallback<const String&, bool, int32_t> ValidateCommandCallback;
+typedef GenericCallback<const WebCore::IntRect&, const EditingRange&> RectForCharacterRangeCallback;
- static PassRefPtr<ValidateCommandCallback> create(void* context, CallbackFunction callback)
- {
- return adoptRef(new ValidateCommandCallback(context, callback));
- }
-
- virtual ~ValidateCommandCallback()
- {
- ASSERT(!m_callback);
- }
-
- void performCallbackWithReturnValue(StringImpl* returnValue1, bool returnValue2, int returnValue3)
- {
- ASSERT(m_callback);
-
- m_callback(toAPI(returnValue1), returnValue2, returnValue3, 0, context());
-
- m_callback = 0;
- }
-
- void invalidate()
- {
- ASSERT(m_callback);
-
- RefPtr<API::Error> error = API::Error::create();
- m_callback(0, 0, 0, toAPI(error.get()), context());
-
- m_callback = 0;
- }
-
-private:
-
- ValidateCommandCallback(void* context, CallbackFunction callback)
- : CallbackBase(context)
- , m_callback(callback)
- {
- }
-
- CallbackFunction m_callback;
-};
+#if PLATFORM(MAC)
+typedef GenericCallback<const AttributedString&, const EditingRange&> AttributedStringForCharacterRangeCallback;
+typedef GenericCallback<const String&, double, bool> FontAtSelectionCallback;
+#endif
#if PLATFORM(IOS)
-class GestureCallback : public CallbackBase {
-public:
- typedef void (*CallbackFunction)(const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t, WKErrorRef, void*);
-
- static PassRefPtr<GestureCallback> create(void* context, CallbackFunction callback)
- {
- return adoptRef(new GestureCallback(context, callback));
- }
-
- virtual ~GestureCallback()
- {
- ASSERT(!m_callback);
- }
-
- void performCallbackWithReturnValue(const WebCore::IntPoint& returnValue1, uint32_t returnValue2, uint32_t returnValue3, uint32_t returnValue4)
- {
- ASSERT(m_callback);
-
- m_callback(returnValue1, returnValue2, returnValue3, returnValue4, 0, context());
-
- m_callback = 0;
- }
-
- void invalidate()
- {
- ASSERT(m_callback);
-
- RefPtr<API::Error> error = API::Error::create();
- m_callback(WebCore::IntPoint(), 0, 0, 0, toAPI(error.get()), context());
-
- m_callback = 0;
- }
-
-private:
-
- GestureCallback(void* context, CallbackFunction callback)
- : CallbackBase(context)
- , m_callback(callback)
- {
- ASSERT(m_callback);
- }
-
- CallbackFunction m_callback;
+typedef GenericCallback<const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t> GestureCallback;
+typedef GenericCallback<const WebCore::IntPoint&, uint32_t, uint32_t> TouchesCallback;
+typedef GenericCallback<const Vector<WebCore::SelectionRect>&> SelectionRectsCallback;
+struct NodeAssistanceArguments {
+ AssistedNodeInformation m_nodeInformation;
+ bool m_userIsInteracting;
+ bool m_blurPreviousNode;
+ RefPtr<API::Object> m_userData;
};
-class TouchesCallback : public CallbackBase {
-public:
- typedef void (*CallbackFunction)(const WebCore::IntPoint&, uint32_t, WKErrorRef, void*);
-
- static PassRefPtr<TouchesCallback> create(void* context, CallbackFunction callback)
- {
- return adoptRef(new TouchesCallback(context, callback));
- }
-
- virtual ~TouchesCallback()
- {
- ASSERT(!m_callback);
- }
-
- void performCallbackWithReturnValue(const WebCore::IntPoint& returnValue1, uint32_t returnValue2)
- {
- ASSERT(m_callback);
-
- m_callback(returnValue1, returnValue2, 0, context());
-
- m_callback = 0;
- }
-
- void invalidate()
- {
- ASSERT(m_callback);
-
- RefPtr<API::Error> error = API::Error::create();
- m_callback(WebCore::IntPoint(), 0, toAPI(error.get()), context());
-
- m_callback = 0;
- }
-
-private:
-
- TouchesCallback(void* context, CallbackFunction callback)
- : CallbackBase(context)
- , m_callback(callback)
- {
- ASSERT(m_callback);
- }
-
- CallbackFunction m_callback;
-};
+using DrawToPDFCallback = GenericCallback<const IPC::DataReference&>;
#endif
-struct WebPageConfiguration {
- WebPageGroup* pageGroup = nullptr;
- API::Session* session = nullptr;
- WebPageProxy* relatedPage = nullptr;
-};
+#if PLATFORM(COCOA)
+typedef GenericCallback<const WebCore::MachSendRight&> MachSendRightCallback;
+#endif
class WebPageProxy : public API::ObjectImpl<API::Object::Type::Page>
#if ENABLE(INPUT_TYPE_COLOR)
, public WebColorPicker::Client
#endif
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+ , public WebCore::WebMediaSessionManagerClient
+#endif
, public WebPopupMenuProxy::Client
, public IPC::MessageReceiver
, public IPC::MessageSender {
public:
- static PassRefPtr<WebPageProxy> create(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
+ static Ref<WebPageProxy> create(PageClient&, WebProcessProxy&, uint64_t pageID, Ref<API::PageConfiguration>&&);
virtual ~WebPageProxy();
- void setSession(API::Session&);
+ const API::PageConfiguration& configuration() const;
uint64_t pageID() const { return m_pageID; }
- uint64_t sessionID() const { return m_session->getID(); }
+ WebCore::SessionID sessionID() const { return m_sessionID; }
WebFrameProxy* mainFrame() const { return m_mainFrame.get(); }
WebFrameProxy* focusedFrame() const { return m_focusedFrame.get(); }
WebFrameProxy* frameSetLargestFrame() const { return m_frameSetLargestFrame.get(); }
DrawingAreaProxy* drawingArea() const { return m_drawingArea.get(); }
-
+
+ WebNavigationState& navigationState() { return *m_navigationState.get(); }
+
+ WebsiteDataStore& websiteDataStore() { return m_websiteDataStore; }
+
+#if ENABLE(DATA_DETECTION)
+ NSArray *dataDetectionResults() { return m_dataDetectionResults.get(); }
+#endif
+
#if ENABLE(ASYNC_SCROLLING)
RemoteScrollingCoordinatorProxy* scrollingCoordinatorProxy() const { return m_scrollingCoordinatorProxy.get(); }
#endif
- WebBackForwardList& backForwardList() { return m_backForwardList.get(); }
+ WebBackForwardList& backForwardList() { return m_backForwardList; }
+
+ bool addsVisitedLinks() const { return m_addsVisitedLinks; }
+ void setAddsVisitedLinks(bool addsVisitedLinks) { m_addsVisitedLinks = addsVisitedLinks; }
+
+ void fullscreenMayReturnToInline();
+ void didEnterFullscreen();
+ void didExitFullscreen();
-#if ENABLE(INSPECTOR)
- WebInspectorProxy* inspector();
+ WebInspectorProxy* inspector() const;
+
+ bool isControlledByAutomation() const { return m_controlledByAutomation; }
+ void setControlledByAutomation(bool);
+
+#if ENABLE(REMOTE_INSPECTOR)
+ bool allowsRemoteInspection() const { return m_allowsRemoteInspection; }
+ void setAllowsRemoteInspection(bool);
+ String remoteInspectionNameOverride() const { return m_remoteInspectionNameOverride; }
+ void setRemoteInspectionNameOverride(const String&);
#endif
#if ENABLE(VIBRATION)
@@ -364,20 +342,43 @@ public:
#if ENABLE(FULLSCREEN_API)
WebFullScreenManagerProxy* fullScreenManager();
+
+ API::FullscreenClient& fullscreenClient() const { return *m_fullscreenClient; }
+ void setFullscreenClient(std::unique_ptr<API::FullscreenClient>);
+#endif
+#if (PLATFORM(IOS) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))
+ WebPlaybackSessionManagerProxy* playbackSessionManager();
+ WebVideoFullscreenManagerProxy* videoFullscreenManager();
#endif
-#if ENABLE(CONTEXT_MENUS)
- void initializeContextMenuClient(const WKPageContextMenuClientBase*);
+#if PLATFORM(IOS)
+ bool allowsMediaDocumentInlinePlayback() const;
+ void setAllowsMediaDocumentInlinePlayback(bool);
#endif
- void initializeFindClient(const WKPageFindClientBase*);
- void initializeFindMatchesClient(const WKPageFindMatchesClientBase*);
- void initializeFormClient(const WKPageFormClientBase*);
+
+#if ENABLE(CONTEXT_MENUS)
+ API::ContextMenuClient& contextMenuClient() { return *m_contextMenuClient; }
+ void setContextMenuClient(std::unique_ptr<API::ContextMenuClient>);
+#endif
+ API::FindClient& findClient() { return *m_findClient; }
+ void setFindClient(std::unique_ptr<API::FindClient>);
+ API::FindMatchesClient& findMatchesClient() { return *m_findMatchesClient; }
+ void setFindMatchesClient(std::unique_ptr<API::FindMatchesClient>);
+ API::DiagnosticLoggingClient& diagnosticLoggingClient() { return *m_diagnosticLoggingClient; }
+ void setDiagnosticLoggingClient(std::unique_ptr<API::DiagnosticLoggingClient>);
+ void setFormClient(std::unique_ptr<API::FormClient>);
+ void setNavigationClient(std::unique_ptr<API::NavigationClient>);
+ void setHistoryClient(std::unique_ptr<API::HistoryClient>);
void setLoaderClient(std::unique_ptr<API::LoaderClient>);
void setPolicyClient(std::unique_ptr<API::PolicyClient>);
- void initializeUIClient(const WKPageUIClientBase*);
-#if PLATFORM(EFL)
- void initializeUIPopupMenuClient(const WKPageUIPopupMenuClientBase*);
-#endif
+ void setInjectedBundleClient(const WKPageInjectedBundleClientBase*);
+ WebPageInjectedBundleClient* injectedBundleClient() { return m_injectedBundleClient.get(); }
+
+ API::UIClient& uiClient() { return *m_uiClient; }
+ void setUIClient(std::unique_ptr<API::UIClient>);
+
+ API::IconLoadingClient& iconLoadingClient() { return *m_iconLoadingClient; }
+ void setIconLoadingClient(std::unique_ptr<API::IconLoadingClient>);
void initializeWebPage();
@@ -385,76 +386,84 @@ public:
bool tryClose();
bool isClosed() const { return m_isClosed; }
- void loadRequest(const WebCore::ResourceRequest&, API::Object* userData = nullptr);
- void loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr);
- void loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr);
- void loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData = nullptr);
+ void setIsUsingHighPerformanceWebGL(bool value) { m_isUsingHighPerformanceWebGL = value; }
+ bool isUsingHighPerformanceWebGL() const { return m_isUsingHighPerformanceWebGL; }
+
+ void closePage(bool stopResponsivenessTimer);
+
+ void addPlatformLoadParameters(LoadParameters&);
+ RefPtr<API::Navigation> loadRequest(const WebCore::ResourceRequest&, WebCore::ShouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemes, API::Object* userData = nullptr);
+ RefPtr<API::Navigation> loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr);
+ RefPtr<API::Navigation> loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr);
+ RefPtr<API::Navigation> loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData = nullptr);
void loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL, API::Object* userData = nullptr);
void loadPlainTextString(const String&, API::Object* userData = nullptr);
void loadWebArchiveData(API::Data*, API::Object* userData = nullptr);
+ void navigateToPDFLinkWithSimulatedClick(const String& url, WebCore::IntPoint documentPoint, WebCore::IntPoint screenPoint);
void stopLoading();
- void reload(bool reloadFromOrigin);
+ RefPtr<API::Navigation> reload(bool reloadFromOrigin, bool contentBlockersEnabled);
- void goForward();
- void goBack();
+ RefPtr<API::Navigation> goForward();
+ RefPtr<API::Navigation> goBack();
- void goToBackForwardItem(WebBackForwardListItem*);
+ RefPtr<API::Navigation> goToBackForwardItem(WebBackForwardListItem*);
void tryRestoreScrollPosition();
- void didChangeBackForwardList(WebBackForwardListItem* addedItem, Vector<RefPtr<API::Object>>* removedItems);
- void willGoToBackForwardListItem(uint64_t itemID, IPC::MessageDecoder&);
+ void didChangeBackForwardList(WebBackForwardListItem* addedItem, Vector<RefPtr<WebBackForwardListItem>> removed);
+ void willGoToBackForwardListItem(uint64_t itemID, const UserData&);
+
+ bool shouldKeepCurrentBackForwardListItemInList(WebBackForwardListItem*);
bool willHandleHorizontalScrollEvents() const;
+ void updateWebsitePolicies(const WebsitePolicies&);
+
bool canShowMIMEType(const String& mimeType);
bool drawsBackground() const { return m_drawsBackground; }
void setDrawsBackground(bool);
- bool drawsTransparentBackground() const { return m_drawsTransparentBackground; }
- void setDrawsTransparentBackground(bool);
+ float topContentInset() const { return m_topContentInset; }
+ void setTopContentInset(float);
WebCore::Color underlayColor() const { return m_underlayColor; }
void setUnderlayColor(const WebCore::Color&);
+ // At this time, m_pageExtendedBackgroundColor can be set via pageExtendedBackgroundColorDidChange() which is a message
+ // from the UIProcess, or by didCommitLayerTree(). When PLATFORM(MAC) adopts UI side compositing, we should get rid of
+ // the message entirely.
+ WebCore::Color pageExtendedBackgroundColor() const { return m_pageExtendedBackgroundColor; }
+
void viewWillStartLiveResize();
void viewWillEndLiveResize();
- void setInitialFocus(bool forward, bool isKeyboardEventValid, const WebKeyboardEvent&);
- void setWindowResizerSize(const WebCore::IntSize&);
+ void setInitialFocus(bool forward, bool isKeyboardEventValid, const WebKeyboardEvent&, std::function<void (CallbackBase::Error)>);
void clearSelection();
+ void restoreSelectionInFocusedEditableElement();
+
+ void setViewNeedsDisplay(const WebCore::Region&);
+ void requestScroll(const WebCore::FloatPoint& scrollPosition, const WebCore::IntPoint& scrollOrigin, bool isProgrammaticScroll);
+
+ void setDelegatesScrolling(bool delegatesScrolling) { m_delegatesScrolling = delegatesScrolling; }
+ bool delegatesScrolling() const { return m_delegatesScrolling; }
- void setViewNeedsDisplay(const WebCore::IntRect&);
- void displayView();
- bool canScrollView();
- void scrollView(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset);
+ enum class ActivityStateChangeDispatchMode { Deferrable, Immediate };
+ void activityStateDidChange(WebCore::ActivityState::Flags mayHaveChanged, bool wantsSynchronousReply = false, ActivityStateChangeDispatchMode = ActivityStateChangeDispatchMode::Deferrable);
+ bool isInWindow() const { return m_activityState & WebCore::ActivityState::IsInWindow; }
+ void waitForDidUpdateActivityState();
+ void didUpdateActivityState() { m_waitingForDidUpdateActivityState = false; }
- enum class WantsReplyOrNot { DoesNotWantReply, DoesWantReply };
- void viewStateDidChange(WebCore::ViewState::Flags mayHaveChanged, WantsReplyOrNot = WantsReplyOrNot::DoesNotWantReply);
- bool isInWindow() const { return m_viewState & WebCore::ViewState::IsInWindow; }
- void waitForDidUpdateViewState();
+ void layerHostingModeDidChange();
WebCore::IntSize viewSize() const;
- bool isViewVisible() const { return m_viewState & WebCore::ViewState::IsVisible; }
+ bool isViewVisible() const { return m_activityState & WebCore::ActivityState::IsVisible; }
bool isViewWindowActive() const;
- bool isProcessSuppressible() const;
- void executeEditCommand(const String& commandName);
- void validateCommand(const String& commandName, PassRefPtr<ValidateCommandCallback>);
-#if PLATFORM(IOS)
- void selectWithGesture(const WebCore::IntPoint, WebCore::TextGranularity, uint32_t gestureType, uint32_t gestureState, PassRefPtr<GestureCallback>);
- void updateSelectionWithTouches(const WebCore::IntPoint, uint32_t touches, bool baseIsStart, PassRefPtr<TouchesCallback>);
- void selectWithTwoTouches(const WebCore::IntPoint from, const WebCore::IntPoint to, uint32_t gestureType, uint32_t gestureState, PassRefPtr<GestureCallback>);
- void extendSelection(WebCore::TextGranularity);
- void requestAutocorrectionData(const String& textForAutocorrection, PassRefPtr<AutocorrectionDataCallback>);
- void applyAutocorrection(const String& correction, const String& originalText, PassRefPtr<StringCallback>);
- void requestAutocorrectionContext(PassRefPtr<AutocorrectionContextCallback>);
- void getAutocorrectionContext(String& contextBefore, String& markedText, String& selectedText, String& contextAfter, uint64_t& location, uint64_t& length);
- void didReceivePositionInformation(const InteractionInformationAtPosition&);
- void getPositionInformation(const WebCore::IntPoint&, InteractionInformationAtPosition&);
- void requestPositionInformation(const WebCore::IntPoint&);
-#endif
+ void addMIMETypeWithCustomContentProvider(const String& mimeType);
+
+ void executeEditCommand(const String& commandName, const String& argument = String());
+ void validateCommand(const String& commandName, std::function<void (const String&, bool, int32_t, CallbackBase::Error)>);
const EditorState& editorState() const { return m_editorState; }
bool canDelete() const { return hasSelectedRange() && isContentEditable(); }
@@ -463,11 +472,106 @@ public:
bool maintainsInactiveSelection() const { return m_maintainsInactiveSelection; }
void setMaintainsInactiveSelection(bool);
-#if USE(TILED_BACKING_STORE)
+ void setEditable(bool);
+ bool isEditable() const { return m_isEditable; }
+
+#if PLATFORM(IOS)
+ void executeEditCommand(const String& commandName, std::function<void (CallbackBase::Error)>);
+ double displayedContentScale() const { return m_lastVisibleContentRectUpdate.scale(); }
+ const WebCore::FloatRect& exposedContentRect() const { return m_lastVisibleContentRectUpdate.exposedContentRect(); }
+ const WebCore::FloatRect& unobscuredContentRect() const { return m_lastVisibleContentRectUpdate.unobscuredContentRect(); }
+ bool inStableState() const { return m_lastVisibleContentRectUpdate.inStableState(); }
+ const WebCore::FloatRect& unobscuredContentRectRespectingInputViewBounds() const { return m_lastVisibleContentRectUpdate.unobscuredContentRectRespectingInputViewBounds(); }
+ // When visual viewports are enabled, this is the layout viewport rect.
+ const WebCore::FloatRect& customFixedPositionRect() const { return m_lastVisibleContentRectUpdate.customFixedPositionRect(); }
+
+ void updateVisibleContentRects(const VisibleContentRectUpdateInfo&);
+ void resendLastVisibleContentRects();
+
+ enum class UnobscuredRectConstraint { ConstrainedToDocumentRect, Unconstrained };
+ WebCore::FloatRect computeCustomFixedPositionRect(const WebCore::FloatRect& unobscuredContentRect, const WebCore::FloatRect& unobscuredContentRectRespectingInputViewBounds, const WebCore::FloatRect& currentCustomFixedPositionRect, double displayedContentScale, UnobscuredRectConstraint = UnobscuredRectConstraint::Unconstrained, bool visualViewportEnabled = false) const;
+
+ void overflowScrollViewWillStartPanGesture();
+ void overflowScrollViewDidScroll();
+ void overflowScrollWillStartScroll();
+ void overflowScrollDidEndScroll();
+
+ void dynamicViewportSizeUpdate(const WebCore::FloatSize& minimumLayoutSize, const WebCore::FloatSize& maximumUnobscuredSize, const WebCore::FloatRect& targetExposedContentRect, const WebCore::FloatRect& targetUnobscuredRect, const WebCore::FloatRect& targetUnobscuredRectInScrollViewCoordinates, double targetScale, int32_t deviceOrientation);
+ void synchronizeDynamicViewportUpdate();
+
+ void setViewportConfigurationMinimumLayoutSize(const WebCore::FloatSize&);
+ void setMaximumUnobscuredSize(const WebCore::FloatSize&);
+ void setDeviceOrientation(int32_t);
+ int32_t deviceOrientation() const { return m_deviceOrientation; }
+ void willCommitLayerTree(uint64_t transactionID);
+
+ void selectWithGesture(const WebCore::IntPoint, WebCore::TextGranularity, uint32_t gestureType, uint32_t gestureState, bool isInteractingWithAssistedNode, std::function<void (const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t, CallbackBase::Error)>);
+ void updateSelectionWithTouches(const WebCore::IntPoint, uint32_t touches, bool baseIsStart, std::function<void (const WebCore::IntPoint&, uint32_t, uint32_t, CallbackBase::Error)>);
+ void selectWithTwoTouches(const WebCore::IntPoint from, const WebCore::IntPoint to, uint32_t gestureType, uint32_t gestureState, std::function<void (const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t, CallbackBase::Error)>);
+ void updateBlockSelectionWithTouch(const WebCore::IntPoint, uint32_t touch, uint32_t handlePosition);
+ void extendSelection(WebCore::TextGranularity);
+ void selectWordBackward();
+ void moveSelectionByOffset(int32_t offset, std::function<void (CallbackBase::Error)>);
+ void selectTextWithGranularityAtPoint(const WebCore::IntPoint, WebCore::TextGranularity, bool isInteractingWithAssistedNode, std::function<void (CallbackBase::Error)>);
+ void selectPositionAtPoint(const WebCore::IntPoint, bool isInteractingWithAssistedNode, std::function<void (CallbackBase::Error)>);
+ void selectPositionAtBoundaryWithDirection(const WebCore::IntPoint, WebCore::TextGranularity, WebCore::SelectionDirection, bool isInteractingWithAssistedNode, std::function<void (CallbackBase::Error)>);
+ void moveSelectionAtBoundaryWithDirection(WebCore::TextGranularity, WebCore::SelectionDirection, std::function<void(CallbackBase::Error)>);
+ void beginSelectionInDirection(WebCore::SelectionDirection, std::function<void (uint64_t, CallbackBase::Error)>);
+ void updateSelectionWithExtentPoint(const WebCore::IntPoint, bool isInteractingWithAssistedNode, std::function<void (uint64_t, CallbackBase::Error)>);
+ void updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint, WebCore::TextGranularity, bool isInteractingWithAssistedNode, std::function<void(uint64_t, CallbackBase::Error)>);
+ void requestAutocorrectionData(const String& textForAutocorrection, std::function<void (const Vector<WebCore::FloatRect>&, const String&, double, uint64_t, CallbackBase::Error)>);
+ void applyAutocorrection(const String& correction, const String& originalText, std::function<void (const String&, CallbackBase::Error)>);
+ bool applyAutocorrection(const String& correction, const String& originalText);
+ void requestAutocorrectionContext(std::function<void (const String&, const String&, const String&, const String&, uint64_t, uint64_t, CallbackBase::Error)>);
+ void getAutocorrectionContext(String& contextBefore, String& markedText, String& selectedText, String& contextAfter, uint64_t& location, uint64_t& length);
+ void requestDictationContext(std::function<void (const String&, const String&, const String&, CallbackBase::Error)>);
+ void replaceDictatedText(const String& oldText, const String& newText);
+ void replaceSelectedText(const String& oldText, const String& newText);
+ void didReceivePositionInformation(const InteractionInformationAtPosition&);
+ void getPositionInformation(const InteractionInformationRequest&, InteractionInformationAtPosition&);
+ void requestPositionInformation(const InteractionInformationRequest&);
+ void startInteractionWithElementAtPosition(const WebCore::IntPoint&);
+ void stopInteraction();
+ void performActionOnElement(uint32_t action);
+ void saveImageToLibrary(const SharedMemory::Handle& imageHandle, uint64_t imageSize);
+ void didUpdateBlockSelectionWithTouch(uint32_t touch, uint32_t flags, float growThreshold, float shrinkThreshold);
+ void focusNextAssistedNode(bool isForward, std::function<void (CallbackBase::Error)>);
+ void setAssistedNodeValue(const String&);
+ void setAssistedNodeValueAsNumber(double);
+ void setAssistedNodeSelectedIndex(uint32_t index, bool allowMultipleSelection = false);
+ void applicationDidEnterBackground();
+ void applicationDidFinishSnapshottingAfterEnteringBackground();
+ void applicationWillEnterForeground();
+ void applicationWillResignActive();
+ void applicationDidBecomeActive();
+ void zoomToRect(WebCore::FloatRect, double minimumScale, double maximumScale);
+ void commitPotentialTapFailed();
+ void didNotHandleTapAsClick(const WebCore::IntPoint&);
+ void disableDoubleTapGesturesDuringTapIfNecessary(uint64_t requestID);
+ void contentSizeCategoryDidChange(const String& contentSizeCategory);
+ void getSelectionContext(std::function<void(const String&, const String&, const String&, CallbackBase::Error)>);
+ void handleTwoFingerTapAtPoint(const WebCore::IntPoint&, uint64_t requestID);
+ void setForceAlwaysUserScalable(bool);
+ void setIsScrollingOrZooming(bool);
+ void requestRectsForGranularityWithSelectionOffset(WebCore::TextGranularity, uint32_t offset, std::function<void(const Vector<WebCore::SelectionRect>&, CallbackBase::Error)>);
+ void requestRectsAtSelectionOffsetWithText(int32_t offset, const String&, std::function<void(const Vector<WebCore::SelectionRect>&, CallbackBase::Error)>);
+#if ENABLE(DATA_INTERACTION)
+ void didPerformDataInteractionControllerOperation();
+ void didHandleStartDataInteractionRequest(bool started);
+ void requestStartDataInteraction(const WebCore::IntPoint& clientPosition, const WebCore::IntPoint& globalPosition);
+#endif
+#endif
+#if ENABLE(DATA_DETECTION)
+ void setDataDetectionResult(const DataDetectionResult&);
+#endif
+ void didCommitLayerTree(const WebKit::RemoteLayerTreeTransaction&);
+ void layerTreeCommitComplete();
+
+ bool updateLayoutViewportParameters(const WebKit::RemoteLayerTreeTransaction&);
+
+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect);
-#endif
-#if PLATFORM(EFL)
- void setThemePath(const String&);
+ void commitPageTransitionViewport();
#endif
#if PLATFORM(GTK)
@@ -480,51 +584,72 @@ public:
void setInputMethodState(bool enabled);
#endif
-#if PLATFORM(MAC)
+#if PLATFORM (GTK) && HAVE(GTK_GESTURES)
+ void getCenterForZoomGesture(const WebCore::IntPoint& centerInViewCoordinates, WebCore::IntPoint& center);
+#endif
+
+#if PLATFORM(COCOA)
void windowAndViewFramesChanged(const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates);
void setMainFrameIsScrollable(bool);
- void setComposition(const String& text, Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd);
- void confirmComposition();
- void cancelComposition();
- bool insertText(const String& text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd);
- bool insertDictatedText(const String& text, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, const Vector<WebCore::TextAlternativeWithRange>& dictationAlternatives);
- void getMarkedRange(uint64_t& location, uint64_t& length);
- void getSelectedRange(uint64_t& location, uint64_t& length);
- void getAttributedSubstringFromRange(uint64_t location, uint64_t length, AttributedString&);
- uint64_t characterIndexForPoint(const WebCore::IntPoint);
- WebCore::IntRect firstRectForCharacterRange(uint64_t, uint64_t);
- bool executeKeypressCommands(const Vector<WebCore::KeypressCommand>&);
-
void sendComplexTextInputToPlugin(uint64_t pluginComplexTextInputIdentifier, const String& textInput);
bool shouldDelayWindowOrderingForEvent(const WebMouseEvent&);
bool acceptsFirstMouse(int eventNumber, const WebMouseEvent&);
- void setAcceleratedCompositingRootLayer(PlatformLayer* rootLayer);
- PlatformLayer* acceleratedCompositingRootLayer() const;
+ void setAcceleratedCompositingRootLayer(LayerOrView*);
+ LayerOrView* acceleratedCompositingRootLayer() const;
-#if USE(APPKIT)
- WKView* wkView() const;
- void intrinsicContentSizeDidChange(const WebCore::IntSize& intrinsicContentSize);
+ void insertTextAsync(const String& text, const EditingRange& replacementRange, bool registerUndoGroup = false, EditingRangeIsRelativeTo = EditingRangeIsRelativeTo::EditableRoot, bool suppressSelectionUpdate = false);
+ void getMarkedRangeAsync(std::function<void (EditingRange, CallbackBase::Error)>);
+ void getSelectedRangeAsync(std::function<void (EditingRange, CallbackBase::Error)>);
+ void characterIndexForPointAsync(const WebCore::IntPoint&, std::function<void (uint64_t, CallbackBase::Error)>);
+ void firstRectForCharacterRangeAsync(const EditingRange&, std::function<void (const WebCore::IntRect&, const EditingRange&, CallbackBase::Error)>);
+ void setCompositionAsync(const String& text, Vector<WebCore::CompositionUnderline> underlines, const EditingRange& selectionRange, const EditingRange& replacementRange);
+ void confirmCompositionAsync();
+
+ void setScrollPerformanceDataCollectionEnabled(bool);
+ bool scrollPerformanceDataCollectionEnabled() const { return m_scrollPerformanceDataCollectionEnabled; }
+ RemoteLayerTreeScrollingPerformanceData* scrollingPerformanceData() { return m_scrollingPerformanceData.get(); }
+#endif // PLATFORM(COCOA)
+
+#if PLATFORM(MAC)
+ void insertDictatedTextAsync(const String& text, const EditingRange& replacementRange, const Vector<WebCore::TextAlternativeWithRange>& dictationAlternatives, bool registerUndoGroup);
+ void attributedSubstringForCharacterRangeAsync(const EditingRange&, std::function<void (const AttributedString&, const EditingRange&, CallbackBase::Error)>);
+ void setFont(const String& fontFamily, double fontSize, uint64_t fontTraits);
+ void fontAtSelection(std::function<void (const String&, double, bool, CallbackBase::Error)>);
+
+ void startWindowDrag();
+ NSWindow *platformWindow();
+ void rootViewToWindow(const WebCore::IntRect& viewRect, WebCore::IntRect& windowRect);
+
+#if WK_API_ENABLED
+ NSView *inspectorAttachmentView();
+ _WKRemoteObjectRegistry *remoteObjectRegistry();
#endif
+
+ void intrinsicContentSizeDidChange(const WebCore::IntSize& intrinsicContentSize);
+ CGRect boundsOfLayerInLayerBackedWindowCoordinates(CALayer *) const;
#endif // PLATFORM(MAC)
-#if PLATFORM(EFL)
- void handleInputMethodKeydown(bool& handled);
- void confirmComposition(const String&);
- void setComposition(const String&, Vector<WebCore::CompositionUnderline>&, int);
- void cancelComposition();
-#endif
+
#if PLATFORM(GTK)
PlatformWidget viewWidget();
-#endif
-#if USE(TILED_BACKING_STORE)
- void commitPageTransitionViewport();
+ const WebCore::Color& backgroundColor() const { return m_backgroundColor; }
+ void setBackgroundColor(const WebCore::Color& color) { m_backgroundColor = color; }
#endif
void handleMouseEvent(const NativeWebMouseEvent&);
void handleWheelEvent(const NativeWebWheelEvent&);
void handleKeyboardEvent(const NativeWebKeyboardEvent&);
-#if ENABLE(TOUCH_EVENTS)
+
+#if ENABLE(MAC_GESTURE_EVENTS)
+ void handleGestureEvent(const NativeWebGestureEvent&);
+#endif
+
+#if ENABLE(IOS_TOUCH_EVENTS)
+ void handleTouchEventSynchronously(NativeWebTouchEvent&);
+ void handleTouchEventAsynchronously(const NativeWebTouchEvent&);
+
+#elif ENABLE(TOUCH_EVENTS)
void handleTouchEvent(const NativeWebTouchEvent&);
#endif
@@ -550,26 +675,31 @@ public:
double estimatedProgress() const;
- void terminateProcess();
+ enum class TerminationReason { UnresponsiveWhileInBackground, Other };
+ void terminateProcess(TerminationReason = TerminationReason::Other);
- typedef bool (*WebPageProxySessionStateFilterCallback)(WKPageRef, WKStringRef type, WKTypeRef object, void* context);
- PassRefPtr<API::Data> sessionStateData(WebPageProxySessionStateFilterCallback, void* context) const;
- void restoreFromSessionStateData(API::Data*);
+ SessionState sessionState(const std::function<bool (WebBackForwardListItem&)>& = nullptr) const;
+ RefPtr<API::Navigation> restoreFromSessionState(SessionState, bool navigate);
bool supportsTextZoom() const;
double textZoomFactor() const { return m_textZoomFactor; }
void setTextZoomFactor(double);
- double pageZoomFactor() const { return m_pageZoomFactor; }
+ double pageZoomFactor() const;
void setPageZoomFactor(double);
void setPageAndTextZoomFactors(double pageZoomFactor, double textZoomFactor);
void scalePage(double scale, const WebCore::IntPoint& origin);
- double pageScaleFactor() const { return m_pageScaleFactor; }
-
+ void scalePageInViewCoordinates(double scale, const WebCore::IntPoint& centerInViewCoordinates);
+ double pageScaleFactor() const;
+ double viewScaleFactor() const { return m_viewScaleFactor; }
+ void scaleView(double scale);
+ void setShouldScaleViewToFitDocument(bool);
+
float deviceScaleFactor() const;
void setIntrinsicDeviceScaleFactor(float);
void setCustomDeviceScaleFactor(float);
- void windowScreenDidChange(PlatformDisplayID);
+ void windowScreenDidChange(WebCore::PlatformDisplayID);
+ void accessibilitySettingsDidChange();
void setUseFixedLayout(bool);
void setFixedLayoutSize(const WebCore::IntSize&);
@@ -578,9 +708,6 @@ public:
void listenForLayoutMilestones(WebCore::LayoutMilestones);
- void setVisibilityStatePrerender();
- void didUpdateViewState() { m_waitingForDidUpdateViewState = false; }
-
bool hasHorizontalScrollbar() const { return m_mainFrameHasHorizontalScrollbar; }
bool hasVerticalScrollbar() const { return m_mainFrameHasVerticalScrollbar; }
@@ -601,6 +728,14 @@ public:
bool rubberBandsAtBottom() const;
void setRubberBandsAtBottom(bool);
+ void setShouldUseImplicitRubberBandControl(bool shouldUseImplicitRubberBandControl) { m_shouldUseImplicitRubberBandControl = shouldUseImplicitRubberBandControl; }
+ bool shouldUseImplicitRubberBandControl() const { return m_shouldUseImplicitRubberBandControl; }
+
+ void setEnableVerticalRubberBanding(bool);
+ bool verticalRubberBandingIsEnabled() const;
+ void setEnableHorizontalRubberBanding(bool);
+ bool horizontalRubberBandingIsEnabled() const;
+
void setBackgroundExtendsBeyondPage(bool);
bool backgroundExtendsBeyondPage() const;
@@ -612,25 +747,30 @@ public:
double pageLength() const { return m_pageLength; }
void setGapBetweenPages(double);
double gapBetweenPages() const { return m_gapBetweenPages; }
+ void setPaginationLineGridEnabled(bool);
+ bool paginationLineGridEnabled() const { return m_paginationLineGridEnabled; }
unsigned pageCount() const { return m_pageCount; }
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
// Called by the web process through a message.
void registerWebProcessAccessibilityToken(const IPC::DataReference&);
// Called by the UI process when it is ready to send its tokens to the web process.
void registerUIProcessAccessibilityTokens(const IPC::DataReference& elemenToken, const IPC::DataReference& windowToken);
bool readSelectionFromPasteboard(const String& pasteboardName);
String stringSelectionForPasteboard();
- PassRefPtr<WebCore::SharedBuffer> dataSelectionForPasteboard(const String& pasteboardType);
+ RefPtr<WebCore::SharedBuffer> dataSelectionForPasteboard(const String& pasteboardType);
void makeFirstResponder();
ColorSpaceData colorSpace();
#endif
- void pageScaleFactorDidChange(double);
- void pageZoomFactorDidChange(double);
+#if ENABLE(SERVICE_CONTROLS)
+ void replaceSelectionWithPasteboardData(const Vector<String>& types, const IPC::DataReference&);
+#endif
- void setMemoryCacheClientCallsEnabled(bool);
+ void pageScaleFactorDidChange(double);
+ void pluginScaleFactorDidChange(double);
+ void pluginZoomFactorDidChange(double);
// Find.
void findString(const String&, FindOptions, unsigned maxMatchCount);
@@ -641,23 +781,29 @@ public:
void hideFindUI();
void countStringMatches(const String&, FindOptions, unsigned maxMatchCount);
void didCountStringMatches(const String&, uint32_t matchCount);
- void setFindIndicator(const WebCore::FloatRect& selectionRectInWindowCoordinates, const Vector<WebCore::FloatRect>& textRectsInSelectionRectCoordinates, float contentImageScaleFactor, const ShareableBitmap::Handle& contentImageHandle, bool fadeOut, bool animate);
- void didFindString(const String&, uint32_t matchCount);
+ void setTextIndicator(const WebCore::TextIndicatorData&, uint64_t /* WebCore::TextIndicatorWindowLifetime */ lifetime = 0 /* Permanent */);
+ void setTextIndicatorAnimationProgress(float);
+ void clearTextIndicator();
+ void didFindString(const String&, const Vector<WebCore::IntRect>&, uint32_t matchCount, int32_t matchIndex);
void didFailToFindString(const String&);
- void didFindStringMatches(const String&, Vector<Vector<WebCore::IntRect>> matchRects, int32_t firstIndexAfterSelection);
+ void didFindStringMatches(const String&, const Vector<Vector<WebCore::IntRect>>& matchRects, int32_t firstIndexAfterSelection);
+
+ void getContentsAsString(std::function<void (const String&, CallbackBase::Error)>);
+ void getBytecodeProfile(std::function<void (const String&, CallbackBase::Error)>);
+ void getSamplingProfilerOutput(std::function<void (const String&, CallbackBase::Error)>);
+ void isWebProcessResponsive(std::function<void (bool isWebProcessResponsive)>);
- void getContentsAsString(PassRefPtr<StringCallback>);
#if ENABLE(MHTML)
- void getContentsAsMHTMLData(PassRefPtr<DataCallback>, bool useBinaryEncoding);
-#endif
- void getMainResourceDataOfFrame(WebFrameProxy*, PassRefPtr<DataCallback>);
- void getResourceDataFromFrame(WebFrameProxy*, API::URL*, PassRefPtr<DataCallback>);
- void getRenderTreeExternalRepresentation(PassRefPtr<StringCallback>);
- void getSelectionOrContentsAsString(PassRefPtr<StringCallback>);
- void getSelectionAsWebArchiveData(PassRefPtr<DataCallback>);
- void getSourceForFrame(WebFrameProxy*, PassRefPtr<StringCallback>);
- void getWebArchiveOfFrame(WebFrameProxy*, PassRefPtr<DataCallback>);
- void runJavaScriptInMainFrame(const String&, PassRefPtr<ScriptValueCallback>);
+ void getContentsAsMHTMLData(std::function<void (API::Data*, CallbackBase::Error)>);
+#endif
+ void getMainResourceDataOfFrame(WebFrameProxy*, std::function<void (API::Data*, CallbackBase::Error)>);
+ void getResourceDataFromFrame(WebFrameProxy*, API::URL*, std::function<void (API::Data*, CallbackBase::Error)>);
+ void getRenderTreeExternalRepresentation(std::function<void (const String&, CallbackBase::Error)>);
+ void getSelectionOrContentsAsString(std::function<void (const String&, CallbackBase::Error)>);
+ void getSelectionAsWebArchiveData(std::function<void (API::Data*, CallbackBase::Error)>);
+ void getSourceForFrame(WebFrameProxy*, std::function<void (const String&, CallbackBase::Error)>);
+ void getWebArchiveOfFrame(WebFrameProxy*, std::function<void (API::Data*, CallbackBase::Error)>);
+ void runJavaScriptInMainFrame(const String&, std::function<void (API::SerializedScriptValue*, bool hadException, const WebCore::ExceptionDetails&, CallbackBase::Error)> callbackFunction);
void forceRepaint(PassRefPtr<VoidCallback>);
float headerHeight(WebFrameProxy*);
@@ -665,12 +811,13 @@ public:
void drawHeader(WebFrameProxy*, const WebCore::FloatRect&);
void drawFooter(WebFrameProxy*, const WebCore::FloatRect&);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
// Dictionary.
void performDictionaryLookupAtLocation(const WebCore::FloatPoint&);
+ void performDictionaryLookupOfCurrentSelection();
#endif
- void receivedPolicyDecision(WebCore::PolicyAction, WebFrameProxy*, uint64_t listenerID);
+ void receivedPolicyDecision(WebCore::PolicyAction, WebFrameProxy&, uint64_t listenerID, API::Navigation* navigationID, const WebsitePolicies&);
void backForwardRemovedItem(uint64_t itemID);
@@ -679,32 +826,38 @@ public:
void dragEntered(WebCore::DragData&, const String& dragStorageName = String());
void dragUpdated(WebCore::DragData&, const String& dragStorageName = String());
void dragExited(WebCore::DragData&, const String& dragStorageName = String());
- void performDrag(WebCore::DragData&, const String& dragStorageName, const SandboxExtension::Handle&, const SandboxExtension::HandleArray&);
+ void performDragOperation(WebCore::DragData&, const String& dragStorageName, const SandboxExtension::Handle&, const SandboxExtension::HandleArray&);
- void didPerformDragControllerAction(WebCore::DragSession);
+ void didPerformDragControllerAction(uint64_t dragOperation, bool mouseIsOverFileInput, unsigned numberOfItemsToBeAccepted);
void dragEnded(const WebCore::IntPoint& clientPosition, const WebCore::IntPoint& globalPosition, uint64_t operation);
-#if PLATFORM(MAC)
- void setDragImage(const WebCore::IntPoint& clientPosition, const ShareableBitmap::Handle& dragImageHandle, bool isLinkDrag);
- void setPromisedData(const String& pasteboardName, const SharedMemory::Handle& imageHandle, uint64_t imageSize, const String& filename, const String& extension,
+ void dragCancelled();
+#if PLATFORM(COCOA)
+ void setDragImage(const WebCore::IntPoint& clientPosition, const ShareableBitmap::Handle& dragImageHandle, const WebCore::FloatPoint& dragImageAnchor, bool isLinkDrag);
+ void setPromisedDataForImage(const String& pasteboardName, const SharedMemory::Handle& imageHandle, uint64_t imageSize, const String& filename, const String& extension,
const String& title, const String& url, const String& visibleURL, const SharedMemory::Handle& archiveHandle, uint64_t archiveSize);
+#if ENABLE(ATTACHMENT_ELEMENT)
+ void setPromisedDataForAttachment(const String& pasteboardName, const String& filename, const String& extension, const String& title, const String& url, const String& visibleURL);
+#endif
#endif
#if PLATFORM(GTK)
- void startDrag(const WebCore::DragData&, const ShareableBitmap::Handle& dragImage);
+ void startDrag(WebSelectionData&&, uint64_t dragOperation, const ShareableBitmap::Handle& dragImage);
#endif
#endif
void processDidBecomeUnresponsive();
- void interactionOccurredWhileProcessUnresponsive();
void processDidBecomeResponsive();
void processDidCrash();
+ void willChangeProcessIsResponsive();
+ void didChangeProcessIsResponsive();
+
+#if PLATFORM(IOS)
+ void processWillBecomeSuspended();
+ void processWillBecomeForeground();
+#endif
-#if USE(ACCELERATED_COMPOSITING)
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&);
virtual void exitAcceleratedCompositingMode();
virtual void updateAcceleratedCompositingMode(const LayerTreeContext&);
-#endif
-
- void didDraw();
enum UndoOrRedo { Undo, Redo };
void addEditCommand(WebEditCommandProxy*);
@@ -712,26 +865,31 @@ public:
bool isValidEditCommand(WebEditCommandProxy*);
void registerEditCommand(PassRefPtr<WebEditCommandProxy>, UndoOrRedo);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
void registerKeypressCommandName(const String& name) { m_knownKeypressCommandNames.add(name); }
bool isValidKeypressCommandName(const String& name) const { return m_knownKeypressCommandNames.contains(name); }
#endif
- WebProcessProxy& process() { return m_process.get(); }
- PlatformProcessIdentifier processIdentifier() const;
+ WebProcessProxy& process() { return m_process; }
+ pid_t processIdentifier() const;
- WebPageGroup& pageGroup() { return m_pageGroup.get(); }
+ WebPreferences& preferences() { return m_preferences; }
+ void setPreferences(WebPreferences&);
- bool isValid() const;
-
- PassRefPtr<API::Array> relatedPages() const;
+ WebPageGroup& pageGroup() { return m_pageGroup; }
- const String& urlAtProcessExit() const { return m_urlAtProcessExit; }
- FrameLoadState::State loadStateAtProcessExit() const { return m_loadStateAtProcessExit; }
+ bool isValid() const;
#if ENABLE(DRAG_SUPPORT)
- WebCore::DragSession dragSession() const { return m_currentDragSession; }
- void resetDragOperation() { m_currentDragSession = WebCore::DragSession(); }
+ WebCore::DragOperation currentDragOperation() const { return m_currentDragOperation; }
+ bool currentDragIsOverFileInput() const { return m_currentDragIsOverFileInput; }
+ unsigned currentDragNumberOfFilesToBeAccepted() const { return m_currentDragNumberOfFilesToBeAccepted; }
+ void resetCurrentDragInformation()
+ {
+ m_currentDragOperation = WebCore::DragOperationNone;
+ m_currentDragIsOverFileInput = false;
+ m_currentDragNumberOfFilesToBeAccepted = 0;
+ }
#endif
void preferencesDidChange();
@@ -739,21 +897,19 @@ public:
#if ENABLE(CONTEXT_MENUS)
// Called by the WebContextMenuProxy.
void contextMenuItemSelected(const WebContextMenuItemData&);
+ void handleContextMenuKeyEvent();
#endif
// Called by the WebOpenPanelResultListenerProxy.
+#if PLATFORM(IOS)
+ void didChooseFilesForOpenPanelWithDisplayStringAndIcon(const Vector<String>&, const String& displayString, const API::Data* iconData);
+#endif
void didChooseFilesForOpenPanel(const Vector<String>&);
void didCancelForOpenPanel();
WebPageCreationParameters creationParameters();
-#if USE(COORDINATED_GRAPHICS)
- void findZoomableAreaForPoint(const WebCore::IntPoint&, const WebCore::IntSize&);
-#endif
-
-#if PLATFORM(EFL) || PLATFORM(GTK)
void handleDownloadRequest(DownloadProxy*);
-#endif
void advanceToNextMisspelling(bool startBeforeSelection);
void changeSpellingToWord(const String& word);
@@ -763,7 +919,7 @@ public:
void capitalizeWord();
#endif
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
bool isSmartInsertDeleteEnabled() const { return m_isSmartInsertDeleteEnabled; }
void setSmartInsertDeleteEnabled(bool);
#endif
@@ -778,22 +934,26 @@ public:
void beginPrinting(WebFrameProxy*, const PrintInfo&);
void endPrinting();
void computePagesForPrinting(WebFrameProxy*, const PrintInfo&, PassRefPtr<ComputedPagesCallback>);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
void drawRectToImage(WebFrameProxy*, const PrintInfo&, const WebCore::IntRect&, const WebCore::IntSize&, PassRefPtr<ImageCallback>);
void drawPagesToPDF(WebFrameProxy*, const PrintInfo&, uint32_t first, uint32_t count, PassRefPtr<DataCallback>);
+#if PLATFORM(IOS)
+ uint32_t computePagesForPrintingAndDrawToPDF(uint64_t frameID, const PrintInfo&, DrawToPDFCallback::CallbackFunction&&);
+ void drawToPDFCallback(const IPC::DataReference& pdfData, uint64_t callbackID);
+#endif
#elif PLATFORM(GTK)
void drawPagesForPrinting(WebFrameProxy*, const PrintInfo&, PassRefPtr<PrintFinishedCallback>);
#endif
PageLoadState& pageLoadState() { return m_pageLoadState; }
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
void handleAlternativeTextUIResult(const String& result);
#endif
void saveDataToFileInDownloadsFolder(const String& suggestedFilename, const String& mimeType, const String& originatingURLString, API::Data*);
void savePDFToFileInDownloadsFolder(const String& suggestedFilename, const String& originatingURLString, const IPC::DataReference&);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
void savePDFToTemporaryFolderAndOpenWithNativeApplicationRaw(const String& suggestedFilename, const String& originatingURLString, const uint8_t* data, unsigned long size, const String& pdfUUID);
void savePDFToTemporaryFolderAndOpenWithNativeApplication(const String& suggestedFilename, const String& originatingURLString, const IPC::DataReference&, const String& pdfUUID);
void openPDFFromTemporaryFolderWithNativeApplication(const String& pdfUUID);
@@ -803,28 +963,41 @@ public:
uint64_t renderTreeSize() const { return m_renderTreeSize; }
- void setShouldSendEventsSynchronously(bool sync) { m_shouldSendEventsSynchronously = sync; };
-
void printMainFrame();
void setMediaVolume(float);
+ void setMuted(WebCore::MediaProducer::MutedStateFlags);
void setMayStartMediaWhenInWindow(bool);
+ bool mayStartMediaWhenInWindow() const { return m_mayStartMediaWhenInWindow; }
+
+#if ENABLE(MEDIA_SESSION)
+ bool hasMediaSessionWithActiveMediaElements() const { return m_hasMediaSessionWithActiveMediaElements; }
+ void handleMediaEvent(WebCore::MediaEventType);
+ void setVolumeOfMediaElement(double, uint64_t);
+#endif
+
+#if ENABLE(POINTER_LOCK)
+ void didAllowPointerLock();
+ void didDenyPointerLock();
+#endif
// WebPopupMenuProxy::Client
- virtual NativeWebMouseEvent* currentlyProcessedMouseDownEvent();
+ NativeWebMouseEvent* currentlyProcessedMouseDownEvent() override;
-#if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
- void setAcceleratedCompositingWindowId(uint64_t nativeWindowId);
-#endif
-
- void setSuppressVisibilityUpdates(bool flag) { m_suppressVisibilityUpdates = flag; }
+ void setSuppressVisibilityUpdates(bool flag);
bool suppressVisibilityUpdates() { return m_suppressVisibilityUpdates; }
#if PLATFORM(IOS)
- void didFinishScrolling(const WebCore::FloatPoint& contentOffset);
- void didFinishZooming(float newScale);
+ void willStartUserTriggeredZooming();
+ void potentialTapAtPosition(const WebCore::FloatPoint&, uint64_t& requestID);
+ void commitPotentialTap();
+ void cancelPotentialTap();
void tapHighlightAtPosition(const WebCore::FloatPoint&, uint64_t& requestID);
+ void handleTap(const WebCore::FloatPoint&);
+
+ void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&);
+ void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&);
void blurAssistedNode();
#endif
@@ -842,109 +1015,277 @@ public:
bool autoSizingShouldExpandToViewHeight() const { return m_autoSizingShouldExpandToViewHeight; }
void setAutoSizingShouldExpandToViewHeight(bool);
- bool mainFrameInViewSourceMode() const { return m_mainFrameInViewSourceMode; }
- void setMainFrameInViewSourceMode(bool);
-
void didReceiveAuthenticationChallengeProxy(uint64_t frameID, PassRefPtr<AuthenticationChallengeProxy>);
int64_t spellDocumentTag();
void didFinishCheckingText(uint64_t requestID, const Vector<WebCore::TextCheckingResult>&);
void didCancelCheckingText(uint64_t requestID);
- void connectionWillOpen(IPC::Connection*);
- void connectionWillClose(IPC::Connection*);
+ void connectionWillOpen(IPC::Connection&);
+ void webProcessWillShutDown();
+
+ void processDidFinishLaunching();
void didSaveToPageCache();
void setScrollPinningBehavior(WebCore::ScrollPinningBehavior);
- WebCore::ScrollPinningBehavior scrollPinningBehavior() { return m_scrollPinningBehavior; }
+ WebCore::ScrollPinningBehavior scrollPinningBehavior() const { return m_scrollPinningBehavior; }
+
+ void setOverlayScrollbarStyle(std::optional<WebCore::ScrollbarOverlayStyle>);
+ std::optional<WebCore::ScrollbarOverlayStyle> overlayScrollbarStyle() const { return m_scrollbarOverlayStyle; }
bool shouldRecordNavigationSnapshots() const { return m_shouldRecordNavigationSnapshots; }
void setShouldRecordNavigationSnapshots(bool shouldRecordSnapshots) { m_shouldRecordNavigationSnapshots = shouldRecordSnapshots; }
- void recordNavigationSnapshot();
+ void recordAutomaticNavigationSnapshot();
+ void recordNavigationSnapshot(WebBackForwardListItem&);
+
+#if PLATFORM(COCOA)
+ PassRefPtr<ViewSnapshot> takeViewSnapshot();
+#endif
+
+#if ENABLE(SUBTLE_CRYPTO)
+ void wrapCryptoKey(const Vector<uint8_t>&, bool& succeeded, Vector<uint8_t>&);
+ void unwrapCryptoKey(const Vector<uint8_t>&, bool& succeeded, Vector<uint8_t>&);
+#endif
+
+ void takeSnapshot(WebCore::IntRect, WebCore::IntSize bitmapSize, SnapshotOptions, std::function<void (const ShareableBitmap::Handle&, CallbackBase::Error)>);
+
+ void navigationGestureDidBegin();
+ void navigationGestureWillEnd(bool willNavigate, WebBackForwardListItem&);
+ void navigationGestureDidEnd(bool willNavigate, WebBackForwardListItem&);
+ void navigationGestureDidEnd();
+ void navigationGestureSnapshotWasRemoved();
+ void willRecordNavigationSnapshot(WebBackForwardListItem&);
+
+ bool isShowingNavigationGestureSnapshot() const { return m_isShowingNavigationGestureSnapshot; }
+
+ bool isPlayingAudio() const { return !!(m_mediaState & WebCore::MediaProducer::IsPlayingAudio); }
+ void isPlayingMediaDidChange(WebCore::MediaProducer::MediaStateFlags, uint64_t);
+ bool hasActiveAudioStream() const { return m_mediaState & WebCore::MediaProducer::HasActiveAudioCaptureDevice; }
+ bool hasActiveVideoStream() const { return m_mediaState & WebCore::MediaProducer::HasActiveVideoCaptureDevice; }
+ WebCore::MediaProducer::MediaStateFlags mediaStateFlags() const { return m_mediaState; }
+ void didPlayMediaPreventedFromPlayingWithoutUserGesture();
#if PLATFORM(MAC)
- RetainPtr<CGImageRef> takeViewSnapshot();
+ void videoControlsManagerDidChange();
+ bool hasActiveVideoForControlsManager() const;
+ void requestControlledElementID() const;
+ void handleControlledElementIDResponse(const String&) const;
+ bool isPlayingVideoInEnhancedFullscreen() const;
#endif
+#if PLATFORM(COCOA)
+ void requestActiveNowPlayingSessionInfo();
+ void handleActiveNowPlayingSessionInfoResponse(bool hasActiveSession, const String& title, double duration, double elapsedTime) const;
+#endif
+
+#if ENABLE(MEDIA_SESSION)
+ void hasMediaSessionWithActiveMediaElementsDidChange(bool);
+ void mediaSessionMetadataDidChange(const WebCore::MediaSessionMetadata&);
+ void focusedContentMediaElementDidChange(uint64_t);
+#endif
+
+#if PLATFORM(MAC)
+ void removeNavigationGestureSnapshot();
+
+ API::HitTestResult* lastMouseMoveHitTestResult() const { return m_lastMouseMoveHitTestResult.get(); }
+ void performImmediateActionHitTestAtLocation(WebCore::FloatPoint);
+
+ void immediateActionDidUpdate();
+ void immediateActionDidCancel();
+ void immediateActionDidComplete();
+
+ void* immediateActionAnimationControllerForHitTestResult(RefPtr<API::HitTestResult>, uint64_t, RefPtr<API::Object>);
+
+ void installActivityStateChangeCompletionHandler(void(^completionHandler)());
+
+ void handleAcceptedCandidate(WebCore::TextCheckingResult);
+ void didHandleAcceptedCandidate();
+
+ void setHeaderBannerHeightForTesting(int);
+ void setFooterBannerHeightForTesting(int);
+#endif
+
+#if USE(UNIFIED_TEXT_CHECKING)
+ void checkTextOfParagraph(const String& text, uint64_t checkingTypes, int32_t insertionPoint, Vector<WebCore::TextCheckingResult>& results);
+#endif
+ void getGuessesForWord(const String& word, const String& context, int32_t insertionPoint, Vector<String>& guesses);
+
+ void setShouldDispatchFakeMouseMoveEvents(bool);
+
+ // Diagnostic messages logging.
+ void logDiagnosticMessage(const String& message, const String& description, WebCore::ShouldSample);
+ void logDiagnosticMessageWithResult(const String& message, const String& description, uint32_t result, WebCore::ShouldSample);
+ void logDiagnosticMessageWithValue(const String& message, const String& description, double value, unsigned significantFigures, WebCore::ShouldSample);
+ void logDiagnosticMessageWithEnhancedPrivacy(const String& message, const String& description, WebCore::ShouldSample);
+
+ // Form validation messages.
+ void showValidationMessage(const WebCore::IntRect& anchorClientRect, const String& message);
+ void hideValidationMessage();
+#if PLATFORM(COCOA)
+ WebCore::ValidationBubble* validationBubble() const { return m_validationBubble.get(); } // For testing.
+#endif
+
+#if PLATFORM(IOS)
+ void setIsKeyboardAnimatingIn(bool isKeyboardAnimatingIn) { m_isKeyboardAnimatingIn = isKeyboardAnimatingIn; }
+#endif
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+ void addPlaybackTargetPickerClient(uint64_t);
+ void removePlaybackTargetPickerClient(uint64_t);
+ void showPlaybackTargetPicker(uint64_t, const WebCore::FloatRect&, bool hasVideo);
+ void playbackTargetPickerClientStateDidChange(uint64_t, WebCore::MediaProducer::MediaStateFlags);
+ void setMockMediaPlaybackTargetPickerEnabled(bool);
+ void setMockMediaPlaybackTargetPickerState(const String&, WebCore::MediaPlaybackTargetContext::State);
+
+ // WebMediaSessionManagerClient
+ void setPlaybackTarget(uint64_t, Ref<WebCore::MediaPlaybackTarget>&&) override;
+ void externalOutputDeviceAvailableDidChange(uint64_t, bool) override;
+ void setShouldPlayToPlaybackTarget(uint64_t, bool) override;
+#endif
+
+ void didChangeBackgroundColor();
+ void didLayoutForCustomContentProvider();
+
+ // For testing
+ void clearWheelEventTestTrigger();
+ void callAfterNextPresentationUpdate(std::function<void (CallbackBase::Error)>);
+
+ void didReachLayoutMilestone(uint32_t layoutMilestones);
+
+ void didRestoreScrollPosition();
+
+ void getLoadDecisionForIcon(const WebCore::LinkIcon&, uint64_t callbackID);
+ void finishedLoadingIcon(uint64_t callbackIdentifier, const IPC::DataReference&);
+
+ void setFocus(bool focused);
+ void setWindowFrame(const WebCore::FloatRect&);
+ void getWindowFrame(WebCore::FloatRect&);
+
+ bool isResourceCachingDisabled() const { return m_isResourceCachingDisabled; }
+ void setResourceCachingDisabled(bool);
+
+ WebCore::UserInterfaceLayoutDirection userInterfaceLayoutDirection();
+ void setUserInterfaceLayoutDirection(WebCore::UserInterfaceLayoutDirection);
+
+ bool hasHadSelectionChangesFromUserInteraction() const { return m_hasHadSelectionChangesFromUserInteraction; }
+ bool needsHiddenContentEditableQuirk() const { return m_needsHiddenContentEditableQuirk; }
+ bool needsPlainTextQuirk() const { return m_needsPlainTextQuirk; }
+
+ bool isAlwaysOnLoggingAllowed() const;
+
+ void canAuthenticateAgainstProtectionSpace(uint64_t loaderID, uint64_t frameID, const WebCore::ProtectionSpace&);
+
+#if ENABLE(GAMEPAD)
+ void gamepadActivity(const Vector<GamepadData>&, bool shouldMakeGamepadsVisible);
+#endif
+
+ WeakPtr<WebPageProxy> createWeakPtr() const { return m_weakPtrFactory.createWeakPtr(); }
+
+ void isLoadingChanged() { activityStateDidChange(WebCore::ActivityState::IsLoading); }
+
+ void clearUserMediaState();
+
+ void setShouldSkipWaitingForPaintAfterNextViewDidMoveToWindow(bool shouldSkip) { m_shouldSkipWaitingForPaintAfterNextViewDidMoveToWindow = shouldSkip; }
+
private:
- WebPageProxy(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
+ WebPageProxy(PageClient&, WebProcessProxy&, uint64_t pageID, Ref<API::PageConfiguration>&&);
void platformInitialize();
- void updateViewState(WebCore::ViewState::Flags flagsToUpdate = WebCore::ViewState::AllFlags);
+ void updateActivityState(WebCore::ActivityState::Flags flagsToUpdate = WebCore::ActivityState::AllFlags);
+ void updateThrottleState();
+ void updateHiddenPageThrottlingAutoIncreases();
- void resetState();
+ enum class ResetStateReason {
+ PageInvalidated,
+ WebProcessExited,
+ };
+ void resetState(ResetStateReason);
void resetStateAfterProcessExited();
void setUserAgent(const String&);
// IPC::MessageReceiver
- virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) override;
- virtual void didReceiveSyncMessage(IPC::Connection*, IPC::MessageDecoder&, std::unique_ptr<IPC::MessageEncoder>&) override;
+ // Implemented in generated WebPageProxyMessageReceiver.cpp
+ void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
+ void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) override;
+
// IPC::MessageSender
- virtual bool sendMessage(std::unique_ptr<IPC::MessageEncoder>, unsigned messageSendFlags) override;
- virtual IPC::Connection* messageSenderConnection() override;
- virtual uint64_t messageSenderDestinationID() override;
+ bool sendMessage(std::unique_ptr<IPC::Encoder>, OptionSet<IPC::SendOption>) override;
+ IPC::Connection* messageSenderConnection() override;
+ uint64_t messageSenderDestinationID() override;
// WebPopupMenuProxy::Client
- virtual void valueChangedForPopupMenu(WebPopupMenuProxy*, int32_t newSelectedIndex);
- virtual void setTextFromItemForPopupMenu(WebPopupMenuProxy*, int32_t index);
+ void valueChangedForPopupMenu(WebPopupMenuProxy*, int32_t newSelectedIndex) override;
+ void setTextFromItemForPopupMenu(WebPopupMenuProxy*, int32_t index) override;
#if PLATFORM(GTK)
- virtual void failedToShowPopupMenu();
+ void failedToShowPopupMenu() override;
#endif
- // Implemented in generated WebPageProxyMessageReceiver.cpp
- void didReceiveWebPageProxyMessage(IPC::Connection*, IPC::MessageDecoder&);
- void didReceiveSyncWebPageProxyMessage(IPC::Connection*, IPC::MessageDecoder&, std::unique_ptr<IPC::MessageEncoder>&);
+#if ENABLE(POINTER_LOCK)
+ void requestPointerLock();
+ void requestPointerUnlock();
+#endif
void didCreateMainFrame(uint64_t frameID);
void didCreateSubframe(uint64_t frameID);
- void didStartProvisionalLoadForFrame(uint64_t frameID, const String& url, const String& unreachableURL, IPC::MessageDecoder&);
- void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String&, IPC::MessageDecoder&);
- void didFailProvisionalLoadForFrame(uint64_t frameID, const WebCore::ResourceError&, IPC::MessageDecoder&);
- void didCommitLoadForFrame(uint64_t frameID, const String& mimeType, uint32_t frameLoadType, const WebCore::CertificateInfo&, IPC::MessageDecoder&);
- void didFinishDocumentLoadForFrame(uint64_t frameID, IPC::MessageDecoder&);
- void didFinishLoadForFrame(uint64_t frameID, IPC::MessageDecoder&);
- void didFailLoadForFrame(uint64_t frameID, const WebCore::ResourceError&, IPC::MessageDecoder&);
- void didSameDocumentNavigationForFrame(uint64_t frameID, uint32_t sameDocumentNavigationType, const String&, IPC::MessageDecoder&);
- void didReceiveTitleForFrame(uint64_t frameID, const String&, IPC::MessageDecoder&);
- void didFirstLayoutForFrame(uint64_t frameID, IPC::MessageDecoder&);
- void didFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, IPC::MessageDecoder&);
- void didLayout(uint32_t layoutMilestones, IPC::MessageDecoder&);
- void didRemoveFrameFromHierarchy(uint64_t frameID, IPC::MessageDecoder&);
- void didDisplayInsecureContentForFrame(uint64_t frameID, IPC::MessageDecoder&);
- void didRunInsecureContentForFrame(uint64_t frameID, IPC::MessageDecoder&);
- void didDetectXSSForFrame(uint64_t frameID, IPC::MessageDecoder&);
+ void didStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& url, const String& unreachableURL, const UserData&);
+ void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&, const UserData&);
+ void didChangeProvisionalURLForFrame(uint64_t frameID, uint64_t navigationID, const String& url);
+ void didFailProvisionalLoadForFrame(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const String& provisionalURL, const WebCore::ResourceError&, const UserData&);
+ void didCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& mimeType, bool frameHasCustomContentProvider, uint32_t frameLoadType, const WebCore::CertificateInfo&, bool containsPluginDocument, std::optional<WebCore::HasInsecureContent> forcedHasInsecureContent, const UserData&);
+ void didFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&);
+ void didFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&);
+ void didFailLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, const UserData&);
+ void didSameDocumentNavigationForFrame(uint64_t frameID, uint64_t navigationID, uint32_t sameDocumentNavigationType, const String&, const UserData&);
+ void didReceiveTitleForFrame(uint64_t frameID, const String&, const UserData&);
+ void didFirstLayoutForFrame(uint64_t frameID, const UserData&);
+ void didFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, const UserData&);
+ void didDisplayInsecureContentForFrame(uint64_t frameID, const UserData&);
+ void didRunInsecureContentForFrame(uint64_t frameID, const UserData&);
+ void didDetectXSSForFrame(uint64_t frameID, const UserData&);
+ void mainFramePluginHandlesPageScaleGestureDidChange(bool);
void frameDidBecomeFrameSet(uint64_t frameID, bool);
void didStartProgress();
void didChangeProgress(double);
void didFinishProgress();
+ void setNetworkRequestsInProgress(bool);
+
+ void hasInsecureContent(WebCore::HasInsecureContent&);
+
+ void didDestroyNavigation(uint64_t navigationID);
+
+ void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const NavigationActionData&, uint64_t originatingFrameID, const WebCore::SecurityOriginData& originatingFrameSecurityOrigin, const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceRequest&, uint64_t listenerID, const UserData&, bool& receivedPolicyAction, uint64_t& newNavigationID, uint64_t& policyAction, DownloadID&, WebsitePolicies&);
+ void decidePolicyForNewWindowAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, const NavigationActionData&, const WebCore::ResourceRequest&, const String& frameName, uint64_t listenerID, const UserData&);
+ void decidePolicyForResponse(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&);
+ void decidePolicyForResponseSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&, bool& receivedPolicyAction, uint64_t& policyAction, DownloadID&);
+ void unableToImplementPolicy(uint64_t frameID, const WebCore::ResourceError&, const UserData&);
- void decidePolicyForNavigationAction(uint64_t frameID, const NavigationActionData&, uint64_t originatingFrameID, const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceRequest&, uint64_t listenerID, IPC::MessageDecoder&, bool& receivedPolicyAction, uint64_t& policyAction, uint64_t& downloadID);
- void decidePolicyForNewWindowAction(uint64_t frameID, const NavigationActionData&, const WebCore::ResourceRequest&, const String& frameName, uint64_t listenerID, IPC::MessageDecoder&);
- void decidePolicyForResponse(uint64_t frameID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, IPC::MessageDecoder&);
- void decidePolicyForResponseSync(uint64_t frameID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, IPC::MessageDecoder&, bool& receivedPolicyAction, uint64_t& policyAction, uint64_t& downloadID);
- void unableToImplementPolicy(uint64_t frameID, const WebCore::ResourceError&, IPC::MessageDecoder&);
+ void willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const Vector<std::pair<String, String>>& textFieldValues, uint64_t listenerID, const UserData&);
- void willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const Vector<std::pair<String, String>>& textFieldValues, uint64_t listenerID, IPC::MessageDecoder&);
+ // History client
+ void didNavigateWithNavigationData(const WebNavigationDataStore&, uint64_t frameID);
+ void didPerformClientRedirect(const String& sourceURLString, const String& destinationURLString, uint64_t frameID);
+ void didPerformServerRedirect(const String& sourceURLString, const String& destinationURLString, uint64_t frameID);
+ void didUpdateHistoryTitle(const String& title, const String& url, uint64_t frameID);
// UI client
- void createNewPage(const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, uint32_t modifiers, int32_t mouseButton, uint64_t& newPageID, WebPageCreationParameters&);
+ void createNewPage(uint64_t frameID, const WebCore::SecurityOriginData&, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const NavigationActionData&, uint64_t& newPageID, WebPageCreationParameters&);
void showPage();
- void closePage(bool stopResponsivenessTimer);
- void runJavaScriptAlert(uint64_t frameID, const String&);
- void runJavaScriptConfirm(uint64_t frameID, const String&, bool& result);
- void runJavaScriptPrompt(uint64_t frameID, const String&, const String&, String& result);
- void shouldInterruptJavaScript(bool& result);
+ void runJavaScriptAlert(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Ref<Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply>&&);
+ void runJavaScriptConfirm(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Ref<Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply>&&);
+ void runJavaScriptPrompt(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, const String&, RefPtr<Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply>);
void setStatusText(const String&);
- void mouseDidMoveOverElement(const WebHitTestResult::Data& hitTestResultData, uint32_t modifiers, IPC::MessageDecoder&);
+ void mouseDidMoveOverElement(const WebHitTestResultData&, uint32_t modifiers, const UserData&);
+
#if ENABLE(NETSCAPE_PLUGIN_API)
void unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginsPageURLString, const String& frameURLString, const String& pageURLString);
#endif // ENABLE(NETSCAPE_PLUGIN_API)
#if ENABLE(WEBGL)
void webGLPolicyForURL(const String& url, uint32_t& loadPolicy);
+ void resolveWebGLPolicyForURL(const String& url, uint32_t& loadPolicy);
#endif // ENABLE(WEBGL)
void setToolbarsAreVisible(bool toolbarsAreVisible);
void getToolbarsAreVisible(bool& toolbarsAreVisible);
@@ -954,23 +1295,34 @@ private:
void getStatusBarIsVisible(bool& statusBarIsVisible);
void setIsResizable(bool isResizable);
void getIsResizable(bool& isResizable);
- void setWindowFrame(const WebCore::FloatRect&);
- void getWindowFrame(WebCore::FloatRect&);
- void screenToWindow(const WebCore::IntPoint& screenPoint, WebCore::IntPoint& windowPoint);
- void windowToScreen(const WebCore::IntRect& viewRect, WebCore::IntRect& result);
- void runBeforeUnloadConfirmPanel(const String& message, uint64_t frameID, bool& shouldClose);
+ void screenToRootView(const WebCore::IntPoint& screenPoint, WebCore::IntPoint& windowPoint);
+ void rootViewToScreen(const WebCore::IntRect& viewRect, WebCore::IntRect& result);
+#if PLATFORM(IOS)
+ void accessibilityScreenToRootView(const WebCore::IntPoint& screenPoint, WebCore::IntPoint& windowPoint);
+ void rootViewToAccessibilityScreen(const WebCore::IntRect& viewRect, WebCore::IntRect& result);
+#endif
+ void runBeforeUnloadConfirmPanel(const String& message, uint64_t frameID, RefPtr<Messages::WebPageProxy::RunBeforeUnloadConfirmPanel::DelayedReply>);
void didChangeViewportProperties(const WebCore::ViewportAttributes&);
void pageDidScroll();
- void runOpenPanel(uint64_t frameID, const WebCore::FileChooserSettings&);
+ void runOpenPanel(uint64_t frameID, const WebCore::SecurityOriginData&, const WebCore::FileChooserSettings&);
void printFrame(uint64_t frameID);
void exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, PassRefPtr<Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply>);
+ void reachedApplicationCacheOriginQuota(const String& originIdentifier, uint64_t currentQuota, uint64_t totalBytesNeeded, PassRefPtr<Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::DelayedReply>);
void requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier);
+
+#if ENABLE(MEDIA_STREAM)
+ UserMediaPermissionRequestManagerProxy& userMediaPermissionRequestManager();
+#endif
+ void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String userMediaDocumentOriginIdentifier, String topLevelDocumentOriginIdentifier, const WebCore::MediaConstraintsData& audioConstraints, const WebCore::MediaConstraintsData& videoConstraints);
+ void enumerateMediaDevicesForFrame(uint64_t userMediaID, uint64_t frameID, String userMediaDocumentOriginIdentifier, String topLevelDocumentOriginIdentifier);
+
void runModal();
void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&);
void recommendedScrollbarStyleDidChange(int32_t newStyle);
void didChangeScrollbarsForMainFrame(bool hasHorizontalScrollbar, bool hasVerticalScrollbar);
void didChangeScrollOffsetPinningForMainFrame(bool pinnedToLeftSide, bool pinnedToRightSide, bool pinnedToTopSide, bool pinnedToBottomSide);
void didChangePageCount(unsigned);
+ void pageExtendedBackgroundColorDidChange(const WebCore::Color&);
#if ENABLE(NETSCAPE_PLUGIN_API)
void didFailToInitializePlugin(const String& mimeType, const String& frameURLString, const String& pageURLString);
void didBlockInsecurePluginVersion(const String& mimeType, const String& pluginURLString, const String& frameURLString, const String& pageURLString, bool replacementObscured);
@@ -978,7 +1330,8 @@ private:
void setCanShortCircuitHorizontalWheelEvents(bool canShortCircuitHorizontalWheelEvents) { m_canShortCircuitHorizontalWheelEvents = canShortCircuitHorizontalWheelEvents; }
void reattachToWebProcess();
- void reattachToWebProcessWithItem(WebBackForwardListItem*);
+ RefPtr<API::Navigation> reattachToWebProcessForReload();
+ RefPtr<API::Navigation> reattachToWebProcessWithItem(WebBackForwardListItem*);
void requestNotificationPermission(uint64_t notificationID, const String& originString);
void showNotification(const String& title, const String& body, const String& iconURL, const String& tag, const String& lang, const String& dir, const String& originString, uint64_t notificationID);
@@ -986,28 +1339,19 @@ private:
void clearNotifications(const Vector<uint64_t>& notificationIDs);
void didDestroyNotification(uint64_t notificationID);
-#if USE(TILED_BACKING_STORE)
- void pageDidRequestScroll(const WebCore::IntPoint&);
- void pageTransitionViewportReady();
-#endif
-#if USE(COORDINATED_GRAPHICS)
- void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&);
-#endif
-#if PLATFORM(EFL) || PLATFORM(IOS)
void didChangeContentSize(const WebCore::IntSize&);
-#endif
-
-#if ENABLE(TOUCH_EVENTS)
- void needTouchEvents(bool);
-#endif
#if ENABLE(INPUT_TYPE_COLOR)
void showColorPicker(const WebCore::Color& initialColor, const WebCore::IntRect&);
- void didChooseColor(const WebCore::Color&);
- void didEndColorPicker();
+ void didChooseColor(const WebCore::Color&) override;
+ void didEndColorPicker() override;
#endif
void editorStateChanged(const EditorState&);
+ void compositionWasCanceled();
+ void setHasHadSelectionChangesFromUserInteraction(bool);
+ void setNeedsHiddenContentEditableQuirk(bool);
+ void setNeedsPlainTextQuirk(bool);
// Back/Forward list management
void backForwardAddItem(uint64_t itemID);
@@ -1019,13 +1363,13 @@ private:
// Undo management
void registerEditCommandForUndo(uint64_t commandID, uint32_t editAction);
+ void registerInsertionUndoGrouping();
void clearAllEditCommands();
void canUndoRedo(uint32_t action, bool& result);
void executeUndoRedo(uint32_t action, bool& result);
// Keyboard handling
-#if PLATFORM(MAC)
- void interpretQueuedKeyEvent(const EditorState&, bool& handled, Vector<WebCore::KeypressCommand>&);
+#if PLATFORM(COCOA)
void executeSavedCommandBySelector(const String& selector, bool& handled);
#endif
@@ -1033,25 +1377,27 @@ private:
void getEditorCommandsForKeyEvent(const AtomicString&, Vector<String>&);
void bindAccessibilityTree(const String&);
#endif
-#if PLATFORM(EFL)
- void getEditorCommandsForKeyEvent(Vector<String>&);
-#endif
// Popup Menu.
void showPopupMenu(const WebCore::IntRect& rect, uint64_t textDirection, const Vector<WebPopupItem>& items, int32_t selectedIndex, const PlatformPopupMenuData&);
void hidePopupMenu();
#if ENABLE(CONTEXT_MENUS)
- // Context Menu.
- void showContextMenu(const WebCore::IntPoint& menuLocation, const WebHitTestResult::Data&, const Vector<WebContextMenuItemData>&, IPC::MessageDecoder&);
- void internalShowContextMenu(const WebCore::IntPoint& menuLocation, const WebHitTestResult::Data&, const Vector<WebContextMenuItemData>&, IPC::MessageDecoder&);
+ void showContextMenu(const ContextMenuContextData&, const UserData&);
+ void internalShowContextMenu(const ContextMenuContextData&, const UserData&);
+#endif
+
+#if ENABLE(TELEPHONE_NUMBER_DETECTION)
+#if PLATFORM(MAC)
+ void showTelephoneNumberMenu(const String& telephoneNumber, const WebCore::IntPoint&);
+#endif
#endif
// Search popup results
- void saveRecentSearches(const String&, const Vector<String>&);
- void loadRecentSearches(const String&, Vector<String>&);
+ void saveRecentSearches(const String&, const Vector<WebCore::RecentSearch>&);
+ void loadRecentSearches(const String&, Vector<WebCore::RecentSearch>&);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
// Speech.
void getIsSpeaking(bool&);
void speak(const String&);
@@ -1063,24 +1409,23 @@ private:
void searchTheWeb(const String&);
// Dictionary.
- void didPerformDictionaryLookup(const AttributedString&, const DictionaryPopupInfo&);
+ void didPerformDictionaryLookup(const WebCore::DictionaryPopupInfo&);
#endif
- // Spelling and grammar.
-#if USE(UNIFIED_TEXT_CHECKING)
- void checkTextOfParagraph(const String& text, uint64_t checkingTypes, Vector<WebCore::TextCheckingResult>& results);
+#if PLATFORM(MAC)
+ bool appleMailPaginationQuirkEnabled();
#endif
+
+ // Spelling and grammar.
void checkSpellingOfString(const String& text, int32_t& misspellingLocation, int32_t& misspellingLength);
void checkGrammarOfString(const String& text, Vector<WebCore::GrammarDetail>&, int32_t& badGrammarLocation, int32_t& badGrammarLength);
void spellingUIIsShowing(bool&);
void updateSpellingUIWithMisspelledWord(const String& misspelledWord);
void updateSpellingUIWithGrammarString(const String& badGrammarPhrase, const WebCore::GrammarDetail&);
- void getGuessesForWord(const String& word, const String& context, Vector<String>& guesses);
void learnWord(const String& word);
void ignoreWord(const String& word);
- void requestCheckingOfString(uint64_t requestID, const WebCore::TextCheckingRequestData&);
+ void requestCheckingOfString(uint64_t requestID, const WebCore::TextCheckingRequestData&, int32_t insertionPoint);
- void setFocus(bool focused);
void takeFocus(uint32_t direction);
void setToolTip(const String&);
void setCursor(const WebCore::Cursor&);
@@ -1093,15 +1438,29 @@ private:
void dataCallback(const IPC::DataReference&, uint64_t);
void imageCallback(const ShareableBitmap::Handle&, uint64_t);
void stringCallback(const String&, uint64_t);
- void scriptValueCallback(const IPC::DataReference&, uint64_t);
+ void invalidateStringCallback(uint64_t);
+ void scriptValueCallback(const IPC::DataReference&, bool hadException, const WebCore::ExceptionDetails&, uint64_t);
void computedPagesCallback(const Vector<WebCore::IntRect>&, double totalScaleFactorForPrinting, uint64_t);
void validateCommandCallback(const String&, bool, int, uint64_t);
+ void unsignedCallback(uint64_t, uint64_t);
+ void editingRangeCallback(const EditingRange&, uint64_t);
+#if PLATFORM(COCOA)
+ void machSendRightCallback(const WebCore::MachSendRight&, uint64_t);
+#endif
+ void rectForCharacterRangeCallback(const WebCore::IntRect&, const EditingRange&, uint64_t);
+#if PLATFORM(MAC)
+ void attributedStringForCharacterRangeCallback(const AttributedString&, const EditingRange&, uint64_t);
+ void fontAtSelectionCallback(const String&, double, bool, uint64_t);
+#endif
#if PLATFORM(IOS)
void gestureCallback(const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t, uint64_t);
- void touchesCallback(const WebCore::IntPoint&, uint32_t, uint64_t);
+ void touchesCallback(const WebCore::IntPoint&, uint32_t, uint32_t, uint64_t);
void autocorrectionDataCallback(const Vector<WebCore::FloatRect>&, const String&, float, uint64_t, uint64_t);
void autocorrectionContextCallback(const String&, const String&, const String&, const String&, uint64_t, uint64_t, uint64_t);
+ void selectionContextCallback(const String&, const String&, const String&, uint64_t);
void interpretKeyEvent(const EditorState&, bool isCharEvent, bool& handled);
+ void showPlaybackTargetPicker(bool hasVideo, const WebCore::IntRect& elementRect);
+ void selectionRectsCallback(const Vector<WebCore::SelectionRect>&, uint64_t);
#endif
#if PLATFORM(GTK)
void printFinishedCallback(const WebCore::ResourceError&, uint64_t);
@@ -1110,17 +1469,26 @@ private:
void focusedFrameChanged(uint64_t frameID);
void frameSetLargestFrameChanged(uint64_t frameID);
- void canAuthenticateAgainstProtectionSpaceInFrame(uint64_t frameID, const WebCore::ProtectionSpace&, bool& canAuthenticate);
void didReceiveAuthenticationChallenge(uint64_t frameID, const WebCore::AuthenticationChallenge&, uint64_t challengeID);
-#if PLATFORM(MAC)
+ void didFinishLoadingDataForCustomContentProvider(const String& suggestedFilename, const IPC::DataReference&);
+
+#if PLATFORM(COCOA)
void pluginFocusOrWindowFocusChanged(uint64_t pluginComplexTextInputIdentifier, bool pluginHasFocusAndWindowHasFocus);
void setPluginComplexTextInputState(uint64_t pluginComplexTextInputIdentifier, uint64_t complexTextInputState);
#endif
bool maybeInitializeSandboxExtensionHandle(const WebCore::URL&, SandboxExtension::Handle&);
-#if PLATFORM(MAC) && !PLATFORM(IOS)
+#if USE(AUTOMATIC_TEXT_REPLACEMENT)
+ void toggleSmartInsertDelete();
+ void toggleAutomaticQuoteSubstitution();
+ void toggleAutomaticLinkDetection();
+ void toggleAutomaticDashSubstitution();
+ void toggleAutomaticTextReplacement();
+#endif
+
+#if PLATFORM(MAC)
void substitutionsPanelIsShowing(bool&);
void showCorrectionPanel(int32_t panelType, const WebCore::FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings);
void dismissCorrectionPanel(int32_t reason);
@@ -1132,22 +1500,37 @@ private:
void removeDictationAlternatives(uint64_t dictationContext);
void dictationAlternatives(uint64_t dictationContext, Vector<String>& result);
#endif
-#endif // PLATFORM(MAC) && !PLATFORM(IOS)
+
+ void setEditableElementIsFocused(bool);
+#endif // PLATFORM(MAC)
#if PLATFORM(IOS)
- void mainDocumentDidReceiveMobileDocType();
+ WebCore::FloatSize screenSize();
+ WebCore::FloatSize availableScreenSize();
+ float textAutosizingWidth();
- void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& geometries, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius);
+ void dynamicViewportUpdateChangedTarget(double newTargetScale, const WebCore::FloatPoint& newScrollPosition, uint64_t dynamicViewportSizeUpdateID);
+ void couldNotRestorePageState();
+ void restorePageState(const WebCore::FloatPoint& scrollPosition, const WebCore::FloatPoint& scrollOrigin, const WebCore::FloatSize& obscuredInsetOnSave, double scale);
+ void restorePageCenterAndScale(const WebCore::FloatPoint&, double scale);
- void didChangeViewportArguments(const WebCore::ViewportArguments& viewportArguments);
+ void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& geometries, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius);
- void startAssistingNode(const WebCore::IntRect&, bool hasNextFocusable, bool hasPreviousFocusable);
+ void startAssistingNode(const AssistedNodeInformation&, bool userIsInteracting, bool blurPreviousNode, const UserData&);
void stopAssistingNode();
- void notifyRevealedSelection();
+
+ void showInspectorHighlight(const WebCore::Highlight&);
+ void hideInspectorHighlight();
+
+ void showInspectorIndication();
+ void hideInspectorIndication();
+
+ void enableInspectorNodeSearch();
+ void disableInspectorNodeSearch();
#endif // PLATFORM(IOS)
-#if USE(SOUP) && !ENABLE(CUSTOM_PROTOCOLS)
- void didReceiveURIRequest(String uriString, uint64_t requestID);
+#if ENABLE(DATA_DETECTION)
+ RetainPtr<NSArray> m_dataDetectionResults;
#endif
void clearLoadDependentCallbacks();
@@ -1167,23 +1550,76 @@ private:
void processNextQueuedWheelEvent();
void sendWheelEvent(const WebWheelEvent&);
+#if ENABLE(TOUCH_EVENTS)
+ void updateTouchEventTracking(const WebTouchEvent&);
+ WebCore::TrackingType touchEventTrackingType(const WebTouchEvent&) const;
+#endif
+
#if ENABLE(NETSCAPE_PLUGIN_API)
void findPlugin(const String& mimeType, uint32_t processType, const String& urlString, const String& frameURLString, const String& pageURLString, bool allowOnlyApplicationPlugins, uint64_t& pluginProcessToken, String& newMIMEType, uint32_t& pluginLoadPolicy, String& unavailabilityDescription);
#endif
+#if USE(QUICK_LOOK)
+ void didStartLoadForQuickLookDocumentInMainFrame(const String& fileName, const String& uti);
+ void didFinishLoadForQuickLookDocumentInMainFrame(const QuickLookDocumentData&);
+ void didRequestPasswordForQuickLookDocumentInMainFrame(const String& fileName);
+#endif
+
+#if ENABLE(CONTENT_FILTERING)
+ void contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler&, uint64_t frameID);
+#endif
+
+ uint64_t generateNavigationID();
+
+ WebPreferencesStore preferencesStore() const;
+
+ void dispatchActivityStateChange();
+ void viewDidLeaveWindow();
+ void viewDidEnterWindow();
+ void reloadAfterBeingKilledInBackground();
+
+#if PLATFORM(MAC)
+ void didPerformImmediateActionHitTest(const WebHitTestResultData&, bool contentPreventsDefault, const UserData&);
+#endif
+
+ void useFixedLayoutDidChange(bool useFixedLayout) { m_useFixedLayout = useFixedLayout; }
+ void fixedLayoutSizeDidChange(WebCore::IntSize fixedLayoutSize) { m_fixedLayoutSize = fixedLayoutSize; }
+
+ void imageOrMediaDocumentSizeChanged(const WebCore::IntSize&);
+#if ENABLE(VIDEO)
+#if USE(GSTREAMER)
+ void requestInstallMissingMediaPlugins(const String& details, const String& description);
+#endif
+#endif
+
+ void handleAutoFillButtonClick(const UserData&);
+
+ void finishInitializingWebPageAfterProcessLaunch();
+
+ void handleMessage(IPC::Connection&, const String& messageName, const UserData& messageBody);
+ void handleSynchronousMessage(IPC::Connection&, const String& messageName, const UserData& messageBody, UserData& returnUserData);
+
PageClient& m_pageClient;
+ Ref<API::PageConfiguration> m_configuration;
+
std::unique_ptr<API::LoaderClient> m_loaderClient;
std::unique_ptr<API::PolicyClient> m_policyClient;
- WebFormClient m_formClient;
- WebUIClient m_uiClient;
-#if PLATFORM(EFL)
- WebUIPopupMenuClient m_uiPopupMenuClient;
-#endif
- WebFindClient m_findClient;
- WebFindMatchesClient m_findMatchesClient;
+ std::unique_ptr<API::NavigationClient> m_navigationClient;
+ std::unique_ptr<API::HistoryClient> m_historyClient;
+ std::unique_ptr<API::IconLoadingClient> m_iconLoadingClient;
+ std::unique_ptr<API::FormClient> m_formClient;
+ std::unique_ptr<API::UIClient> m_uiClient;
+ std::unique_ptr<API::FindClient> m_findClient;
+ std::unique_ptr<API::FindMatchesClient> m_findMatchesClient;
+ std::unique_ptr<API::DiagnosticLoggingClient> m_diagnosticLoggingClient;
#if ENABLE(CONTEXT_MENUS)
- WebPageContextMenuClient m_contextMenuClient;
+ std::unique_ptr<API::ContextMenuClient> m_contextMenuClient;
#endif
+ std::unique_ptr<WebPageInjectedBundleClient> m_injectedBundleClient;
+
+ std::unique_ptr<WebNavigationState> m_navigationState;
+ String m_failingProvisionalLoadURL;
+ bool m_isLoadingAlternateHTMLStringForFailingProvisionalLoad { false };
std::unique_ptr<DrawingAreaProxy> m_drawingArea;
#if ENABLE(ASYNC_SCROLLING)
@@ -1192,6 +1628,14 @@ private:
Ref<WebProcessProxy> m_process;
Ref<WebPageGroup> m_pageGroup;
+ Ref<WebPreferences> m_preferences;
+
+ WebProcessLifetimeTracker m_webProcessLifetimeTracker { *this };
+
+ Ref<WebUserContentControllerProxy> m_userContentController;
+ Ref<VisitedLinkStore> m_visitedLinkStore;
+ Ref<WebsiteDataStore> m_websiteDataStore;
+
RefPtr<WebFrameProxy> m_mainFrame;
RefPtr<WebFrameProxy> m_focusedFrame;
RefPtr<WebFrameProxy> m_frameSetLargestFrame;
@@ -1200,91 +1644,117 @@ private:
String m_applicationNameForUserAgent;
String m_customUserAgent;
String m_customTextEncodingName;
+ String m_overrideContentSecurityPolicy;
+
+ bool m_treatsSHA1CertificatesAsInsecure;
-#if ENABLE(INSPECTOR)
RefPtr<WebInspectorProxy> m_inspector;
-#endif
#if ENABLE(FULLSCREEN_API)
RefPtr<WebFullScreenManagerProxy> m_fullScreenManager;
+ std::unique_ptr<API::FullscreenClient> m_fullscreenClient;
+#endif
+#if (PLATFORM(IOS) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))
+ RefPtr<WebPlaybackSessionManagerProxy> m_playbackSessionManager;
+ RefPtr<WebVideoFullscreenManagerProxy> m_videoFullscreenManager;
+#endif
+#if PLATFORM(IOS)
+ VisibleContentRectUpdateInfo m_lastVisibleContentRectUpdate;
+ bool m_hasReceivedLayerTreeTransactionAfterDidCommitLoad { true };
+ uint64_t m_firstLayerTreeTransactionIdAfterDidCommitLoad { 0 };
+ int32_t m_deviceOrientation { 0 };
+ bool m_dynamicViewportSizeUpdateWaitingForTarget { false };
+ bool m_dynamicViewportSizeUpdateWaitingForLayerTreeCommit { false };
+ uint64_t m_dynamicViewportSizeUpdateLayerTreeTransactionID { 0 };
+ uint64_t m_layerTreeTransactionIdAtLastTouchStart { 0 };
+ uint64_t m_currentDynamicViewportSizeUpdateID { 0 };
+ bool m_hasNetworkRequestsOnSuspended { false };
+ bool m_isKeyboardAnimatingIn { false };
+ bool m_isScrollingOrZooming { false };
#endif
#if ENABLE(VIBRATION)
RefPtr<WebVibrationProxy> m_vibration;
#endif
- HashMap<uint64_t, RefPtr<VoidCallback>> m_voidCallbacks;
- HashMap<uint64_t, RefPtr<DataCallback>> m_dataCallbacks;
- HashMap<uint64_t, RefPtr<ImageCallback>> m_imageCallbacks;
- HashMap<uint64_t, RefPtr<StringCallback>> m_stringCallbacks;
- HashSet<uint64_t> m_loadDependentStringCallbackIDs;
- HashMap<uint64_t, RefPtr<ScriptValueCallback>> m_scriptValueCallbacks;
- HashMap<uint64_t, RefPtr<ComputedPagesCallback>> m_computedPagesCallbacks;
- HashMap<uint64_t, RefPtr<ValidateCommandCallback>> m_validateCommandCallbacks;
-#if PLATFORM(IOS)
- HashMap<uint64_t, RefPtr<GestureCallback>> m_gestureCallbacks;
- HashMap<uint64_t, RefPtr<TouchesCallback>> m_touchesCallbacks;
- HashMap<uint64_t, RefPtr<AutocorrectionDataCallback>> m_autocorrectionCallbacks;
- HashMap<uint64_t, RefPtr<AutocorrectionContextCallback>> m_autocorrectionContextCallbacks;
-#endif
-#if PLATFORM(GTK)
- HashMap<uint64_t, RefPtr<PrintFinishedCallback>> m_printFinishedCallbacks;
+#if ENABLE(APPLE_PAY)
+ std::unique_ptr<WebPaymentCoordinatorProxy> m_paymentCoordinator;
#endif
+ CallbackMap m_callbacks;
+ HashSet<uint64_t> m_loadDependentStringCallbackIDs;
+
HashSet<WebEditCommandProxy*> m_editCommandSet;
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
HashSet<String> m_knownKeypressCommandNames;
#endif
RefPtr<WebPopupMenuProxy> m_activePopupMenu;
- RefPtr<WebContextMenuProxy> m_activeContextMenu;
- WebHitTestResult::Data m_activeContextMenuHitTestResultData;
+#if ENABLE(CONTEXT_MENUS)
+ std::unique_ptr<WebContextMenuProxy> m_activeContextMenu;
+ ContextMenuContextData m_activeContextMenuContextData;
+#endif
+ RefPtr<API::HitTestResult> m_lastMouseMoveHitTestResult;
+
RefPtr<WebOpenPanelResultListenerProxy> m_openPanelResultListener;
GeolocationPermissionRequestManagerProxy m_geolocationPermissionRequestManager;
NotificationPermissionRequestManagerProxy m_notificationPermissionRequestManager;
- WebCore::ViewState::Flags m_viewState;
+#if ENABLE(MEDIA_STREAM)
+ std::unique_ptr<UserMediaPermissionRequestManagerProxy> m_userMediaPermissionRequestManager;
+#endif
- bool m_canGoBack;
- bool m_canGoForward;
+ WebCore::ActivityState::Flags m_activityState;
+ bool m_viewWasEverInWindow;
+#if PLATFORM(IOS)
+ bool m_allowsMediaDocumentInlinePlayback { false };
+ bool m_alwaysRunsAtForegroundPriority;
+ ProcessThrottler::ForegroundActivityToken m_activityToken;
+#endif
+ bool m_initialCapitalizationEnabled;
Ref<WebBackForwardList> m_backForwardList;
-
+
bool m_maintainsInactiveSelection;
- String m_toolTip;
+ bool m_waitsForPaintAfterViewDidMoveToWindow;
+ bool m_shouldSkipWaitingForPaintAfterNextViewDidMoveToWindow { false };
- String m_urlAtProcessExit;
- FrameLoadState::State m_loadStateAtProcessExit;
+ String m_toolTip;
EditorState m_editorState;
- bool m_temporarilyClosedComposition; // Editor state changed from hasComposition to !hasComposition, but that was only with shouldIgnoreCompositionSelectionChange yet.
+ bool m_isEditable;
double m_textZoomFactor;
double m_pageZoomFactor;
double m_pageScaleFactor;
+ double m_pluginZoomFactor;
+ double m_pluginScaleFactor;
+ double m_viewScaleFactor { 1 };
float m_intrinsicDeviceScaleFactor;
float m_customDeviceScaleFactor;
+ float m_topContentInset;
LayerHostingMode m_layerHostingMode;
bool m_drawsBackground;
- bool m_drawsTransparentBackground;
WebCore::Color m_underlayColor;
-
- bool m_areMemoryCacheClientCallsEnabled;
+ WebCore::Color m_pageExtendedBackgroundColor;
bool m_useFixedLayout;
WebCore::IntSize m_fixedLayoutSize;
+ WebCore::LayoutMilestones m_observedLayoutMilestones { 0 };
+
bool m_suppressScrollbarAnimations;
WebCore::Pagination::Mode m_paginationMode;
bool m_paginationBehavesLikeColumns;
double m_pageLength;
double m_gapBetweenPages;
-
+ bool m_paginationLineGridEnabled;
+
// If the process backing the web page is alive and kicking.
bool m_isValid;
@@ -1294,6 +1764,8 @@ private:
// Whether it can run modal child web pages.
bool m_canRunModal;
+ bool m_needsToFinishInitializingWebPageAfterProcessLaunch { false };
+
bool m_isInPrintingMode;
bool m_isPerformingDOMPrintOperation;
@@ -1301,52 +1773,101 @@ private:
const WebCore::ResourceRequest* m_decidePolicyForResponseRequest;
bool m_syncMimeTypePolicyActionIsValid;
WebCore::PolicyAction m_syncMimeTypePolicyAction;
- uint64_t m_syncMimeTypePolicyDownloadID;
+ DownloadID m_syncMimeTypePolicyDownloadID;
bool m_inDecidePolicyForNavigationAction;
bool m_syncNavigationActionPolicyActionIsValid;
WebCore::PolicyAction m_syncNavigationActionPolicyAction;
- uint64_t m_syncNavigationActionPolicyDownloadID;
+ DownloadID m_syncNavigationActionPolicyDownloadID;
+ WebsitePolicies m_syncNavigationActionPolicyWebsitePolicies;
+ bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false };
Deque<NativeWebKeyboardEvent> m_keyEventQueue;
Deque<NativeWebWheelEvent> m_wheelEventQueue;
- Deque<OwnPtr<Vector<NativeWebWheelEvent>>> m_currentlyProcessedWheelEvents;
+ Deque<std::unique_ptr<Vector<NativeWebWheelEvent>>> m_currentlyProcessedWheelEvents;
+#if ENABLE(MAC_GESTURE_EVENTS)
+ Deque<NativeWebGestureEvent> m_gestureEventQueue;
+#endif
bool m_processingMouseMoveEvent;
- OwnPtr<NativeWebMouseEvent> m_nextMouseMoveEvent;
- OwnPtr<NativeWebMouseEvent> m_currentlyProcessedMouseDownEvent;
+ std::unique_ptr<NativeWebMouseEvent> m_nextMouseMoveEvent;
+ std::unique_ptr<NativeWebMouseEvent> m_currentlyProcessedMouseDownEvent;
#if ENABLE(TOUCH_EVENTS)
- bool m_needTouchEvents;
+ struct TouchEventTracking {
+ WebCore::TrackingType touchForceChangedTracking { WebCore::TrackingType::NotTracking };
+ WebCore::TrackingType touchStartTracking { WebCore::TrackingType::NotTracking };
+ WebCore::TrackingType touchMoveTracking { WebCore::TrackingType::NotTracking };
+ WebCore::TrackingType touchEndTracking { WebCore::TrackingType::NotTracking };
+
+ bool isTrackingAnything() const
+ {
+ return touchForceChangedTracking != WebCore::TrackingType::NotTracking
+ || touchStartTracking != WebCore::TrackingType::NotTracking
+ || touchMoveTracking != WebCore::TrackingType::NotTracking
+ || touchEndTracking != WebCore::TrackingType::NotTracking;
+ }
+
+ void reset()
+ {
+ touchForceChangedTracking = WebCore::TrackingType::NotTracking;
+ touchStartTracking = WebCore::TrackingType::NotTracking;
+ touchMoveTracking = WebCore::TrackingType::NotTracking;
+ touchEndTracking = WebCore::TrackingType::NotTracking;
+ }
+ };
+ TouchEventTracking m_touchEventTracking;
+#endif
+#if ENABLE(TOUCH_EVENTS) && !ENABLE(IOS_TOUCH_EVENTS)
Deque<QueuedTouchEvents> m_touchEventQueue;
#endif
+
#if ENABLE(INPUT_TYPE_COLOR)
RefPtr<WebColorPicker> m_colorPicker;
- RefPtr<WebColorPickerResultListenerProxy> m_colorPickerResultListener;
+#endif
+#if PLATFORM(COCOA)
+ RefPtr<WebCore::ValidationBubble> m_validationBubble;
#endif
- uint64_t m_pageID;
- Ref<API::Session> m_session;
+ const uint64_t m_pageID;
+ const WebCore::SessionID m_sessionID;
bool m_isPageSuspended;
+ bool m_addsVisitedLinks;
-#if PLATFORM(MAC)
+ bool m_controlledByAutomation { false };
+
+#if ENABLE(REMOTE_INSPECTOR)
+ bool m_allowsRemoteInspection;
+ String m_remoteInspectionNameOverride;
+#endif
+
+#if PLATFORM(COCOA)
bool m_isSmartInsertDeleteEnabled;
#endif
#if PLATFORM(GTK)
String m_accessibilityPlugID;
+ WebCore::Color m_backgroundColor;
#endif
int64_t m_spellDocumentTag;
bool m_hasSpellDocumentTag;
unsigned m_pendingLearnOrIgnoreWordMessageCount;
+ bool m_mainFrameHasCustomContentProvider;
+
#if ENABLE(DRAG_SUPPORT)
- WebCore::DragSession m_currentDragSession;
+ // Current drag destination details are delivered as an asynchronous response,
+ // so we preserve them to be used when the next dragging delegate call is made.
+ WebCore::DragOperation m_currentDragOperation;
+ bool m_currentDragIsOverFileInput;
+ unsigned m_currentDragNumberOfFilesToBeAccepted;
#endif
PageLoadState m_pageLoadState;
+
+ bool m_delegatesScrolling;
bool m_mainFrameHasHorizontalScrollbar;
bool m_mainFrameHasVerticalScrollbar;
@@ -1359,42 +1880,106 @@ private:
bool m_mainFrameIsPinnedToTopSide;
bool m_mainFrameIsPinnedToBottomSide;
- bool m_useLegacyImplicitRubberBandControl;
+ bool m_shouldUseImplicitRubberBandControl;
bool m_rubberBandsAtLeft;
bool m_rubberBandsAtRight;
bool m_rubberBandsAtTop;
bool m_rubberBandsAtBottom;
+
+ bool m_enableVerticalRubberBanding;
+ bool m_enableHorizontalRubberBanding;
bool m_backgroundExtendsBeyondPage;
- bool m_mainFrameInViewSourceMode;
-
bool m_shouldRecordNavigationSnapshots;
+ bool m_isShowingNavigationGestureSnapshot;
+
+ bool m_mainFramePluginHandlesPageScaleGesture { false };
unsigned m_pageCount;
WebCore::IntRect m_visibleScrollerThumbRect;
uint64_t m_renderTreeSize;
-
- bool m_shouldSendEventsSynchronously;
+ uint64_t m_sessionRestorationRenderTreeSize;
+ bool m_hitRenderTreeSizeThreshold;
bool m_suppressVisibilityUpdates;
bool m_autoSizingShouldExpandToViewHeight;
WebCore::IntSize m_minimumLayoutSize;
+ // Visual viewports
+ WebCore::LayoutSize m_baseLayoutViewportSize;
+ WebCore::LayoutPoint m_minStableLayoutViewportOrigin;
+ WebCore::LayoutPoint m_maxStableLayoutViewportOrigin;
+
float m_mediaVolume;
+ WebCore::MediaProducer::MutedStateFlags m_mutedState { WebCore::MediaProducer::NoneMuted };
bool m_mayStartMediaWhenInWindow;
- bool m_waitingForDidUpdateViewState;
+ bool m_waitingForDidUpdateActivityState;
-#if PLATFORM(MAC)
+ bool m_shouldScaleViewToFitDocument { false };
+ bool m_suppressAutomaticNavigationSnapshotting { false };
+
+#if PLATFORM(COCOA)
HashMap<String, String> m_temporaryPDFFiles;
+ std::unique_ptr<WebCore::RunLoopObserver> m_activityStateChangeDispatcher;
+
+ std::unique_ptr<RemoteLayerTreeScrollingPerformanceData> m_scrollingPerformanceData;
+ bool m_scrollPerformanceDataCollectionEnabled;
#endif
+ UserObservablePageCounter::Token m_pageIsUserObservableCount;
+ ProcessSuppressionDisabledToken m_preventProcessSuppressionCount;
+ HiddenPageThrottlingAutoIncreasesCounter::Token m_hiddenPageDOMTimerThrottlingAutoIncreasesCount;
+ VisibleWebPageToken m_visiblePageToken;
WebCore::ScrollPinningBehavior m_scrollPinningBehavior;
+ std::optional<WebCore::ScrollbarOverlayStyle> m_scrollbarOverlayStyle;
+
+ uint64_t m_navigationID;
+
+ WebPreferencesStore::ValueMap m_configurationPreferenceValues;
+ WebCore::ActivityState::Flags m_potentiallyChangedActivityStateFlags;
+ bool m_activityStateChangeWantsSynchronousReply;
+ Vector<uint64_t> m_nextActivityStateChangeCallbacks;
+
+ WebCore::MediaProducer::MediaStateFlags m_mediaState { WebCore::MediaProducer::IsNotPlaying };
+
+ bool m_isResourceCachingDisabled { false };
+
+ bool m_hasHadSelectionChangesFromUserInteraction { false };
+ bool m_needsHiddenContentEditableQuirk { false };
+ bool m_needsPlainTextQuirk { false };
+ bool m_hasEverBeenVisible { false };
+
+#if ENABLE(MEDIA_SESSION)
+ bool m_hasMediaSessionWithActiveMediaElements { false };
+#endif
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+ bool m_requiresTargetMonitoring { false };
+#endif
+
+#if PLATFORM(IOS)
+ bool m_hasDeferredStartAssistingNode { false };
+ std::unique_ptr<NodeAssistanceArguments> m_deferredNodeAssistanceArguments;
+ bool m_forceAlwaysUserScalable { false };
+#endif
+
+#if ENABLE(POINTER_LOCK)
+ bool m_isPointerLockPending { false };
+ bool m_isPointerLocked { false };
+#endif
+
+#if ENABLE(DOWNLOAD_ATTRIBUTE)
+ bool m_syncNavigationActionHasDownloadAttribute { false };
+#endif
+
+ bool m_isUsingHighPerformanceWebGL { false };
+ bool m_wasKilledForBeingUnresponsiveWhileInBackground { false };
+
+ WeakPtrFactory<WebPageProxy> m_weakPtrFactory;
};
} // namespace WebKit
-
-#endif // WebPageProxy_h