From 2f39a808fcdff8fddfe662be625c2ed3f1def5f9 Mon Sep 17 00:00:00 2001 From: David Liu Date: Wed, 18 Sep 2024 01:00:07 +0000 Subject: [PATCH] Fixed elapsed_time_millis in SettingsUIChanged event This change stores timestamp when received com.google.android.setupwizard.SETUP_WIZARD_FINISHED. This timestamp will be used to calculate elapsed_time_millis for SettingsUIChanged event after SUW complete. This enables to analyze how the user uses Settings in a specific time span after setup. Bug: 344466251 Test: metrics related change only Flag: EXEMPT metrics change only Change-Id: I85b15f1eb5e5a4502a27d8588bb01e59b7ad83b5 --- AndroidManifest.xml | 1 + src/com/android/settings/SettingsInitialize.java | 8 ++++++++ src/com/android/settings/SetupWizardUtils.java | 3 +++ .../src/com/android/settings/SettingsInitializeTest.java | 9 +++++++++ 4 files changed, 21 insertions(+) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index fd40e905fda..771337ff6dc 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -237,6 +237,7 @@ + diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java index 4887e26940c..254ef8c8b1a 100644 --- a/src/com/android/settings/SettingsInitialize.java +++ b/src/com/android/settings/SettingsInitialize.java @@ -39,6 +39,7 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.settings.activityembedding.ActivityEmbeddingUtils; +import com.android.settings.core.instrumentation.ElapsedTimeUtils; import com.android.settings.homepage.DeepLinkHomepageActivity; import com.android.settings.search.SearchStateReceiver; import com.android.settingslib.utils.ThreadUtils; @@ -69,6 +70,7 @@ public class SettingsInitialize extends BroadcastReceiver { webviewSettingSetup(context, pm, userInfo); ThreadUtils.postOnBackgroundThread(() -> refreshExistingShortcuts(context)); enableTwoPaneDeepLinkActivityIfNecessary(pm, context); + storeSuwCompleteTimestamp(context, broadcast); } private void managedProfileSetup(Context context, final PackageManager pm, Intent broadcast, @@ -161,4 +163,10 @@ public class SettingsInitialize extends BroadcastReceiver { pm.setComponentEnabledSetting(searchStateReceiver, enableState, PackageManager.DONT_KILL_APP); } + + private void storeSuwCompleteTimestamp(Context context, Intent broadcast) { + if (SetupWizardUtils.ACTION_SETUP_WIZARD_FINISHED.equals(broadcast.getAction())) { + ElapsedTimeUtils.storeSuwFinishedTimestamp(context, System.currentTimeMillis()); + } + } } diff --git a/src/com/android/settings/SetupWizardUtils.java b/src/com/android/settings/SetupWizardUtils.java index 25e91598f3b..57adeee895d 100644 --- a/src/com/android/settings/SetupWizardUtils.java +++ b/src/com/android/settings/SetupWizardUtils.java @@ -32,6 +32,9 @@ import java.util.Arrays; public class SetupWizardUtils { + public static final String ACTION_SETUP_WIZARD_FINISHED = + "com.google.android.setupwizard.SETUP_WIZARD_FINISHED"; + public static String getThemeString(Intent intent) { String theme = intent.getStringExtra(WizardManagerHelper.EXTRA_THEME); if (theme == null) { diff --git a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java index a8f42c2b7c7..467436b2566 100644 --- a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java +++ b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java @@ -24,6 +24,7 @@ import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; +import com.android.settings.core.instrumentation.ElapsedTimeUtils; import java.util.Collections; import org.junit.Before; import org.junit.Test; @@ -96,4 +97,12 @@ public class SettingsInitializeTest { assertThat(updatedShortcuts).hasSize(1); assertThat(updatedShortcuts.get(0)).isSameInstanceAs(info); } + + @Test + public void onReceive_suwFinished_shouldHaveElapsedTime() { + mSettingsInitialize.onReceive(mContext, new Intent(SetupWizardUtils.ACTION_SETUP_WIZARD_FINISHED)); + + final long elapsedTime = ElapsedTimeUtils.getElapsedTime(System.currentTimeMillis()); + assertThat(elapsedTime).isNotEqualTo(-1L); + } }