diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-04-10 09:56:03 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-04-10 09:56:03 +0200 |
commit | bcc1ea10c7fc5e2e5192d0e56c626c855dbe8eac (patch) | |
tree | 390c71d3c9dc60ab05ee08fe3bf835d79a2b4a0a | |
parent | bebc5a1c6ff9968bf8b06ca74a76b0618a57700b (diff) | |
parent | 9136c16ae640aec8ab393237ce1a1c7f89c8bb1d (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I75f7bbf5e5a4d4ed3bf7bfbfb76162de8a89e6fa
-rw-r--r-- | src/core/content_client_qt.cpp | 31 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginesettings.cpp | 8 | ||||
-rw-r--r-- | src/webengine/doc/src/external-resources.qdoc | 5 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 17 | ||||
-rw-r--r-- | src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc | 8 |
5 files changed, 61 insertions, 8 deletions
diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp index 1ab7e5d8e..80eb9ceb1 100644 --- a/src/core/content_client_qt.cpp +++ b/src/core/content_client_qt.cpp @@ -114,6 +114,15 @@ static QString getLocalAppDataDir() result = QDir::fromNativeSeparators(QString::fromWCharArray(path)); return result; } + +static QString getProgramFilesDir(bool x86Dir = false) +{ + QString result; + wchar_t path[MAX_PATH]; + if (SHGetSpecialFolderPath(0, path, x86Dir ? CSIDL_PROGRAM_FILESX86 : CSIDL_PROGRAM_FILES, FALSE)) + result = QDir::fromNativeSeparators(QString::fromWCharArray(path)); + return result; +} #endif #if QT_CONFIG(webengine_pepper_plugins) @@ -307,6 +316,28 @@ static bool IsWidevineAvailable(base::FilePath *cdm_path, } } #elif defined(Q_OS_WIN) + const QString googleChromeDir = QLatin1String("/Google/Chrome/Application"); + const QStringList programFileDirs{getProgramFilesDir() + googleChromeDir, + getProgramFilesDir(true) + googleChromeDir}; + for (const QString &dir : programFileDirs) { + QDir d(dir); + if (d.exists()) { + QFileInfoList widevineVersionDirs = d.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::Reversed); + for (int i = 0; i < widevineVersionDirs.size(); ++i) { + QString versionDirPath(widevineVersionDirs.at(i).absoluteFilePath()); +#ifdef WIN64 + QString potentialWidevinePluginPath = versionDirPath + + "/WidevineCdm/_platform_specific/win_x64/" + + QString::fromLatin1(kWidevineCdmFileName); +#else + QString potentialWidevinePluginPath = versionDirPath + + "/WidevineCdm/_platform_specific/win_x86/" + + QString::fromLatin1(kWidevineCdmFileName); +#endif + pluginPaths << potentialWidevinePluginPath; + } + } + } QDir potentialWidevineDir(getLocalAppDataDir() + "/Google/Chrome/User Data/WidevineCDM"); if (potentialWidevineDir.exists()) { QFileInfoList widevineVersionDirs = potentialWidevineDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::Reversed); diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp index 9a102a504..78fbe16e8 100644 --- a/src/webengine/api/qquickwebenginesettings.cpp +++ b/src/webengine/api/qquickwebenginesettings.cpp @@ -404,10 +404,14 @@ bool QQuickWebEngineSettings::showScrollBars() const \qmlproperty bool WebEngineSettings::playbackRequiresUserGesture \since QtWebEngine 1.7 Inhibits playback of media content until the user interacts with - the page. Disabled by default. + the page. + + By default, Qt WebEngine uses Chromium settings, as described in + \l {Autoplay Policy Changes}. To overwrite the default behavior, + this property must be set to \c false. \note The behavior is similar to Chrome on Android when enabled, - and similar to Chrome on desktops when disabled (default). + and similar to Chrome on desktops when disabled. */ bool QQuickWebEngineSettings::playbackRequiresUserGesture() const { diff --git a/src/webengine/doc/src/external-resources.qdoc b/src/webengine/doc/src/external-resources.qdoc index 55f6a68a3..acf63fb04 100644 --- a/src/webengine/doc/src/external-resources.qdoc +++ b/src/webengine/doc/src/external-resources.qdoc @@ -139,3 +139,8 @@ \externalpage https://www.w3.org/TR/notifications \title Web Notifications API */ + +/*! + \externalpage https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + \title Autoplay Policy Changes +*/ diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index ad6196850..55fa6a078 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -2372,7 +2372,9 @@ void QWebEnginePage::javaScriptAlert(const QUrl &securityOrigin, const QString & { Q_UNUSED(securityOrigin); #if QT_CONFIG(messagebox) - QMessageBox::information(view(), QStringLiteral("Javascript Alert - %1").arg(url().toString()), msg); + QMessageBox::information(view(), + QStringLiteral("Javascript Alert - %1").arg(url().toString()), + msg.toHtmlEscaped()); #else Q_UNUSED(msg); #endif // QT_CONFIG(messagebox) @@ -2382,7 +2384,11 @@ bool QWebEnginePage::javaScriptConfirm(const QUrl &securityOrigin, const QString { Q_UNUSED(securityOrigin); #if QT_CONFIG(messagebox) - return (QMessageBox::information(view(), QStringLiteral("Javascript Confirm - %1").arg(url().toString()), msg, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok); + return (QMessageBox::information(view(), + QStringLiteral("Javascript Confirm - %1").arg(url().toString()), + msg.toHtmlEscaped(), + QMessageBox::Ok, + QMessageBox::Cancel) == QMessageBox::Ok); #else Q_UNUSED(msg); return false; @@ -2395,7 +2401,12 @@ bool QWebEnginePage::javaScriptPrompt(const QUrl &securityOrigin, const QString #if QT_CONFIG(inputdialog) bool ret = false; if (result) - *result = QInputDialog::getText(view(), QStringLiteral("Javascript Prompt - %1").arg(url().toString()), msg, QLineEdit::Normal, defaultValue, &ret); + *result = QInputDialog::getText(view(), + QStringLiteral("Javascript Prompt - %1").arg(url().toString()), + msg.toHtmlEscaped(), + QLineEdit::Normal, + defaultValue.toHtmlEscaped(), + &ret); return ret; #else Q_UNUSED(msg); diff --git a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc index 7043469a0..b83da9440 100644 --- a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc @@ -174,9 +174,11 @@ Enabled by default. (Added in Qt 5.10) \value PlaybackRequiresUserGesture Inhibits playback of media content until the user interacts with - the page. This is similar to how Chrome on Android behaves, while - the default behavior when it is disabled is similar to Chrome on desktops. - (Added in Qt 5.11) + the page. By default, WebEngine uses Chromium settings, as described + in \l {Autoplay Policy Changes}. This is similar to how Chrome on + Android behaves, while the default behavior when it is disabled is + similar to Chrome on desktops. To overwrite the default behavior, + disable this setting. (Added in Qt 5.11) \value JavascriptCanPaste Enables JavaScript \c{execCommand("paste")}. This also requires enabling JavascriptCanAccessClipboard. |