Skip to content

Commit f3fada9

Browse files
authored
Merge pull request #2748 from brandonpage/missing-user-agent
Fix missing webview user agent.
2 parents c3dbc57 + fa825db commit f3fada9

2 files changed

Lines changed: 39 additions & 5 deletions

File tree

libs/SalesforceSDK/src/com/salesforce/androidsdk/ui/LoginActivity.kt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ import kotlinx.coroutines.Dispatchers.Default
152152
import kotlinx.coroutines.Dispatchers.IO
153153
import kotlinx.coroutines.launch
154154
import org.json.JSONObject
155+
import java.lang.String.format
155156
import java.net.URI
156157
import java.net.URLDecoder
157158
import java.net.URLEncoder
@@ -180,8 +181,10 @@ open class LoginActivity : FragmentActivity() {
180181
by viewModels { SalesforceSDKManager.getInstance().loginViewModelFactory }
181182

182183
// Webview and Clients
183-
protected open val webViewClient = AuthWebViewClient()
184-
protected open val webChromeClient = WebChromeClient()
184+
@VisibleForTesting(otherwise = PROTECTED)
185+
open val webViewClient = AuthWebViewClient()
186+
@VisibleForTesting(otherwise = PROTECTED)
187+
open val webChromeClient = WebChromeClient()
185188
open val webView: WebView by lazy {
186189
WebView(this.baseContext).apply {
187190
layoutParams = ViewGroup.LayoutParams(
@@ -191,9 +194,16 @@ open class LoginActivity : FragmentActivity() {
191194
webViewClient = this@LoginActivity.webViewClient
192195
webChromeClient = this@LoginActivity.webChromeClient
193196
setBackgroundColor(Color.Transparent.toArgb())
194-
settings.domStorageEnabled = true /* Salesforce Welcome Discovery requires this */
195-
@SuppressLint("SetJavaScriptEnabled")
196-
settings.javaScriptEnabled = true
197+
settings.apply {
198+
domStorageEnabled = true /* Salesforce Welcome Discovery requires this */
199+
@SuppressLint("SetJavaScriptEnabled")
200+
javaScriptEnabled = true
201+
userAgentString = format(
202+
"%s %s",
203+
SalesforceSDKManager.getInstance().userAgent,
204+
userAgentString ?: "",
205+
)
206+
}
197207
}
198208
}
199209

libs/test/SalesforceSDKTest/src/com/salesforce/androidsdk/ui/LoginActivityTest.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ package com.salesforce.androidsdk.ui
2828

2929
import android.content.Intent
3030
import android.net.Uri.parse
31+
import android.webkit.WebView
3132
import androidx.core.net.toUri
3233
import androidx.test.core.app.ActivityScenario.launch
3334
import androidx.test.core.app.ApplicationProvider.getApplicationContext
@@ -163,4 +164,27 @@ class LoginActivityTest {
163164
}
164165
}
165166
}
167+
168+
@Test
169+
fun testWebviewSettings() {
170+
launch<LoginActivity>(
171+
Intent(
172+
getApplicationContext(),
173+
LoginActivity::class.java
174+
)
175+
).use { activityScenario ->
176+
177+
activityScenario.onActivity { activity ->
178+
val defaultWebview = WebView(activity)
179+
val expectedUserAgent = "${SalesforceSDKManager.getInstance().userAgent} ${defaultWebview.settings.userAgentString}"
180+
181+
assertEquals(activity.webViewClient, activity.webView.webViewClient)
182+
assertEquals(activity.webChromeClient, activity.webView.webChromeClient)
183+
184+
assertTrue(activity.webView.settings.domStorageEnabled)
185+
assertTrue(activity.webView.settings.javaScriptEnabled)
186+
assertEquals(expectedUserAgent, activity.webView.settings.userAgentString)
187+
}
188+
}
189+
}
166190
}

0 commit comments

Comments
 (0)