mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00

Official WebKit no longer supports Mac 10.14. However, since this system is still very much in use, we want to be able to keep it running for a while. This patch adds a new browser that we would compile and maintain specifically for Mac 10.14: `deprecated-webkit-mac-10.14`. This browser is a clone of Webkit r1443 that is the last known revision to compile on Mac 10.14. As we move on, we're free to modify this browser however we want, backporting important patches. References #5833
86 lines
4.3 KiB
C++
86 lines
4.3 KiB
C++
/*
|
|
* Copyright (C) 2018 Sony Interactive Entertainment Inc.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
#pragma once
|
|
|
|
#include "Common.h"
|
|
#include <WebKit/WKBase.h>
|
|
#include <WebKit/WebKit2_C.h>
|
|
#include <unordered_map>
|
|
|
|
class BrowserWindowClient {
|
|
public:
|
|
virtual void activeURLChanged(std::wstring) = 0;
|
|
};
|
|
|
|
class WebKitBrowserWindow {
|
|
public:
|
|
static WKPageRef createPageCallback(WKPageConfigurationRef);
|
|
WebKitBrowserWindow(BrowserWindowClient&, HWND mainWnd, WKPageConfigurationRef);
|
|
~WebKitBrowserWindow();
|
|
|
|
HRESULT loadURL(const BSTR& url);
|
|
void reload();
|
|
void navigateForwardOrBackward(bool forward);
|
|
void launchInspector();
|
|
|
|
_bstr_t userAgent();
|
|
void setUserAgent(_bstr_t&);
|
|
|
|
void resetZoom();
|
|
void zoomIn();
|
|
void zoomOut();
|
|
|
|
bool canTrustServerCertificate(WKProtectionSpaceRef);
|
|
HWND hwnd();
|
|
|
|
private:
|
|
static WKPageRef createViewCallback(WKPageConfigurationRef, bool navigate);
|
|
|
|
static void didChangeTitle(const void*);
|
|
static void didChangeIsLoading(const void*);
|
|
static void didChangeEstimatedProgress(const void*);
|
|
static void didChangeActiveURL(const void*);
|
|
static void didReceiveAuthenticationChallenge(WKPageRef, WKAuthenticationChallengeRef, const void*);
|
|
static WKPageRef createNewPage(WKPageRef, WKPageConfigurationRef, WKNavigationActionRef, WKWindowFeaturesRef, const void *);
|
|
static void closeWindow(WKPageRef, const void*);
|
|
static void runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptAlertResultListenerRef listener, const void *clientInfo);
|
|
static void runJavaScriptConfirm(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptConfirmResultListenerRef listener, const void *clientInfo);
|
|
static void runJavaScriptPrompt(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptPromptResultListenerRef listener, const void *clientInfo);
|
|
static void runBeforeUnloadConfirmPanel(WKPageRef page, WKStringRef message, WKFrameRef frame, WKPageRunBeforeUnloadConfirmPanelResultListenerRef listener, const void *clientInfo);
|
|
static void handleJavaScriptDialog(WKPageRef page, bool accept, WKStringRef value, const void *clientInfo);
|
|
static WKRect getWindowFrame(WKPageRef page, const void *clientInfo);
|
|
static void didNotHandleKeyEvent(WKPageRef, WKNativeEventPtr, const void*);
|
|
static void decidePolicyForResponse(WKPageRef, WKFrameRef, WKURLResponseRef, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
|
|
|
|
BrowserWindowClient& m_client;
|
|
WKRetainPtr<WKViewRef> m_view;
|
|
HWND m_hMainWnd { nullptr };
|
|
std::unordered_map<std::wstring, std::wstring> m_acceptedServerTrustCerts;
|
|
WKPageRunJavaScriptAlertResultListenerRef m_alertDialog = { };
|
|
WKPageRunJavaScriptConfirmResultListenerRef m_confirmDialog = { };
|
|
WKPageRunJavaScriptPromptResultListenerRef m_promptDialog = { };
|
|
WKPageRunBeforeUnloadConfirmPanelResultListenerRef m_beforeUnloadDialog = { };
|
|
};
|