Description: try alternative locations for the Widevine CDM library:
  - $HOME/.local/lib/WidevineCdm/ (snap-friendly, see https://launchpad.net/bugs/1738149)
  - /opt/google/chrome/WidevineCdm/ (installed by official google chrome package)
 The manifest lives at the top level, whereas libwidevinecdm.so is inside
 a platform specific directory, see media::GetPlatformSpecificDirectory(…).
Author: Olivier Tilloy <olivier.tilloy@canonical.com>

--- a/chrome/common/chrome_paths.cc
+++ b/chrome/common/chrome_paths.cc
@@ -376,8 +376,17 @@ bool PathProvider(int key, base::FilePat
       cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
       break;
 
-#if defined(OS_LINUX) && BUILDFLAG(BUNDLE_WIDEVINE_CDM)
+#if defined(OS_LINUX) && BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
     case chrome::DIR_BUNDLED_WIDEVINE_CDM:
+      base::PathService::Get(base::DIR_HOME, &cur);
+      cur = cur.Append(FILE_PATH_LITERAL(".local/lib"))
+               .AppendASCII(kWidevineCdmBaseDirectory);
+      if (base::PathExists(cur))
+        break;
+      cur = base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome"))
+               .AppendASCII(kWidevineCdmBaseDirectory);
+      if (base::PathExists(cur))
+        break;
       if (!GetComponentDirectory(&cur))
         return false;
 #if !defined(OS_CHROMEOS)
@@ -386,7 +395,7 @@ bool PathProvider(int key, base::FilePat
       cur = cur.AppendASCII(kWidevineCdmBaseDirectory);
 #endif  // !defined(OS_CHROMEOS)
       break;
-#endif  // defined(OS_LINUX) && BUILDFLAG(BUNDLE_WIDEVINE_CDM)
+#endif  // defined(OS_LINUX) && BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
 
 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && \
     BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
