summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2020-03-24 09:13:45 +0100
committerAndy Shaw <andy.shaw@qt.io>2020-03-28 09:40:59 +0100
commit0223d2911cea5a8a412e4b8a625c19b8c8b7848b (patch)
tree15262bcba714aba345d62f2dd1cceb9a44a5217e
parent8947dc6902bfd2a8acd31b8c894407bf6a12695b (diff)
Windows: Look for the WidevineCdm plugin in the new Chrome locations
With the later versions of Chrome it will place the WidevineCdm plugin inside the Program Files folder, so we need to check in there for the plugin on Windows as well as the older locations. Change-Id: I4ce10536dbd4779a2c3631827a9cb3a5eb8cb7d0 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
-rw-r--r--src/core/content_client_qt.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp
index 22f3f548f..7274615ea 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);