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
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fd40e90..771337f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -237,6 +237,7 @@
<intent-filter>
<action android:name="android.intent.action.USER_INITIALIZE"/>
<action android:name="android.intent.action.PRE_BOOT_COMPLETED"/>
+ <action android:name="com.google.android.setupwizard.SETUP_WIZARD_FINISHED"/>
</intent-filter>
</receiver>
diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index 4887e26..254ef8c 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -39,6 +39,7 @@
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 @@
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 @@
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 25e9159..57adeee 100644
--- a/src/com/android/settings/SetupWizardUtils.java
+++ b/src/com/android/settings/SetupWizardUtils.java
@@ -32,6 +32,9 @@
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 a8f42c2..467436b 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.ShortcutManager;
+import com.android.settings.core.instrumentation.ElapsedTimeUtils;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
@@ -96,4 +97,12 @@
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);
+ }
}