Skip to content

Commit 049c7bd

Browse files
authored
Fix UserAgent ANR (again) (#22174)
* Updated UserAgent to differentiate between API user agent and WebView user agent * Use apiUserAgent for network calls * Use webViewUserAgent for web views and cookie auth * Use apiUserAgent for RestClientUtils * Replaced userAgent.toString calls with webViewUserAgent * Removed unnecessary logging * Use webViewUserAgent for Blaze and auth * Added TODO * Removed toString() * Restored toString(), fixed UserAgentTest * Use webViewUserAgent for app passwords * Restored apiUserAgent for app passwords * Fixed broken GutenbergKitSettingsBuilderTest * Removed toString() now that tests have passed * Use apiUserAgent for User-Agent headers * Use apiUserAgent for User-Agent headers, p2
1 parent c42acd0 commit 049c7bd

32 files changed

+68
-69
lines changed

WordPress/src/androidTest/java/org/wordpress/android/UserAgentTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void setUp() {
3939

4040
@Test
4141
public void testGetUserAgentAndGetDefaultUserAgent() {
42-
String userAgent = mUserAgent.toString();
42+
String userAgent = mUserAgent.getWebViewUserAgent();
4343
assertNotNull("User-Agent must be set", userAgent);
4444
assertTrue("User-Agent must not be an empty string", userAgent.length() > 0);
4545
assertTrue("User-Agent must contain app name substring", userAgent.contains(USER_AGENT_APPNAME));

WordPress/src/main/java/org/wordpress/android/AppInitializer.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ class AppInitializer @Inject constructor(
322322
.installDefaultEventBus()
323323
}
324324

325-
RestClientUtils.setUserAgent(userAgent.toString())
325+
RestClientUtils.setUserAgent(userAgent.apiUserAgent)
326326

327327
if (!initialized) {
328328
zendeskHelper.setupZendesk(
@@ -380,8 +380,6 @@ class AppInitializer @Inject constructor(
380380
initAppOpsManager()
381381
}
382382

383-
AppLog.i(T.UTILS, "AppInitializer.userAgentString: $userAgent")
384-
385383
initialized = true
386384
}
387385

WordPress/src/main/java/org/wordpress/android/ui/WebViewActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public void handleOnBackPressed() {
7070
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
7171
// Setting this user agent makes Calypso sites hide any WordPress UIs (e.g. Masterbar, banners, etc.).
7272
if (mUserAgent != null) {
73-
mWebView.getSettings().setUserAgentString(mUserAgent.toString());
73+
mWebView.getSettings().setUserAgentString(mUserAgent.getWebViewUserAgent());
7474
}
7575
configureWebView();
7676

WordPress/src/main/java/org/wordpress/android/ui/blaze/BlazeFeatureUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class BlazeFeatureUtils @Inject constructor(
154154
)
155155
}
156156

157-
fun getUserAgent() = userAgent.toString()
157+
fun getUserAgent() = userAgent.webViewUserAgent
158158

159159
fun getAuthenticationPostData(authenticationUrl: String,
160160
urlToLoad: String,

WordPress/src/main/java/org/wordpress/android/ui/layoutpicker/LayoutPreviewFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ abstract class LayoutPreviewFragment : FullscreenBottomSheetDialogFragment() {
129129

130130
binding?.previewTypeSelectorButton?.setOnClickListener { viewModel.onPreviewModePressed() }
131131

132-
binding?.webView?.settings?.userAgentString = userAgent.toString()
132+
binding?.webView?.settings?.userAgentString = userAgent.webViewUserAgent
133133
binding?.webView?.webViewClient = object : WebViewClient() {
134134
override fun onPageFinished(view: WebView?, url: String?) {
135135
super.onPageFinished(view, url)

WordPress/src/main/java/org/wordpress/android/ui/media/ExoPlayerUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class ExoPlayerUtils @Inject constructor(
3434

3535
fun buildHttpDataSourceFactory(url: String): DefaultHttpDataSourceFactory {
3636
if (httpDataSourceFactory == null) {
37-
httpDataSourceFactory = DefaultHttpDataSourceFactory(userAgent.toString())
37+
httpDataSourceFactory = DefaultHttpDataSourceFactory(userAgent.webViewUserAgent)
3838
}
3939
httpDataSourceFactory?.defaultRequestProperties?.set(authenticationUtils.getAuthHeaders(url))
4040
return httpDataSourceFactory as DefaultHttpDataSourceFactory

WordPress/src/main/java/org/wordpress/android/ui/media/MediaSettingsActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,7 @@ private void saveMediaToDevice() {
10411041
}
10421042
request.allowScanningByMediaScanner();
10431043
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
1044-
request.addRequestHeader("User-Agent", mUserAgent.toString());
1044+
request.addRequestHeader("User-Agent", mUserAgent.getApiUserAgent());
10451045

10461046
mDownloadId = dm.enqueue(request);
10471047
invalidateOptionsMenu();

WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2514,7 +2514,7 @@ class EditPostActivity : BaseAppCompatActivity(), EditorFragmentActivity, Editor
25142514
siteModel.password,
25152515
siteModel.isUsingWpComRestApi,
25162516
siteModel.webEditor,
2517-
userAgent.toString(),
2517+
userAgent.webViewUserAgent,
25182518
isJetpackSsoEnabled
25192519
)
25202520

@@ -2540,7 +2540,7 @@ class EditPostActivity : BaseAppCompatActivity(), EditorFragmentActivity, Editor
25402540
editorMediaUploadListener = editorFragment as EditorMediaUploadListener?
25412541

25422542
// Set up custom headers for the visual editor's internal WebView
2543-
editorFragment?.setCustomHttpHeader("User-Agent", userAgent.toString())
2543+
editorFragment?.setCustomHttpHeader("User-Agent", userAgent.webViewUserAgent)
25442544
reattachUploadingMediaForAztec()
25452545
}
25462546
}

WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostAuthViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class EditPostAuthViewModel @Inject constructor(
3636
val authParams = WordPressCookieAuthenticator.AuthParams(
3737
username = accountStore.account.userName ?: "",
3838
bearerToken = accountStore.accessToken ?: "",
39-
userAgent = userAgent.toString()
39+
userAgent = userAgent.webViewUserAgent
4040
)
4141

4242
launch {

WordPress/src/main/java/org/wordpress/android/ui/posts/GutenbergKitActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2258,7 +2258,7 @@ class GutenbergKitActivity : BaseAppCompatActivity(), EditorImageSettingsListene
22582258
}
22592259

22602260
// Set up custom headers for the visual editor's internal WebView
2261-
editorFragment?.setCustomHttpHeader("User-Agent", userAgent.toString())
2261+
editorFragment?.setCustomHttpHeader("User-Agent", userAgent.webViewUserAgent)
22622262
}
22632263
VIEW_PAGER_PAGE_SETTINGS -> editPostSettingsFragment = fragment as EditPostSettingsFragment
22642264
}

0 commit comments

Comments
 (0)