diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2019-06-04 22:44:55 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2019-06-04 22:45:21 +0300 |
commit | c49326e942d7cc21f78fe187020dce73befdd935 (patch) | |
tree | faf0927eeeff4c57e998902b2085d976e588ed2b /Source/WebKit2/UIProcess | |
parent | 72cfbd7664f21fcc0e62b869a6b01bf73eb5e7da (diff) | |
download | qtwebkit-c49326e942d7cc21f78fe187020dce73befdd935.tar.gz |
Import WebKit commit 5ccca3a720f7c2251c4ac8b28f25bd73524081f0
Change-Id: Idfb37cd43929536d4c67d1fa5d8cb598e9c0ad7e
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/WebKit2/UIProcess')
9 files changed, 69 insertions, 18 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp index b894d7338..7e4b37012 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp @@ -385,8 +385,10 @@ void QQuickWebViewPrivate::initialize(WKPageConfigurationRef configurationRef) loadClient.didChangeProgress = didChangeProgress; loadClient.didFinishProgress = didFinishProgress; loadClient.didChangeBackForwardList = didChangeBackForwardList; + // FIXME: These three functions should not be part of this client. loadClient.processDidBecomeUnresponsive = processDidBecomeUnresponsive; loadClient.processDidBecomeResponsive = processDidBecomeResponsive; + loadClient.processDidCrash = processDidCrash; WKPageSetPageLoaderClient(webPage.get(), &loadClient.base); } @@ -605,20 +607,21 @@ void QQuickWebViewPrivate::didRenderFrame() } } -void QQuickWebViewPrivate::processDidCrash() +void QQuickWebViewPrivate::processDidCrash(WKPageRef, const void* clientInfo) { - Q_Q(QQuickWebView); + QQuickWebViewPrivate* d = toQQuickWebViewPrivate(clientInfo); + QQuickWebView* q = d->q_ptr; - QUrl url(URL(WebCore::ParsedURLString, webPageProxy->urlAtProcessExit())); + QUrl url(URL(WebCore::ParsedURLString, d->webPageProxy->urlAtProcessExit())); qWarning("WARNING: The web process experienced a crash on '%s'.", qPrintable(url.toString(QUrl::RemoveUserInfo))); - pageEventHandler->resetGestureRecognizers(); + d->pageEventHandler->resetGestureRecognizers(); // Check if loading was ongoing, when process crashed. - if (m_loadProgress > 0 && m_loadProgress < 100) { + if (d->m_loadProgress > 0 && d->m_loadProgress < 100) { QWebLoadRequest loadRequest(url, QQuickWebView::LoadFailedStatus, QStringLiteral("The web process crashed."), QQuickWebView::InternalErrorDomain, 0); - loadProgressDidChange(100); + d->loadProgressDidChange(100); emit q->loadingChanged(&loadRequest); } diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h index cca489582..dba68e792 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h @@ -128,7 +128,6 @@ public: // PageClient. WebCore::IntSize viewSize() const; virtual void pageDidRequestScroll(const QPoint& pos) { } - void processDidCrash(); void didRelaunchProcess(); std::unique_ptr<WebKit::DrawingAreaProxy> createDrawingAreaProxy(); void handleDownloadRequest(WebKit::DownloadProxy*); @@ -176,6 +175,7 @@ protected: static void didChangeBackForwardList(WKPageRef, WKBackForwardListItemRef, WKArrayRef, const void *clientInfo); static void processDidBecomeUnresponsive(WKPageRef, const void* clientInfo); static void processDidBecomeResponsive(WKPageRef, const void* clientInfo); + static void processDidCrash(WKPageRef, const void* clientInfo); QQuickWebViewPrivate(QQuickWebView* viewport); RefPtr<WebKit::WebPageProxy> webPageProxy; diff --git a/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp b/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp index c781a97ca..82a3db952 100644 --- a/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp @@ -83,6 +83,10 @@ bool QWebPreferencesPrivate::testAttribute(QWebPreferencesPrivate::WebAttribute return WKPreferencesGetUniversalAccessFromFileURLsAllowed(preferencesRef); case FileAccessFromFileURLsAllowed: return WKPreferencesGetFileAccessFromFileURLsAllowed(preferencesRef); + case LogsPageMessagesToSystemConsoleEnabled: + return WKPreferencesGetLogsPageMessagesToSystemConsoleEnabled(preferencesRef); + case WebSecurityEnabled: + return WKPreferencesGetWebSecurityEnabled(preferencesRef); default: ASSERT_NOT_REACHED(); return false; @@ -156,6 +160,12 @@ void QWebPreferencesPrivate::setAttribute(QWebPreferencesPrivate::WebAttribute a case FileAccessFromFileURLsAllowed: WKPreferencesSetFileAccessFromFileURLsAllowed(preferencesRef, enable); break; + case LogsPageMessagesToSystemConsoleEnabled: + WKPreferencesSetLogsPageMessagesToSystemConsoleEnabled(preferencesRef, enable); + break; + case WebSecurityEnabled: + WKPreferencesSetWebSecurityEnabled(preferencesRef, enable); + break; default: ASSERT_NOT_REACHED(); } @@ -631,6 +641,32 @@ void QWebPreferences::setLinksIncludedInFocusChain(bool enable) emit linksIncludedInFocusChainChanged(); } +bool QWebPreferences::logsPageMessagesToSystemConsoleEnabled() const +{ + return d->testAttribute(QWebPreferencesPrivate::LogsPageMessagesToSystemConsoleEnabled); +} + +void QWebPreferences::setLogsPageMessagesToSystemConsoleEnabled(bool enable) +{ + if (logsPageMessagesToSystemConsoleEnabled() == enable) + return; + d->setAttribute(QWebPreferencesPrivate::LogsPageMessagesToSystemConsoleEnabled, enable); + emit logsPageMessagesToSystemConsoleEnabledChanged(); +} + +bool QWebPreferences::webSecurityEnabled() const +{ + return d->testAttribute(QWebPreferencesPrivate::WebSecurityEnabled); +} + +void QWebPreferences::setWebSecurityEnabled(bool enable) +{ + if (webSecurityEnabled() == enable) + return; + d->setAttribute(QWebPreferencesPrivate::WebSecurityEnabled, enable); + emit webSecurityEnabledChanged(); +} + QWebPreferencesPrivate* QWebPreferencesPrivate::get(QWebPreferences* preferences) { return preferences->d; diff --git a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h index 08c4df2d8..702146c38 100644 --- a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h @@ -51,6 +51,8 @@ public: Q_PROPERTY(bool fileAccessFromFileURLsAllowed READ fileAccessFromFileURLsAllowed WRITE setFileAccessFromFileURLsAllowed NOTIFY fileAccessFromFileURLsAllowedChanged FINAL) Q_PROPERTY(bool spatialNavigationEnabled READ spatialNavigationEnabled WRITE setSpatialNavigationEnabled NOTIFY spatialNavigationEnabledChanged FINAL) Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain NOTIFY linksIncludedInFocusChainChanged FINAL) + Q_PROPERTY(bool logsPageMessagesToSystemConsoleEnabled READ logsPageMessagesToSystemConsoleEnabled WRITE setLogsPageMessagesToSystemConsoleEnabled NOTIFY logsPageMessagesToSystemConsoleEnabledChanged FINAL) + Q_PROPERTY(bool webSecurityEnabled READ webSecurityEnabled WRITE setWebSecurityEnabled NOTIFY webSecurityEnabledChanged FINAL) Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily NOTIFY standardFontFamilyChanged FINAL) Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily NOTIFY fixedFontFamilyChanged FINAL) @@ -123,6 +125,12 @@ public: bool linksIncludedInFocusChain() const; void setLinksIncludedInFocusChain(bool enable); + bool logsPageMessagesToSystemConsoleEnabled() const; + void setLogsPageMessagesToSystemConsoleEnabled(bool); + + bool webSecurityEnabled() const; + void setWebSecurityEnabled(bool); + QString standardFontFamily() const; void setStandardFontFamily(const QString& family); @@ -171,6 +179,8 @@ Q_SIGNALS: void linksIncludedInFocusChainChanged(); void universalAccessFromFileURLsAllowedChanged(); void fileAccessFromFileURLsAllowedChanged(); + void logsPageMessagesToSystemConsoleEnabledChanged(); + void webSecurityEnabledChanged(); void standardFontFamilyChanged(); void fixedFontFamilyChanged(); diff --git a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h index 2b4c804ff..a5395c3c8 100644 --- a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h @@ -44,7 +44,9 @@ public: UniversalAccessFromFileURLsAllowed, FileAccessFromFileURLsAllowed, SpatialNavigationEnabled, - LinksIncludedInFocusChain + LinksIncludedInFocusChain, + LogsPageMessagesToSystemConsoleEnabled, + WebSecurityEnabled }; enum FontFamily { diff --git a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp index e62e18d03..f5b66cd5f 100644 --- a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp +++ b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp @@ -58,8 +58,7 @@ void ProcessLauncher::didFinishLaunchingProcess(PlatformProcessIdentifier proces if (!m_client) { // FIXME: Make Identifier a move-only object and release port rights/connections in the destructor. -#if OS(DARWIN) && !PLATFORM(GTK) - // FIXME: Should really be something like USE(MACH) +#if USE(MACH_PORTS) if (identifier.port) mach_port_mod_refs(mach_task_self(), identifier.port, MACH_PORT_RIGHT_RECEIVE, -1); #endif diff --git a/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp b/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp index 51a3ffbba..694a759e6 100644 --- a/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp +++ b/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp @@ -62,7 +62,7 @@ #include <QCoreApplication> #endif -#if OS(DARWIN) +#if USE(MACH_PORTS) #include <mach/mach_init.h> #include <servers/bootstrap.h> @@ -70,7 +70,7 @@ extern "C" kern_return_t bootstrap_register2(mach_port_t, name_t, mach_port_t, u #endif // for QNX we need SOCK_DGRAM, see https://bugs.webkit.org/show_bug.cgi?id=95553 -#if defined(SOCK_SEQPACKET) && !defined(Q_OS_MACX) && !OS(QNX) +#if defined(SOCK_SEQPACKET) && !defined(Q_OS_MACOS) && !OS(QNX) #define SOCKET_TYPE SOCK_SEQPACKET #else #define SOCKET_TYPE SOCK_DGRAM @@ -101,7 +101,7 @@ void QtWebProcess::setupChildProcess() #endif prctl(PR_SET_PDEATHSIG, SIGKILL); #endif -#if defined(Q_OS_MACX) +#if defined(Q_OS_MACOS) qputenv("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM", QByteArray("1")); #endif } @@ -126,7 +126,7 @@ void ProcessLauncher::launchProcess() #if ENABLE(DATABASE_PROCESS) } else if (m_launchOptions.processType == ProcessType::Database) { commandLine = QLatin1String("%1 \"%2\" %3 %4"); - QByteArray processPrefix = qgetenv("QT_WEBKIT2_DP_CMD_PREFIX"); + QByteArray processPrefix = qgetenv("QT_WEBKIT2_SP_CMD_PREFIX"); commandLine = commandLine.arg(QLatin1String(processPrefix.constData())).arg(QString(executablePathOfDatabaseProcess())); #endif } else { @@ -134,7 +134,7 @@ void ProcessLauncher::launchProcess() ASSERT_NOT_REACHED(); } -#if OS(DARWIN) +#if USE(MACH_PORTS) // Create the listening port. mach_port_t connector; mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &connector); @@ -216,7 +216,7 @@ void ProcessLauncher::launchProcess() if (!webProcessOrSUIDHelper->waitForStarted()) { qDebug() << "Failed to start" << commandLine; ASSERT_NOT_REACHED(); -#if OS(DARWIN) +#if USE(MACH_PORTS) mach_port_deallocate(mach_task_self(), connector); mach_port_mod_refs(mach_task_self(), connector, MACH_PORT_RIGHT_RECEIVE, -1); #endif diff --git a/Source/WebKit2/UIProcess/WebPageProxy.cpp b/Source/WebKit2/UIProcess/WebPageProxy.cpp index 5f6a16f70..d0ff9bca5 100644 --- a/Source/WebKit2/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit2/UIProcess/WebPageProxy.cpp @@ -6287,7 +6287,7 @@ void WebPageProxy::setURLSchemeHandlerForScheme(Ref<WebURLSchemeHandler>&& handl WebURLSchemeHandler* WebPageProxy::urlSchemeHandlerForScheme(const String& scheme) { - return m_urlSchemeHandlersByScheme.get(scheme); + return scheme.isNull() ? nullptr : m_urlSchemeHandlersByScheme.get(scheme); } void WebPageProxy::startURLSchemeHandlerTask(uint64_t handlerIdentifier, uint64_t resourceIdentifier, const WebCore::ResourceRequest& request) diff --git a/Source/WebKit2/UIProcess/qt/QtPageClient.cpp b/Source/WebKit2/UIProcess/qt/QtPageClient.cpp index 53faa7647..fd410ffdd 100644 --- a/Source/WebKit2/UIProcess/qt/QtPageClient.cpp +++ b/Source/WebKit2/UIProcess/qt/QtPageClient.cpp @@ -90,7 +90,8 @@ void QtPageClient::pageDidRequestScroll(const IntPoint& pos) void QtPageClient::processDidExit() { - QQuickWebViewPrivate::get(m_webView)->processDidCrash(); + // TODO: Do we need this signal? + // QQuickWebViewPrivate::get(m_webView)->processDidExit(); } void QtPageClient::didRelaunchProcess() |