diff options
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 14 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.h | 1 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage_p.h | 1 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 26 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.h | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile_p.h | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 8 |
7 files changed, 36 insertions, 18 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 61e37decb..e13b5d319 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -224,6 +224,11 @@ void QWebEnginePagePrivate::close() Q_EMIT q->windowCloseRequested(); } +void QWebEnginePagePrivate::windowCloseRejected() +{ + // Do nothing for now. +} + void QWebEnginePagePrivate::didRunJavaScript(quint64 requestId, const QVariant& result) { m_callbacks.invoke(requestId, result); @@ -651,6 +656,9 @@ QAction *QWebEnginePage::action(WebAction action) const case ExitFullScreen: text = tr("Exit Full Screen Mode"); break; + case RequestClose: + text = tr("Close Page"); + break; case Unselect: text = tr("Unselect"); break; @@ -827,6 +835,9 @@ void QWebEnginePage::triggerAction(WebAction action, bool) case ExitFullScreen: d->adapter->exitFullScreen(); break; + case RequestClose: + d->adapter->requestClose(); + break; default: Q_UNREACHABLE(); } @@ -922,6 +933,9 @@ void QWebEnginePagePrivate::javascriptDialog(QSharedPointer<JavaScriptDialogCont if (accepted) controller->textProvided(promptResult); break; + case UnloadDialog: + accepted = (QMessageBox::information(view, QCoreApplication::translate("QWebEnginePage", "Are you sure you want to leave this page?"), controller->message(), QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes); + break; case InternalAuthorizationDialog: accepted = (QMessageBox::question(view, controller->title(), controller->message(), QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes); break; diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index a72991778..a5930b396 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -110,6 +110,7 @@ public: InspectElement, ExitFullScreen, + RequestClose, Unselect, WebActionCount diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index d05f76b1a..0ddca3874 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -95,6 +95,7 @@ public: virtual void unhandledKeyEvent(QKeyEvent *event) Q_DECL_OVERRIDE; virtual void adoptNewWindow(QtWebEngineCore::WebContentsAdapter *newWebContents, WindowOpenDisposition disposition, bool userGesture, const QRect &initialGeometry) Q_DECL_OVERRIDE; virtual void close() Q_DECL_OVERRIDE; + virtual void windowCloseRejected() Q_DECL_OVERRIDE; virtual bool contextMenuRequested(const QtWebEngineCore::WebEngineContextMenuData &data) Q_DECL_OVERRIDE; virtual void navigationRequested(int navigationType, const QUrl &url, int &navigationRequestAction, bool isMainFrame) Q_DECL_OVERRIDE; virtual void requestFullScreen(bool) Q_DECL_OVERRIDE; diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index 323659827..b98aa3a61 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -42,7 +42,6 @@ #include "qwebenginepage.h" #include "qwebengineprofile_p.h" #include "qwebenginesettings.h" -#include "qwebengineurlschemehandler_p.h" #include "qwebenginescriptcollection_p.h" #include "browser_context_adapter.h" @@ -545,8 +544,8 @@ QWebEngineSettings *QWebEngineProfile::settings() const const QWebEngineUrlSchemeHandler *QWebEngineProfile::urlSchemeHandler(const QByteArray &scheme) const { const Q_D(QWebEngineProfile); - if (d->m_urlSchemeHandlers.contains(scheme)) - return d->m_urlSchemeHandlers.value(scheme); + if (d->browserContext()->customUrlSchemeHandlers().contains(scheme)) + return d->browserContext()->customUrlSchemeHandlers().value(scheme); return 0; } @@ -571,18 +570,17 @@ void QWebEngineProfile::installUrlSchemeHandler(QWebEngineUrlSchemeHandler *hand Q_ASSERT(handler); QByteArray scheme = handler->scheme(); if (checkInternalScheme(scheme)) { - qWarning() << "Can not install a URL scheme handler overriding internal scheme: " << scheme; + qWarning("Can not install a URL scheme handler overriding internal scheme: %s", scheme.constData()); return; } - if (d->m_urlSchemeHandlers.contains(scheme)) { - qWarning() << "URL scheme handler already installed for the scheme: " << scheme; + if (d->browserContext()->customUrlSchemeHandlers().contains(scheme)) { + qWarning("URL scheme handler already installed for the scheme: %s", scheme.constData()); return; } - d->m_urlSchemeHandlers.insert(scheme, handler); - d->browserContext()->customUrlSchemeHandlers().append(handler->d_func()); + d->browserContext()->customUrlSchemeHandlers().insert(scheme, handler); d->browserContext()->updateCustomUrlSchemeHandlers(); - connect(handler, SIGNAL(destroyed(QObject*)), this, SLOT(destroyedUrlSchemeHandler(QObject*))); + connect(handler, SIGNAL(destroyed(QWebEngineUrlSchemeHandler*)), this, SLOT(destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*))); } /*! @@ -596,11 +594,10 @@ void QWebEngineProfile::removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handl Q_ASSERT(handler); if (!handler) return; - int count = d->m_urlSchemeHandlers.remove(handler->scheme()); + int count = d->browserContext()->customUrlSchemeHandlers().remove(handler->scheme()); if (!count) return; - disconnect(handler, SIGNAL(destroyed(QObject*)), this, SLOT(destroyedUrlSchemeHandler(QObject*))); - d->browserContext()->removeCustomUrlSchemeHandler(handler->d_func()); + disconnect(handler, SIGNAL(destroyed(QWebEngineUrlSchemeHandler*)), this, SLOT(destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*))); d->browserContext()->updateCustomUrlSchemeHandlers(); } @@ -612,14 +609,13 @@ void QWebEngineProfile::removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handl void QWebEngineProfile::clearUrlSchemeHandlers() { Q_D(QWebEngineProfile); - d->m_urlSchemeHandlers.clear(); d->browserContext()->customUrlSchemeHandlers().clear(); d->browserContext()->updateCustomUrlSchemeHandlers(); } -void QWebEngineProfile::destroyedUrlSchemeHandler(QObject *obj) +void QWebEngineProfile::destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler *obj) { - removeUrlSchemeHandler(qobject_cast<QWebEngineUrlSchemeHandler*>(obj)); + removeUrlSchemeHandler(obj); } QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebengineprofile.h b/src/webenginewidgets/api/qwebengineprofile.h index 5532f12ee..82946a223 100644 --- a/src/webenginewidgets/api/qwebengineprofile.h +++ b/src/webenginewidgets/api/qwebengineprofile.h @@ -121,7 +121,7 @@ Q_SIGNALS: void downloadRequested(QWebEngineDownloadItem *download); private Q_SLOTS: - void destroyedUrlSchemeHandler(QObject *obj); + void destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler *obj); private: Q_DISABLE_COPY(QWebEngineProfile) diff --git a/src/webenginewidgets/api/qwebengineprofile_p.h b/src/webenginewidgets/api/qwebengineprofile_p.h index 8ba64c438..7dcc76598 100644 --- a/src/webenginewidgets/api/qwebengineprofile_p.h +++ b/src/webenginewidgets/api/qwebengineprofile_p.h @@ -50,7 +50,6 @@ #include "browser_context_adapter_client.h" #include "qwebengineprofile.h" -#include "qwebengineurlschemehandler_p.h" #include "qwebenginescriptcollection.h" #include <QMap> #include <QPointer> @@ -85,7 +84,6 @@ private: QScopedPointer<QWebEngineScriptCollection> m_scriptCollection; QExplicitlySharedDataPointer<QtWebEngineCore::BrowserContextAdapter> m_browserContextRef; QMap<quint32, QPointer<QWebEngineDownloadItem> > m_ongoingDownloads; - QMap<QByteArray, QWebEngineUrlSchemeHandler *> m_urlSchemeHandlers; }; QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index ddd1e4cbf..9baa8e34a 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -108,6 +108,14 @@ QWebEngineViewPrivate::QWebEngineViewPrivate() #endif // QT_NO_ACCESSIBILITY } +/*! + \fn QWebEngineView::renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) + + This signal is emitted when the render process is terminated with a non-zero exit status. + \a terminationStatus is the termination status of the process and \a exitCode is the status code + with which the process terminated. +*/ + QWebEngineView::QWebEngineView(QWidget *parent) : QWidget(parent) , d_ptr(new QWebEngineViewPrivate) |