From 7f545a19dcb52073bc22d2bb59e6cb4beecac4a6 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Fri, 28 Dec 2018 22:15:08 -0500 Subject: Switch default user agent to android, resolves #1245, #1229 --- .../main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt | 11 +++++------ .../main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt | 7 +++++-- .../com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt | 13 ++++++------- .../kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt | 2 +- 4 files changed, 17 insertions(+), 16 deletions(-) (limited to 'app/src') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt index b6207a7b..1d6937f7 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt @@ -28,13 +28,12 @@ fun profilePictureUrl(id: Long) = "https://graph.facebook.com/$id/picture?type=l const val FB_LOGIN_URL = "${FB_URL_BASE}login" const val FB_HOME_URL = "${FB_URL_BASE}home.php" +// Default user agent const val USER_AGENT_FULL = - "Mozilla/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-G900T Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36" -const val USER_AGENT_BASIC_OLD = - "Mozilla/5.0 (Linux; Android 6.0) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.4633 Mobile Safari/537.10+" -const val USER_AGENT_MESSENGER = - "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -const val USER_AGENT_BASIC = USER_AGENT_MESSENGER + "Mozilla/5.0 (Linux; Android 7.1; Mi A1 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36" +// Basic user agent; non mobile version +const val USER_AGENT_BASIC = + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" /** * Animation transition delay, just to ensure that the styles diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt index b15ad5cf..0e9d94e6 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt @@ -28,7 +28,9 @@ import com.pitchedapps.frost.contracts.FrostContentContainer import com.pitchedapps.frost.contracts.FrostContentCore import com.pitchedapps.frost.contracts.FrostContentParent import com.pitchedapps.frost.facebook.FB_HOME_URL +import com.pitchedapps.frost.facebook.FbItem import com.pitchedapps.frost.facebook.USER_AGENT_BASIC +import com.pitchedapps.frost.facebook.USER_AGENT_FULL import com.pitchedapps.frost.fragments.WebFragment import com.pitchedapps.frost.utils.Prefs import com.pitchedapps.frost.utils.frostDownload @@ -63,8 +65,9 @@ class FrostWebView @JvmOverloads constructor( @SuppressLint("SetJavaScriptEnabled") override fun bind(container: FrostContentContainer): View { - if (parent.baseEnum != null || parent.baseUrl.shouldUseBasicAgent) - userAgentString = USER_AGENT_BASIC // go through our own agent ref + userAgentString = + if (parent.baseEnum == FbItem.MESSAGES || parent.baseUrl.shouldUseBasicAgent) USER_AGENT_BASIC + else USER_AGENT_FULL with(settings) { javaScriptEnabled = true allowFileAccess = true diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt index e2d294f7..490c02e5 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt @@ -84,7 +84,7 @@ fun FrostWebView.requestWebOverlay(url: String): Boolean { context.launchWebOverlayBasic(url) return true } - if (context is WebOverlayBasicActivity && !shouldUseBasic) { + if (userAgentString == USER_AGENT_BASIC && !shouldUseBasic) { L.i { "Switch from basic agent" } context.launchWebOverlay(url) return true @@ -105,10 +105,9 @@ val messageWhitelist: Set = .mapTo(mutableSetOf(), FbItem::url) val String.shouldUseBasicAgent: Boolean - get() { - if (contains("story.php")) // do not use basic for comment section - return false - if (contains("/events/")) // do not use for events (namely the map) - return false - return true // use for everything else + get() = when { + contains("story.php") -> false // do not use basic for comment section + contains("/events/") -> false // do not use for events (namely the map) + contains("/messages") -> true // must use for messages + else -> false // default to normal user agent } diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt index cb212b0a..ab97c0a8 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt @@ -72,7 +72,7 @@ open class FrostWebViewClient(val web: FrostWebView) : BaseWebViewClient() { override fun onPageStarted(view: WebView, url: String?, favicon: Bitmap?) { super.onPageStarted(view, url, favicon) if (url == null) return - v { "loading $url" } + v { "loading $url ${web.settings.userAgentString}" } refresh.offer(true) } -- cgit v1.2.3