Snap for 13248265 from 1912cc6655cd5226eb632ba8a0c82871cf3aae10 to 25Q2-release Change-Id: Ia6d10a5c1fc4b3f16b9d9eeedbdc012a38d6a300
diff --git a/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java b/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java index 35efc23..6a4f732 100644 --- a/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java +++ b/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java
@@ -323,7 +323,7 @@ } } - private void logFooterButtonMetrics() { + private void logFooterButtonMetrics(PersistableBundle bundle) { if (VERSION.SDK_INT >= Build.VERSION_CODES.Q && activity != null && WizardManagerHelper.isAnySetupWizard(activity.getIntent()) @@ -351,7 +351,10 @@ PersistableBundle persistableBundle = PersistableBundles.mergeBundles( - footerBarMixin.getLoggingMetrics(), primaryButtonMetrics, secondaryButtonMetrics); + footerBarMixin.getLoggingMetrics(), + primaryButtonMetrics, + secondaryButtonMetrics, + bundle); SetupMetricsLogger.logCustomEvent( getContext(),
diff --git a/main/java/com/google/android/setupcompat/internal/LifecycleFragment.java b/main/java/com/google/android/setupcompat/internal/LifecycleFragment.java index ce4345d..6027d29 100644 --- a/main/java/com/google/android/setupcompat/internal/LifecycleFragment.java +++ b/main/java/com/google/android/setupcompat/internal/LifecycleFragment.java
@@ -47,7 +47,7 @@ /** Interface for listening to lifecycle changes of the fragment. */ public interface OnFragmentLifecycleChangeListener { - void onStop(); + void onStop(PersistableBundle bundle); } /** @@ -137,8 +137,12 @@ @Override public void onResume() { super.onResume(); - LOG.atDebug("onResume host=" + getActivity().getClass().getSimpleName()); startInNanos = ClockProvider.timeInNanos(); + LOG.atDebug( + "onResume host=" + + getActivity().getClass().getSimpleName() + + ", startInNanos=" + + startInNanos); logScreenResume(); } @@ -152,9 +156,16 @@ @Override public void onStop() { super.onStop(); - LOG.atDebug("onStop host=" + getActivity().getClass().getSimpleName()); - if (lifecycleChangeListener != null) { - lifecycleChangeListener.onStop(); + long onStopTimestamp = System.nanoTime(); + LOG.atDebug( + "onStop host=" + + getActivity().getClass().getSimpleName() + + ", onStopTimestamp=" + + onStopTimestamp); + if (VERSION.SDK_INT >= VERSION_CODES.Q && lifecycleChangeListener != null) { + PersistableBundle bundle = new PersistableBundle(); + bundle.putLong("onScreenStop", onStopTimestamp); + lifecycleChangeListener.onStop(bundle); } }
diff --git a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java index 7afa16d..7aa9cd4 100644 --- a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java +++ b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java
@@ -27,6 +27,7 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.GradientDrawable; +import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.os.PersistableBundle; import androidx.fragment.app.Fragment; @@ -55,6 +56,7 @@ import com.google.android.setupcompat.R; import com.google.android.setupcompat.internal.FooterButtonPartnerConfig; import com.google.android.setupcompat.internal.TemplateLayout; +import com.google.android.setupcompat.logging.CustomEvent; import com.google.android.setupcompat.logging.LoggingObserver; import com.google.android.setupcompat.logging.LoggingObserver.SetupCompatUiEvent.ButtonInflatedEvent; import com.google.android.setupcompat.logging.internal.FooterBarMixinMetrics; @@ -166,15 +168,24 @@ public void onVisibilityChanged(int visibility) { if (buttonContainer != null) { Button button = buttonContainer.findViewById(id); - if (button != null) { - button.setVisibility(visibility); - autoSetButtonBarVisibility(); - if (PartnerConfigHelper.isGlifExpressiveEnabled(context)) { - // Re-layout the buttons when visibility changes, especially when tertiary button is - // enabled to avoid the button layout is not correct. - repopulateButtons(); - } + if (button == null) { + LOG.atDebug("onVisibilityChanged: button is null, skiped."); + return; + } + + if (button.getVisibility() == visibility) { + LOG.atDebug("onVisibilityChanged: button visibility is not changed, skiped."); + return; + } + + button.setVisibility(visibility); + autoSetButtonBarVisibility(); + + if (PartnerConfigHelper.isGlifExpressiveEnabled(context)) { + // Re-layout the buttons when visibility changes, especially when tertiary button is + // enabled to avoid the button layout is not correct. + repopulateButtons(); } } } @@ -1442,15 +1453,19 @@ * Assigns logging metrics to bundle for PartnerCustomizationLayout to log metrics to SetupWizard. */ @TargetApi(VERSION_CODES.Q) + @SuppressLint("ObsoleteSdkInt") public PersistableBundle getLoggingMetrics() { LOG.atDebug("FooterBarMixin fragment name=" + hostFragmentName + ", Tag=" + hostFragmentTag); PersistableBundle persistableBundle = metrics.getMetrics(); - if (PartnerConfigHelper.isEnhancedSetupDesignMetricsEnabled(context)) { + if (VERSION.SDK_INT >= VERSION_CODES.Q + && PartnerConfigHelper.isEnhancedSetupDesignMetricsEnabled(context)) { if (hostFragmentName != null) { - persistableBundle.putString(KEY_HOST_FRAGMENT_NAME, hostFragmentName); + persistableBundle.putString( + KEY_HOST_FRAGMENT_NAME, CustomEvent.trimsStringOverMaxLength(hostFragmentName)); } if (hostFragmentTag != null) { - persistableBundle.putString(KEY_HOST_FRAGMENT_TAG, hostFragmentTag); + persistableBundle.putString( + KEY_HOST_FRAGMENT_TAG, CustomEvent.trimsStringOverMaxLength(hostFragmentTag)); } } return persistableBundle;