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);
+    }
 }