Fixed when CarLauncher calls reportFullyDrawn().

Fixes: 135195601

Test: manual - build and deploy, verify "Fully drawn" appears in logs.

Change-Id: Iddeca0ff8a2616c8322bc3f26f56b7f2499ced12
(cherry picked from commit 3a34a562eaf9125c4baf66077c9429e4c5739043)
diff --git a/src/com/android/car/carlauncher/CarLauncher.java b/src/com/android/car/carlauncher/CarLauncher.java
index 4cedf6f..5108215 100644
--- a/src/com/android/car/carlauncher/CarLauncher.java
+++ b/src/com/android/car/carlauncher/CarLauncher.java
@@ -55,18 +55,20 @@
  */
 public class CarLauncher extends FragmentActivity {
     private static final String TAG = "CarLauncher";
+    private static final boolean DEBUG = false;
 
     private ActivityView mActivityView;
-    private boolean mActivityViewReady = false;
-    private boolean mIsStarted = false;
+    private boolean mActivityViewReady;
+    private boolean mIsStarted;
 
     /** Set to {@code true} once we've logged that the Activity is fully drawn. */
-    private boolean mIsReadyLogged = false;
+    private boolean mIsReadyLogged;
 
     private final ActivityView.StateCallback mActivityViewCallback =
             new ActivityView.StateCallback() {
                 @Override
                 public void onActivityViewReady(ActivityView view) {
+                    if (DEBUG) Log.d(TAG, "onActivityViewReady(" + getUserId() + ")");
                     mActivityViewReady = true;
                     startMapsInActivityView();
                     maybeLogReady();
@@ -74,11 +76,16 @@
 
                 @Override
                 public void onActivityViewDestroyed(ActivityView view) {
+                    if (DEBUG) Log.d(TAG, "onActivityViewDestroyed(" + getUserId() + ")");
                     mActivityViewReady = false;
                 }
 
                 @Override
                 public void onTaskMovedToFront(int taskId) {
+                    if (DEBUG) {
+                        Log.d(TAG, "onTaskMovedToFront(" + getUserId() + "): started="
+                                + mIsStarted);
+                    }
                     try {
                         if (mIsStarted) {
                             ActivityManager am =
@@ -193,9 +200,21 @@
 
     /** Logs that the Activity is ready. Used for startup time diagnostics. */
     private void maybeLogReady() {
-        if (mActivityViewReady && !mIsReadyLogged) {
+        if (DEBUG) {
+            Log.d(TAG, "maybeLogReady(" + getUserId() + "): activityReady=" + mActivityViewReady
+                    + ", started=" + mIsStarted + ", alreadyLogged: " + mIsReadyLogged);
+        }
+        if (mActivityViewReady && mIsStarted) {
+            // We should report everytime - the Android framework will take care of logging just
+            // when it's effectivelly drawn for the first time, but....
             reportFullyDrawn();
-            mIsReadyLogged = true;
+            if (!mIsReadyLogged) {
+                // ... we want to manually check that the Log.i below (which is useful to show
+                // the user id) is only logged once (otherwise it would be logged everytime the user
+                // taps Home)
+                Log.i(TAG, "Launcher for user " + getUserId() + " is ready");
+                mIsReadyLogged = true;
+            }
         }
     }
 }