summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-5.5.246
-rw-r--r--src/core/render_widget_host_view_qt.cpp12
-rw-r--r--src/process/main.cpp8
-rw-r--r--src/process/process.pro5
-rw-r--r--src/process/support_win.cpp155
-rw-r--r--src/webengine/api/qquickwebenginenewviewrequest.cpp2
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.cpp2
-rw-r--r--tests/auto/widgets/qwebengineprofile/qwebengineprofile.pro3
-rw-r--r--tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp76
-rw-r--r--tests/auto/widgets/widgets.pro5
10 files changed, 305 insertions, 9 deletions
diff --git a/dist/changes-5.5.2 b/dist/changes-5.5.2
new file mode 100644
index 000000000..fe4b88cb0
--- /dev/null
+++ b/dist/changes-5.5.2
@@ -0,0 +1,46 @@
+Qt 5.5.2 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.5.0.
+
+Qt 5.5 introduces many new features and improvements as well as bugfixes
+over the 5.4.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+ http://doc.qt.io/qt-5/index.html
+
+The Qt version 5.5 series is binary compatible with the 5.4.x series.
+Applications compiled for 5.4 will continue to run with 5.5.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+ https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* General *
+****************************************************************************
+
+QtWebEngineCore
+--------
+ - [QTBUG-48309] Fixed old-style QObject connections to
+ QWebEngineDownloadItem::stateChanged.
+ - [QTBUG-47976] Fixed httpUserAgent setting after the view's
+ initialization.
+ - [QTBUG-48206] Parse suggested filename from content-disposition response
+ header field.
+ - Fixed crash on malformed URL (Chromium issue 533361).
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+OS X
+----
+ - [QTBUG-48228] Enabled 32 bit build.
+
+Windows
+-------
+ - [QTBUG-48285] Fixed installation of PDB files.
+
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 26ea4f4ae..90c91fd47 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -186,13 +186,14 @@ static inline int flagsFromModifiers(Qt::KeyboardModifiers modifiers)
static uint32 s_eventId = 0;
class MotionEventQt : public ui::MotionEvent {
public:
- MotionEventQt(const QList<QTouchEvent::TouchPoint> &touchPoints, const base::TimeTicks &eventTime, Action action, const Qt::KeyboardModifiers modifiers, int index = -1)
+ MotionEventQt(const QList<QTouchEvent::TouchPoint> &touchPoints, const base::TimeTicks &eventTime, Action action, const Qt::KeyboardModifiers modifiers, float dpiScale, int index = -1)
: touchPoints(touchPoints)
, eventTime(eventTime)
, action(action)
, eventId(++s_eventId)
, flags(flagsFromModifiers(modifiers))
, index(index)
+ , dpiScale(dpiScale)
{
// ACTION_DOWN and ACTION_UP must be accesssed through pointer_index 0
Q_ASSERT((action != ACTION_DOWN && action != ACTION_UP) || index == 0);
@@ -203,8 +204,8 @@ public:
virtual int GetActionIndex() const Q_DECL_OVERRIDE { return index; }
virtual size_t GetPointerCount() const Q_DECL_OVERRIDE { return touchPoints.size(); }
virtual int GetPointerId(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).id(); }
- virtual float GetX(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().x(); }
- virtual float GetY(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().y(); }
+ virtual float GetX(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().x() / dpiScale; }
+ virtual float GetY(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().y() / dpiScale; }
virtual float GetRawX(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).screenPos().x(); }
virtual float GetRawY(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).screenPos().y(); }
virtual float GetTouchMajor(size_t pointer_index) const Q_DECL_OVERRIDE
@@ -240,6 +241,7 @@ private:
const uint32 eventId;
int flags;
int index;
+ float dpiScale;
};
RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget)
@@ -989,7 +991,7 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev)
QList<QTouchEvent::TouchPoint> touchPoints = mapTouchPointIds(ev->touchPoints());
if (ev->type() == QEvent::TouchCancel) {
- MotionEventQt cancelEvent(touchPoints, eventTimestamp, ui::MotionEvent::ACTION_CANCEL, ev->modifiers());
+ MotionEventQt cancelEvent(touchPoints, eventTimestamp, ui::MotionEvent::ACTION_CANCEL, ev->modifiers(), dpiScale());
processMotionEvent(cancelEvent);
return;
}
@@ -1022,7 +1024,7 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev)
continue;
}
- MotionEventQt motionEvent(touchPoints, eventTimestamp, action, ev->modifiers(), i);
+ MotionEventQt motionEvent(touchPoints, eventTimestamp, action, ev->modifiers(), dpiScale(), i);
processMotionEvent(motionEvent);
}
}
diff --git a/src/process/main.cpp b/src/process/main.cpp
index 446465ef7..8328c0022 100644
--- a/src/process/main.cpp
+++ b/src/process/main.cpp
@@ -146,8 +146,16 @@ int stat64_proxy(const char *path, struct stat64 *buf)
#endif
#endif // defined(OS_LINUX)
+#ifdef Q_OS_WIN
+void initDpiAwareness();
+#endif // defined(Q_OS_WIN)
+
int main(int argc, const char **argv)
{
+#ifdef Q_OS_WIN
+ initDpiAwareness();
+#endif
+
// QCoreApplication needs a non-const pointer, while the
// ContentMain in Chromium needs the pointer to be const.
QCoreApplication qtApplication(argc, const_cast<char**>(argv));
diff --git a/src/process/process.pro b/src/process/process.pro
index 7bf06a376..ee859a05c 100644
--- a/src/process/process.pro
+++ b/src/process/process.pro
@@ -24,6 +24,11 @@ INCLUDEPATH += ../core
SOURCES = main.cpp
+win32 {
+ SOURCES += \
+ support_win.cpp
+}
+
contains(QT_CONFIG, qt_framework) {
target.path = $$[QT_INSTALL_LIBS]/QtWebEngineCore.framework/Versions/5/Helpers
} else {
diff --git a/src/process/support_win.cpp b/src/process/support_win.cpp
new file mode 100644
index 000000000..4ccd51627
--- /dev/null
+++ b/src/process/support_win.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qlibrary.h>
+#include <qsysinfo.h>
+#include <qt_windows.h>
+#include <Tlhelp32.h>
+
+class User32DLL {
+public:
+ User32DLL()
+ : setProcessDPIAware(0)
+ {
+ library.setFileName(QStringLiteral("User32"));
+ if (!library.load())
+ return;
+ setProcessDPIAware = (SetProcessDPIAware)library.resolve("SetProcessDPIAware");
+ }
+
+ bool isValid() const
+ {
+ return setProcessDPIAware;
+ }
+
+ typedef BOOL (WINAPI *SetProcessDPIAware)();
+
+ // Windows Vista onwards
+ SetProcessDPIAware setProcessDPIAware;
+
+private:
+ QLibrary library;
+};
+
+// This must match PROCESS_DPI_AWARENESS in ShellScalingApi.h
+enum DpiAwareness {
+ PROCESS_PER_UNAWARE = 0,
+ PROCESS_PER_SYSTEM_DPI_AWARE = 1,
+ PROCESS_PER_MONITOR_DPI_AWARE = 2
+};
+
+// Shell scaling library (Windows 8.1 onwards)
+class ShcoreDLL {
+public:
+ ShcoreDLL()
+ : getProcessDpiAwareness(0), setProcessDpiAwareness(0)
+ {
+ if (QSysInfo::windowsVersion() < QSysInfo::WV_WINDOWS8_1)
+ return;
+ library.setFileName(QStringLiteral("SHCore"));
+ if (!library.load())
+ return;
+ getProcessDpiAwareness = (GetProcessDpiAwareness)library.resolve("GetProcessDpiAwareness");
+ setProcessDpiAwareness = (SetProcessDpiAwareness)library.resolve("SetProcessDpiAwareness");
+ }
+
+ bool isValid() const
+ {
+ return getProcessDpiAwareness && setProcessDpiAwareness;
+ }
+
+ typedef HRESULT (WINAPI *GetProcessDpiAwareness)(HANDLE, DpiAwareness *);
+ typedef HRESULT (WINAPI *SetProcessDpiAwareness)(DpiAwareness);
+
+ GetProcessDpiAwareness getProcessDpiAwareness;
+ SetProcessDpiAwareness setProcessDpiAwareness;
+
+private:
+ QLibrary library;
+};
+
+
+static DWORD getParentProcessId()
+{
+ HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+ if (hSnapshot == INVALID_HANDLE_VALUE) {
+ qErrnoWarning(GetLastError(), "CreateToolhelp32Snapshot failed.");
+ return NULL;
+ }
+
+ PROCESSENTRY32 pe = {0};
+ pe.dwSize = sizeof(PROCESSENTRY32);
+
+ if (!Process32First(hSnapshot, &pe)) {
+ qWarning("Cannot retrieve parent process handle.");
+ return NULL;
+ }
+
+ DWORD parentPid = NULL;
+ const DWORD pid = GetCurrentProcessId();
+ do {
+ if (pe.th32ProcessID == pid) {
+ parentPid = pe.th32ParentProcessID;
+ break;
+ }
+ } while (Process32Next(hSnapshot, &pe));
+ CloseHandle(hSnapshot);
+ return parentPid;
+}
+
+void initDpiAwareness()
+{
+ ShcoreDLL shcore;
+ if (shcore.isValid()) {
+ DpiAwareness dpiAwareness = PROCESS_PER_MONITOR_DPI_AWARE;
+ const DWORD pid = getParentProcessId();
+ if (pid) {
+ HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
+ DpiAwareness parentDpiAwareness;
+ HRESULT hr = shcore.getProcessDpiAwareness(hProcess, &parentDpiAwareness);
+ CloseHandle(hProcess);
+ if (hr == S_OK)
+ dpiAwareness = parentDpiAwareness;
+ }
+ if (shcore.setProcessDpiAwareness(dpiAwareness) != S_OK)
+ qErrnoWarning(GetLastError(), "SetProcessDPIAwareness failed.");
+ } else {
+ // Fallback. Use SetProcessDPIAware unconditionally.
+ User32DLL user32;
+ if (user32.isValid())
+ user32.setProcessDPIAware();
+ }
+}
diff --git a/src/webengine/api/qquickwebenginenewviewrequest.cpp b/src/webengine/api/qquickwebenginenewviewrequest.cpp
index 893df7f46..6e20c0a46 100644
--- a/src/webengine/api/qquickwebenginenewviewrequest.cpp
+++ b/src/webengine/api/qquickwebenginenewviewrequest.cpp
@@ -69,7 +69,7 @@ QQuickWebEngineView::NewViewDestination QQuickWebEngineNewViewRequest::destinati
}
/*!
- \qmlproperty bool WebEngineNewViewRequest::isUserInitiated
+ \qmlproperty bool WebEngineNewViewRequest::userInitiated
Whether this window request was directly triggered as the result of a keyboard or mouse event.
Use this property to block possibly unwanted \e popups.
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp
index 2edebdfeb..07deeeefc 100644
--- a/src/webenginewidgets/api/qwebengineprofile.cpp
+++ b/src/webenginewidgets/api/qwebengineprofile.cpp
@@ -199,7 +199,7 @@ void QWebEngineProfilePrivate::downloadUpdated(const DownloadItemInfo &info)
*/
QWebEngineProfile::QWebEngineProfile(QObject *parent)
: QObject(parent)
- , d_ptr(new QWebEngineProfilePrivate(new BrowserContextAdapter(false)))
+ , d_ptr(new QWebEngineProfilePrivate(new BrowserContextAdapter(true)))
{
d_ptr->q_ptr = this;
}
diff --git a/tests/auto/widgets/qwebengineprofile/qwebengineprofile.pro b/tests/auto/widgets/qwebengineprofile/qwebengineprofile.pro
new file mode 100644
index 000000000..e56bbe8f7
--- /dev/null
+++ b/tests/auto/widgets/qwebengineprofile/qwebengineprofile.pro
@@ -0,0 +1,3 @@
+include(../tests.pri)
+exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc
+QT *= core-private gui-private
diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
new file mode 100644
index 000000000..09929d33f
--- /dev/null
+++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "../util.h"
+#include <QtTest/QtTest>
+#include <qwebengineprofile.h>
+
+class tst_QWebEngineProfile : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void defaultProfile();
+ void profileConstructors();
+};
+
+void tst_QWebEngineProfile::defaultProfile()
+{
+ QWebEngineProfile *profile = QWebEngineProfile::defaultProfile();
+ QVERIFY(profile);
+ QVERIFY(!profile->isOffTheRecord());
+ QCOMPARE(profile->storageName(), QStringLiteral("Default"));
+ QCOMPARE(profile->httpCacheType(), QWebEngineProfile::DiskHttpCache);
+ QCOMPARE(profile->persistentCookiesPolicy(), QWebEngineProfile::AllowPersistentCookies);
+}
+
+void tst_QWebEngineProfile::profileConstructors()
+{
+ QWebEngineProfile otrProfile;
+ QWebEngineProfile diskProfile(QStringLiteral("Test"));
+
+ QVERIFY(otrProfile.isOffTheRecord());
+ QVERIFY(!diskProfile.isOffTheRecord());
+ QCOMPARE(diskProfile.storageName(), QStringLiteral("Test"));
+ QCOMPARE(otrProfile.httpCacheType(), QWebEngineProfile::MemoryHttpCache);
+ QCOMPARE(diskProfile.httpCacheType(), QWebEngineProfile::DiskHttpCache);
+ QCOMPARE(otrProfile.persistentCookiesPolicy(), QWebEngineProfile::NoPersistentCookies);
+ QCOMPARE(diskProfile.persistentCookiesPolicy(), QWebEngineProfile::AllowPersistentCookies);
+
+}
+
+QTEST_MAIN(tst_QWebEngineProfile)
+#include "tst_qwebengineprofile.moc"
diff --git a/tests/auto/widgets/widgets.pro b/tests/auto/widgets/widgets.pro
index b2df0880d..aaafcb6e5 100644
--- a/tests/auto/widgets/widgets.pro
+++ b/tests/auto/widgets/widgets.pro
@@ -5,8 +5,9 @@ CONFIG += ordered
SUBDIRS += \
qwebengineaccessibility \
qwebenginepage \
- qwebenginehistoryinterface \
- qwebengineview \
qwebenginehistory \
+ qwebenginehistoryinterface \
qwebengineinspector \
+ qwebengineprofile \
qwebenginescript \
+ qwebengineview