diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-01-12 11:32:02 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-01-12 11:35:45 +0100 |
commit | a077399f4c17f57e911334867c918cc6ddeb15fc (patch) | |
tree | c8e4d326d7a074e9d16b68399ecc5f728f8533fe /src/webenginewidgets/api | |
parent | 3d698f5de377bde2293e222536bc50171cfdf1b8 (diff) | |
parent | 12dd6ff845656eb625e2ee3d0e73392bc2c61983 (diff) |
Merge branch '5.6' into dev
Change-Id: I4272eb59cac08c69eaa58dd4d94debf1b8c5cf78
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r-- | src/webenginewidgets/api/qtwebenginewidgetsglobal.cpp | 8 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginedownloaditem.cpp | 12 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginedownloaditem.h | 1 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginedownloaditem_p.h | 1 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 22 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage_p.h | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 1 |
7 files changed, 45 insertions, 2 deletions
diff --git a/src/webenginewidgets/api/qtwebenginewidgetsglobal.cpp b/src/webenginewidgets/api/qtwebenginewidgetsglobal.cpp index b17516ad6..b1a8f7b78 100644 --- a/src/webenginewidgets/api/qtwebenginewidgetsglobal.cpp +++ b/src/webenginewidgets/api/qtwebenginewidgetsglobal.cpp @@ -36,10 +36,14 @@ #include "qtwebenginewidgetsglobal.h" -#include "qtwebengineglobal.h" #include <QCoreApplication> #include <QOpenGLContext> +namespace QtWebEngineCore +{ + extern void initialize(); +} + QT_BEGIN_NAMESPACE static void initialize() { @@ -52,7 +56,7 @@ static void initialize() return; } #endif - qAddPreRoutine(QtWebEngine::initialize); + qAddPreRoutine(QtWebEngineCore::initialize); } Q_CONSTRUCTOR_FUNCTION(initialize) diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.cpp b/src/webenginewidgets/api/qwebenginedownloaditem.cpp index 9650f5e0e..bc7e3932c 100644 --- a/src/webenginewidgets/api/qwebenginedownloaditem.cpp +++ b/src/webenginewidgets/api/qwebenginedownloaditem.cpp @@ -261,6 +261,18 @@ QUrl QWebEngineDownloadItem::url() const } /*! + \since 5.6 + + Returns the MIME type of the download. +*/ + +QString QWebEngineDownloadItem::mimeType() const +{ + Q_D(const QWebEngineDownloadItem); + return d->mimeType; +} + +/*! Returns the full target path where data is being downloaded to. The path includes the file name. The default suggested path is the standard download location diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.h b/src/webenginewidgets/api/qwebenginedownloaditem.h index b0c4c2988..b1c00f28a 100644 --- a/src/webenginewidgets/api/qwebenginedownloaditem.h +++ b/src/webenginewidgets/api/qwebenginedownloaditem.h @@ -74,6 +74,7 @@ public: qint64 totalBytes() const; qint64 receivedBytes() const; QUrl url() const; + QString mimeType() const; QString path() const; void setPath(QString path); bool isFinished() const; diff --git a/src/webenginewidgets/api/qwebenginedownloaditem_p.h b/src/webenginewidgets/api/qwebenginedownloaditem_p.h index ab38d7d03..cb8bbf000 100644 --- a/src/webenginewidgets/api/qwebenginedownloaditem_p.h +++ b/src/webenginewidgets/api/qwebenginedownloaditem_p.h @@ -71,6 +71,7 @@ public: QWebEngineDownloadItem::SavePageFormat savePageFormat; QString downloadPath; const QUrl downloadUrl; + QString mimeType; qint64 totalBytes; qint64 receivedBytes; diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 60372dd40..d97cb5a09 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -92,6 +92,7 @@ QWebEnginePagePrivate::QWebEnginePagePrivate(QWebEngineProfile *_profile) , view(0) , isLoading(false) , scriptCollection(new QWebEngineScriptCollectionPrivate(browserContextAdapter()->userScriptController(), adapter.data())) + , m_isBeingAdopted(false) , m_backgroundColor(Qt::white) , fullscreenMode(false) { @@ -218,7 +219,20 @@ void QWebEnginePagePrivate::adoptNewWindow(WebContentsAdapter *newWebContents, W { Q_Q(QWebEnginePage); Q_UNUSED(userGesture); + QWebEnginePage *newPage = q->createWindow(toWindowType(disposition)); + + // Mark the new page as being in the process of being adopted, so that a second mouse move event + // sent by newWebContents->initialize() gets filtered in RenderWidgetHostViewQt::forwardEvent. + // The first mouse move event is being sent by q->createWindow(). This is necessary because + // Chromium does not get a mouse move acknowledgment message between the two events, and + // InputRouterImpl::ProcessMouseAck is not executed, thus all subsequent mouse move events + // get coalesced together, and don't get processed at all. + // The mouse move events are actually sent as a result of show() being called on + // RenderWidgetHostViewQtDelegateWidget, both when creating the window and when initialize is + // called. + newPage->d_func()->m_isBeingAdopted = true; + // Overwrite the new page's WebContents with ours. if (newPage && newPage->d_func() != this) { newPage->d_func()->adapter = newWebContents; @@ -226,6 +240,14 @@ void QWebEnginePagePrivate::adoptNewWindow(WebContentsAdapter *newWebContents, W if (!initialGeometry.isEmpty()) emit newPage->geometryChangeRequested(initialGeometry); } + + // Page has finished the adoption process. + newPage->d_func()->m_isBeingAdopted = false; +} + +bool QWebEnginePagePrivate::isBeingAdopted() +{ + return m_isBeingAdopted; } void QWebEnginePagePrivate::close() diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index e7f4cac4e..3da336369 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -95,6 +95,7 @@ public: virtual void focusContainer() Q_DECL_OVERRIDE; 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 bool isBeingAdopted() 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; @@ -153,6 +154,7 @@ public: QtWebEngineCore::WebEngineContextMenuData m_menuData; bool isLoading; QWebEngineScriptCollection scriptCollection; + bool m_isBeingAdopted; QColor m_backgroundColor; bool fullscreenMode; diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index 286889c1f..c64a883d3 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -156,6 +156,7 @@ void QWebEngineProfilePrivate::downloadRequested(DownloadItemInfo &info) itemPrivate->downloadId = info.id; itemPrivate->downloadState = QWebEngineDownloadItem::DownloadRequested; itemPrivate->downloadPath = info.path; + itemPrivate->mimeType = info.mimeType; itemPrivate->savePageFormat = static_cast<QWebEngineDownloadItem::SavePageFormat>(info.savePageFormat); QWebEngineDownloadItem *download = new QWebEngineDownloadItem(itemPrivate, q); |