From 50933b18ebfdb20673a93ab5ce262031402bd5ce Mon Sep 17 00:00:00 2001 From: Peter Birk Pakkenberg Date: Tue, 19 Jul 2022 08:29:46 +0000 Subject: [PATCH] Mark DeveloperUiService as foreground in onStartCommand The Webview DeveloperUiService is always started with Context.startForegroundService, which requires services to then call Service.startForeground within 5 seconds. This CL moves that second call to onStartCommand to make sure it is always called, as there are currently reports of it not being called in time, which causes app crashes. The javadoc change is replacing a } with a ). Fixed: b/237496875 Fixed: 1330024 Change-Id: Iad43ee83bdd88e83c5a4d70a0971f0e87153fe60 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3749201 Reviewed-by: Nate Fischer Reviewed-by: Peter Beverloo Commit-Queue: Peter Pakkenberg Cr-Commit-Position: refs/heads/main@{#1025617} --- .../android_webview/common/DeveloperModeUtils.java | 2 +- .../android_webview/services/DeveloperUiService.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/android_webview/java/src/org/chromium/android_webview/common/DeveloperModeUtils.java b/android_webview/java/src/org/chromium/android_webview/common/DeveloperModeUtils.java index eac1acd1303469..5918db0a0353dd 100644 --- a/android_webview/java/src/org/chromium/android_webview/common/DeveloperModeUtils.java +++ b/android_webview/java/src/org/chromium/android_webview/common/DeveloperModeUtils.java @@ -73,7 +73,7 @@ private static void startDeveloperUiService(String webViewPackageName) { /** * Fetch the flag overrides from the developer mode ContentProvider. This should only be called - * if {@link #isDeveloperModeEnabled(String}} returns {@code true}, otherwise this may incur + * if {@link #isDeveloperModeEnabled(String)} returns {@code true}, otherwise this may incur * unnecessary IPC or start up processes unnecessarily. * * @param webViewPackageName the package name of the WebView implementation to fetch the flags diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java index dee9cc358e9b35..dc22e8b1e1a4a9 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java @@ -106,6 +106,15 @@ public void setFlagOverrides(Map overriddenFlags) { } }; + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + final int mode = super.onStartCommand(intent, flags, startId); + // Service is always expected to run in foreground, so mark as such when it is started. + // Subsequent calls will simply replace the foreground service notification. + markAsForegroundService(); + return mode; + } + /** * Static method to fetch the flag overrides. If this returns an empty map, this will * asynchronously restart the Service to disable developer mode. @@ -287,7 +296,6 @@ private void enableDeveloperMode() { } else { startService(intent); } - markAsForegroundService(); ComponentName developerModeState = new ComponentName(this, DeveloperModeUtils.DEVELOPER_MODE_STATE_COMPONENT);