Snap for 8026873 from 15c9d2d4f698eac3895f75e6861a016dfe1732ee to sc-v2-release
Change-Id: I94d583b75017c17df49361b75bd1e0f4639a8c45
diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml
index a43ac7f..7c5ca0d 100644
--- a/quickstep/res/values-nl/strings.xml
+++ b/quickstep/res/values-nl/strings.xml
@@ -42,7 +42,7 @@
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Sleep apps weg van de onderste rij om app-suggesties te ontvangen"</string>
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App-suggesties toegevoegd aan lege ruimte"</string>
<string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"App-suggesties staan aan"</string>
- <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"App-suggesties zijn uitgeschakeld"</string>
+ <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"App-suggesties staan uit"</string>
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Voorspelde app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Swipe helemaal vanaf de rechter- of linkerrand."</string>
<string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Swipe vanaf de rechter- of linkerrand naar het midden van het scherm en laat los."</string>
diff --git a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
index f9a0bb1..4d06956 100644
--- a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
+++ b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
@@ -64,6 +64,7 @@
import com.android.launcher3.shortcuts.ShortcutKey;
import com.android.launcher3.util.IntSparseArrayMap;
import com.android.launcher3.util.PersistedItemArray;
+import com.android.quickstep.logging.SettingsChangeLogger;
import com.android.quickstep.logging.StatsLogCompatManager;
import com.android.systemui.shared.system.SysUiStatsLog;
@@ -97,10 +98,12 @@
private final InvariantDeviceProfile mIDP;
private final AppEventProducer mAppEventProducer;
private final StatsManager mStatsManager;
+ private final Context mContext;
protected boolean mActive = false;
public QuickstepModelDelegate(Context context) {
+ mContext = context;
mAppEventProducer = new AppEventProducer(context, this::onAppTargetEvent);
mIDP = InvariantDeviceProfile.INSTANCE.get(context);
@@ -210,6 +213,7 @@
"Successfully logged %d workspace items with instanceId=%d",
itemsIdMap.size(), instanceId.getId()));
additionalSnapshotEvents(instanceId);
+ SettingsChangeLogger.INSTANCE.get(mContext).logSnapshot(instanceId);
return StatsManager.PULL_SUCCESS;
}
);
diff --git a/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java b/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
index 65847f1..a551f55 100644
--- a/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
+++ b/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
@@ -24,8 +24,6 @@
import com.android.launcher3.BuildConfig;
import com.android.launcher3.MainProcessInitializer;
-import com.android.launcher3.util.Executors;
-import com.android.quickstep.logging.SettingsChangeLogger;
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
import com.android.systemui.shared.system.ThreadedRendererCompat;
@@ -62,9 +60,5 @@
// Elevate GPU priority for Quickstep and Remote animations.
ThreadedRendererCompat.setContextPriority(
ThreadedRendererCompat.EGL_CONTEXT_PRIORITY_HIGH_IMG);
-
- // Initialize settings logger after a default timeout
- Executors.MAIN_EXECUTOR.getHandler()
- .postDelayed(() -> new SettingsChangeLogger(context), SETUP_DELAY_MILLIS);
}
}
diff --git a/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java b/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java
index 7ae0fc8..a0cd0d7 100644
--- a/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java
+++ b/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java
@@ -40,10 +40,11 @@
import com.android.launcher3.AutoInstallsLayout;
import com.android.launcher3.R;
import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.logging.InstanceIdSequence;
+import com.android.launcher3.logging.InstanceId;
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.logging.StatsLogManager.StatsLogger;
import com.android.launcher3.model.DeviceGridState;
+import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.SettingsCache;
import com.android.quickstep.SysUINavigationMode;
import com.android.quickstep.SysUINavigationMode.Mode;
@@ -53,12 +54,19 @@
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
+import java.util.Optional;
/**
* Utility class to log launcher settings changes
*/
public class SettingsChangeLogger implements
NavigationModeChangeListener, OnSharedPreferenceChangeListener {
+
+ /**
+ * Singleton instance
+ */
+ public static MainThreadInitializedObject<SettingsChangeLogger> INSTANCE =
+ new MainThreadInitializedObject<>(SettingsChangeLogger::new);
private static final String TAG = "SettingsChangeLogger";
private static final String ROOT_TAG = "androidx.preference.PreferenceScreen";
@@ -66,12 +74,15 @@
private final Context mContext;
private final ArrayMap<String, LoggablePref> mLoggablePrefs;
+ private final StatsLogManager mStatsLogManager;
private Mode mNavMode;
- private boolean mNotificationDotsEnabled;
+ private StatsLogManager.LauncherEvent mNotificationDotsEvent;
+ private StatsLogManager.LauncherEvent mHomeScreenSuggestionEvent;
- public SettingsChangeLogger(Context context) {
+ private SettingsChangeLogger(Context context) {
mContext = context;
+ mStatsLogManager = StatsLogManager.newInstance(mContext);
mLoggablePrefs = loadPrefKeys(context);
mNavMode = SysUINavigationMode.INSTANCE.get(context).addModeChangeListener(this);
@@ -118,14 +129,21 @@
}
private void onNotificationDotsChanged(boolean isDotsEnabled) {
- mNotificationDotsEnabled = isDotsEnabled;
- dispatchUserEvent();
+ StatsLogManager.LauncherEvent mEvent =
+ isDotsEnabled ? LAUNCHER_NOTIFICATION_DOT_ENABLED
+ : LAUNCHER_NOTIFICATION_DOT_DISABLED;
+
+ // Log only when the setting is actually changed and not during initialization.
+ if (mNotificationDotsEvent != null && mNotificationDotsEvent != mEvent) {
+ mStatsLogManager.logger().log(mNotificationDotsEvent);
+ }
+ mNotificationDotsEvent = mEvent;
}
@Override
public void onNavigationModeChanged(Mode newMode) {
mNavMode = newMode;
- dispatchUserEvent();
+ mStatsLogManager.logger().log(newMode.launcherEvent);
}
@Override
@@ -134,27 +152,27 @@
|| KEY_WORKSPACE_SIZE.equals(key)
|| KEY_THEMED_ICONS.equals(key)
|| mLoggablePrefs.containsKey(key)) {
- dispatchUserEvent();
+
+ mHomeScreenSuggestionEvent = getDevicePrefs(mContext)
+ .getBoolean(LAST_PREDICTION_ENABLED_STATE, true)
+ ? LAUNCHER_HOME_SCREEN_SUGGESTIONS_ENABLED
+ : LAUNCHER_HOME_SCREEN_SUGGESTIONS_DISABLED;
+
+ mStatsLogManager.logger().log(mHomeScreenSuggestionEvent);
}
}
- private void dispatchUserEvent() {
- StatsLogger logger = StatsLogManager.newInstance(mContext).logger()
- .withInstanceId(new InstanceIdSequence().newInstanceId());
+ /**
+ * Takes snapshot of all eligible launcher settings and log them with the provided instance ID.
+ */
+ public void logSnapshot(InstanceId snapshotInstanceId) {
+ StatsLogger logger = mStatsLogManager.logger().withInstanceId(snapshotInstanceId);
- logger.log(mNotificationDotsEnabled
- ? LAUNCHER_NOTIFICATION_DOT_ENABLED
- : LAUNCHER_NOTIFICATION_DOT_DISABLED);
- logger.log(mNavMode.launcherEvent);
- logger.log(getDevicePrefs(mContext).getBoolean(LAST_PREDICTION_ENABLED_STATE, true)
- ? LAUNCHER_HOME_SCREEN_SUGGESTIONS_ENABLED
- : LAUNCHER_HOME_SCREEN_SUGGESTIONS_DISABLED);
-
- StatsLogManager.LauncherEvent gridSizeChangedEvent =
- new DeviceGridState(mContext).getWorkspaceSizeEvent();
- if (gridSizeChangedEvent != null) {
- logger.log(gridSizeChangedEvent);
- }
+ Optional.ofNullable(mNotificationDotsEvent).ifPresent(logger::log);
+ Optional.ofNullable(mNavMode).map(mode -> mode.launcherEvent).ifPresent(logger::log);
+ Optional.ofNullable(mHomeScreenSuggestionEvent).ifPresent(logger::log);
+ Optional.ofNullable(new DeviceGridState(mContext).getWorkspaceSizeEvent()).ifPresent(
+ logger::log);
SharedPreferences prefs = getPrefs(mContext);
if (FeatureFlags.ENABLE_THEMED_ICONS.get()) {