From 5b322e9befe115fedb4f1c22e51474b885f9a558 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Mon, 31 Dec 2018 16:02:24 +0100 Subject: android: add request desktop site toggle (#224) Provide a menu item - to change the user agent platform from Android to X11 Linux - drop the 'Mobile' keyword from the user agent - change view port to desktop behavior --- .../org/midori_browser/midori/BrowserActivity.kt | 22 +++++++++++++++++++++- app/src/main/res/menu/app_menu.xml | 3 +++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/midori_browser/midori/BrowserActivity.kt b/app/src/main/java/org/midori_browser/midori/BrowserActivity.kt index 337301f1..8eefda7e 100644 --- a/app/src/main/java/org/midori_browser/midori/BrowserActivity.kt +++ b/app/src/main/java/org/midori_browser/midori/BrowserActivity.kt @@ -31,7 +31,7 @@ class BrowserActivity : AppCompatActivity() { val webSettings = webView.settings webSettings.javaScriptEnabled = true - webSettings.userAgentString += " " + getString(R.string.userAgentVersion) + requestDesktopSite(false) webSettings.databaseEnabled = true webSettings.setAppCacheEnabled(true) webSettings.domStorageEnabled = true @@ -106,6 +106,20 @@ class BrowserActivity : AppCompatActivity() { } val completion = listOf("www.midori-browser.org", "example.com", "duckduckgo.com") + fun requestDesktopSite(desktopSite: Boolean) { + webView.settings.apply { + userAgentString = null // Reset to default + userAgentString = userAgentString + " " + getString(R.string.userAgentVersion) + if (desktopSite) { + // Websites look for "Android" and "Mobile" keywords to decide what's not desktop + val mobileOS = userAgentString.substring(userAgentString.indexOf("("), userAgentString.indexOf(")") + 1) + userAgentString = userAgentString.replace(mobileOS, "(X11; Linux x86_64)").replace(" Mobile", "") + } + useWideViewPort = desktopSite + loadWithOverviewMode = desktopSite + } + } + override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.app_menu, menu) @@ -129,6 +143,12 @@ class BrowserActivity : AppCompatActivity() { webView.clearCache(true) true } + R.id.actionRequestDesktopSite -> { + item.isChecked = !item.isChecked + requestDesktopSite(item.isChecked) + webView.reload() + true + } else -> { super.onOptionsItemSelected(item) } diff --git a/app/src/main/res/menu/app_menu.xml b/app/src/main/res/menu/app_menu.xml index ae19d8b1..1358707a 100644 --- a/app/src/main/res/menu/app_menu.xml +++ b/app/src/main/res/menu/app_menu.xml @@ -10,4 +10,7 @@ android:title="@string/actionClearPrivateData" android:icon="@drawable/ic_clear_private_data_24dp" app:showAsAction="ifRoom"/> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5d899290..17088d3d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,6 +5,7 @@ Share Clear Private Data + Request Desktop site Search or enter an address -- cgit v1.2.1