diff --git a/app/browser/extensions.ts b/app/browser/extensions.ts
index 5be96c3f..1fd586c8 100644
--- a/app/browser/extensions.ts
+++ b/app/browser/extensions.ts
@@ -1,11 +1,12 @@
import fs from 'fs-extra'
import path from 'path'
-import { app, session, componentUpdater, ipcMain, BrowserWindow } from 'electron'
+import { app, componentUpdater, ipcMain, BrowserWindow } from 'electron'
import * as settings from 'electron-settings'
import log from './log'
import * as widevine from 'constants/widevine'
import { fileUrl } from 'utils/appUrl'
import * as walkdir from 'walkdir'
+import { getMediaSession } from './session'
const extVerRegex = /^[\d._]+$/
const isExtVersion = (dirName: string) => !!extVerRegex.exec(dirName)
@@ -44,7 +45,6 @@ const disableExtension = (session: Electron.session, extId: string) => {
}
const getActiveExtensions = () => Array.from(activeExtensions)
-const getSession = () => session.fromPartition('persist:mediaplayer', { cache: true })
const APP_EXTENSIONS = new Set([
'dfmpchfgfkhhkigicpheeacmlkbomihe' /*enhanced-media-viewer*/,
@@ -63,7 +63,7 @@ export function initExtensions() {
loadComponents()
}
- const mediaSession = getSession()
+ const mediaSession = getMediaSession()
loadMediaExtensions(mediaSession)
loadVendorExtensions(mediaSession)
initIpc(mediaSession)
@@ -84,7 +84,7 @@ function initProcessListeners() {
})
if (isVendorExtension(info) && !activeExtensions.has(info.id)) {
- disableExtension(getSession(), info.id)
+ disableExtension(getMediaSession(), info.id)
}
})
@@ -264,7 +264,7 @@ function ipcError(sender: Electron.WebContents, err: Error) {
async function ipcSet(event: Electron.Event, extId: string, enable: boolean) {
log.debug(`[Extension] Setting extension ${extId} to ${enable}`)
- const session = getSession()
+ const session = getMediaSession()
if (enable) {
enableExtension(session, extId)
} else {
@@ -278,7 +278,7 @@ function ipcStatus(event: Electron.Event) {
}
function ipcReload(event: Electron.Event) {
- loadVendorExtensions(getSession())
+ loadVendorExtensions(getMediaSession())
onExtensionsChange()
}
diff --git a/app/browser/session.ts b/app/browser/session.ts
new file mode 100644
index 00000000..78fac2c9
--- /dev/null
+++ b/app/browser/session.ts
@@ -0,0 +1,11 @@
+import { session } from 'electron'
+import { WEBVIEW_PARTITION } from 'constants/http'
+
+let mediaSession: Electron.Session
+
+export const getMediaSession = () => {
+ if (!mediaSession) {
+ mediaSession = session.fromPartition(WEBVIEW_PARTITION, { cache: true })
+ }
+ return mediaSession
+}
diff --git a/app/constants/http.ts b/app/constants/http.ts
index 34c15683..5acc9773 100644
--- a/app/constants/http.ts
+++ b/app/constants/http.ts
@@ -9,6 +9,13 @@ const defaultUserAgent =
const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : defaultUserAgent
export const MEDIA_USER_AGENT = `${userAgent} (Googlebot)`
+/**
+ * User agent override to prevent sniffing from breaking apps until
+ * issue #1 can be resolved.
+ */
+export const MEDIA_SESSION_USER_AGENT =
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'
+
export const APP_WEBSITE = 'https://getmetastream.com/'
export const MEDIA_REFERRER = APP_WEBSITE
diff --git a/app/renderer/components/browser/WebBrowser.tsx b/app/renderer/components/browser/WebBrowser.tsx
index fb9ef728..01e62358 100644
--- a/app/renderer/components/browser/WebBrowser.tsx
+++ b/app/renderer/components/browser/WebBrowser.tsx
@@ -11,8 +11,6 @@ import { IReactReduxProps } from 'types/redux-thunk'
const { ipcRenderer, remote } = chrome
const DEFAULT_URL = absoluteUrl('./browser/resources/homescreen.html')
-// const DEFAULT_URL = 'https://www.google.com/';
-// const DEFAULT_URL = 'data:text/html,B R O W S E R';
interface IProps {
className?: string
diff --git a/app/renderer/components/lobby/VideoPlayer.tsx b/app/renderer/components/lobby/VideoPlayer.tsx
index bba7682d..f5084a1a 100644
--- a/app/renderer/components/lobby/VideoPlayer.tsx
+++ b/app/renderer/components/lobby/VideoPlayer.tsx
@@ -14,7 +14,7 @@ import { DispatchProp, connect } from 'react-redux'
import { PlaybackControls } from 'renderer/components/media/PlaybackControls'
import { setVolume } from 'renderer/actions/settings'
import { clamp } from 'utils/math'
-import { WEBVIEW_PARTITION, MEDIA_REFERRER } from 'constants/http'
+import { WEBVIEW_PARTITION, MEDIA_REFERRER, MEDIA_SESSION_USER_AGENT } from 'constants/http'
import { absoluteUrl } from 'utils/appUrl'
import { IAppState } from 'renderer/reducers'
import { getPlaybackTime2 } from 'renderer/lobby/reducers/mediaPlayer.helpers'
@@ -310,7 +310,10 @@ class _VideoPlayer extends PureComponent {
// this.updatePlayback(PlaybackState.Paused);
if (this.webContents) {
- this.webContents.loadURL(this.mediaUrl, { httpReferrer: this.httpReferrer })
+ this.webContents.loadURL(this.mediaUrl, {
+ httpReferrer: this.httpReferrer,
+ userAgent: MEDIA_SESSION_USER_AGENT
+ })
}
ipcRenderer.send('media-cleanup')