diff --git a/quickstep/res/layout/activity_allset.xml b/quickstep/res/layout/activity_allset.xml
index 06dfa37263..0cae733dbe 100644
--- a/quickstep/res/layout/activity_allset.xml
+++ b/quickstep/res/layout/activity_allset.xml
@@ -72,12 +72,11 @@
= mNumSteps;
@@ -128,7 +133,7 @@ public class GestureSandboxActivity extends FragmentActivity {
}
mCurrentTutorialStep = mTutorialSteps[mCurrentStep];
mFragment = TutorialFragment.newInstance(
- mCurrentTutorialStep, /* gestureComplete= */ false, mSharedPrefs, mStatsLogManager);
+ mCurrentTutorialStep, /* gestureComplete= */ false);
getSupportFragmentManager().beginTransaction()
.replace(R.id.gesture_tutorial_fragment_container, mFragment)
.runOnCommit(() -> mFragment.onAttachedToWindow())
diff --git a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java
index e987d5a83b..95eafdae33 100644
--- a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java
@@ -18,10 +18,10 @@ package com.android.quickstep.interaction;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
-import android.content.SharedPreferences;
import android.view.MotionEvent;
import android.view.View;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.R;
@@ -33,10 +33,7 @@ import java.util.ArrayList;
/** Shows the Home gesture interactive tutorial. */
public class HomeGestureTutorialFragment extends TutorialFragment {
- protected HomeGestureTutorialFragment(
- SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
- super(sharedPrefs, statsLogManager);
- }
+ public HomeGestureTutorialFragment() {}
@Nullable
@Override
@@ -108,14 +105,14 @@ public class HomeGestureTutorialFragment extends TutorialFragment {
}
@Override
- void logTutorialStepShown() {
- mStatsLogManager.logger().log(
+ void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
+ statsLogManager.logger().log(
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_HOME_STEP_SHOWN);
}
@Override
- void logTutorialStepCompleted() {
- mStatsLogManager.logger().log(
+ void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
+ statsLogManager.logger().log(
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_HOME_STEP_COMPLETED);
}
}
diff --git a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java
index c7e24dbd7c..4e1521f161 100644
--- a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java
@@ -18,10 +18,10 @@ package com.android.quickstep.interaction;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
-import android.content.SharedPreferences;
import android.view.MotionEvent;
import android.view.View;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.R;
@@ -33,10 +33,7 @@ import java.util.ArrayList;
/** Shows the Overview gesture interactive tutorial. */
public class OverviewGestureTutorialFragment extends TutorialFragment {
- protected OverviewGestureTutorialFragment(
- SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
- super(sharedPrefs, statsLogManager);
- }
+ public OverviewGestureTutorialFragment() {}
@Nullable
@Override
@@ -120,14 +117,14 @@ public class OverviewGestureTutorialFragment extends TutorialFragment {
}
@Override
- void logTutorialStepShown() {
- mStatsLogManager.logger().log(
+ void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
+ statsLogManager.logger().log(
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_OVERVIEW_STEP_SHOWN);
}
@Override
- void logTutorialStepCompleted() {
- mStatsLogManager.logger().log(
+ void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
+ statsLogManager.logger().log(
StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_OVERVIEW_STEP_COMPLETED);
}
}
diff --git a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialFragment.java
index 92a27314bc..5183e2c961 100644
--- a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialFragment.java
@@ -15,20 +15,18 @@
*/
package com.android.quickstep.interaction;
-import android.content.SharedPreferences;
import android.view.MotionEvent;
import android.view.View;
+import androidx.annotation.NonNull;
+
import com.android.launcher3.logging.StatsLogManager;
import com.android.quickstep.interaction.TutorialController.TutorialType;
/** Shows the general navigation gesture sandbox environment. */
public class SandboxModeTutorialFragment extends TutorialFragment {
- protected SandboxModeTutorialFragment(
- SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
- super(sharedPrefs, statsLogManager);
- }
+ public SandboxModeTutorialFragment() {}
@Override
TutorialController createController(TutorialType type) {
@@ -49,12 +47,12 @@ public class SandboxModeTutorialFragment extends TutorialFragment {
}
@Override
- void logTutorialStepShown() {
+ void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
// No-Op: tutorial step not currently shown to users
}
@Override
- void logTutorialStepCompleted() {
+ void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
// No-Op: tutorial step not currently shown to users
}
}
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
index 7556bf4c29..33e800d1c0 100644
--- a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
@@ -60,9 +60,6 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
private static final String COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY =
"pref_completedTutorialSteps";
- private final SharedPreferences mSharedPrefs;
- protected final StatsLogManager mStatsLogManager;
-
TutorialType mTutorialType;
boolean mGestureComplete = false;
@Nullable TutorialController mTutorialController = null;
@@ -84,14 +81,10 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
private boolean mIsFoldable;
public static TutorialFragment newInstance(
- TutorialType tutorialType,
- boolean gestureComplete,
- SharedPreferences sharedPrefs,
- StatsLogManager statsLogManager) {
- TutorialFragment fragment =
- getFragmentForTutorialType(tutorialType, sharedPrefs, statsLogManager);
+ TutorialType tutorialType, boolean gestureComplete) {
+ TutorialFragment fragment = getFragmentForTutorialType(tutorialType);
if (fragment == null) {
- fragment = new BackGestureTutorialFragment(sharedPrefs, statsLogManager);
+ fragment = new BackGestureTutorialFragment();
tutorialType = TutorialType.BACK_NAVIGATION;
}
@@ -103,36 +96,28 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
}
@Nullable
- private static TutorialFragment getFragmentForTutorialType(
- TutorialType tutorialType,
- SharedPreferences sharedPrefs,
- StatsLogManager statsLogManager) {
+ private static TutorialFragment getFragmentForTutorialType(TutorialType tutorialType) {
switch (tutorialType) {
case BACK_NAVIGATION:
case BACK_NAVIGATION_COMPLETE:
- return new BackGestureTutorialFragment(sharedPrefs, statsLogManager);
+ return new BackGestureTutorialFragment();
case HOME_NAVIGATION:
case HOME_NAVIGATION_COMPLETE:
- return new HomeGestureTutorialFragment(sharedPrefs, statsLogManager);
+ return new HomeGestureTutorialFragment();
case OVERVIEW_NAVIGATION:
case OVERVIEW_NAVIGATION_COMPLETE:
- return new OverviewGestureTutorialFragment(sharedPrefs, statsLogManager);
+ return new OverviewGestureTutorialFragment();
case ASSISTANT:
case ASSISTANT_COMPLETE:
- return new AssistantGestureTutorialFragment(sharedPrefs, statsLogManager);
+ return new AssistantGestureTutorialFragment();
case SANDBOX_MODE:
- return new SandboxModeTutorialFragment(sharedPrefs, statsLogManager);
+ return new SandboxModeTutorialFragment();
default:
Log.e(LOG_TAG, "Failed to find an appropriate fragment for " + tutorialType.name());
}
return null;
}
- protected TutorialFragment(SharedPreferences sharedPrefs, StatsLogManager statsLogManager) {
- mSharedPrefs = sharedPrefs;
- mStatsLogManager = statsLogManager;
- }
-
@Nullable Integer getEdgeAnimationResId() {
return null;
}
@@ -340,7 +325,10 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
}
void onAttachedToWindow() {
- logTutorialStepShown();
+ StatsLogManager statsLogManager = getStatsLogManager();
+ if (statsLogManager != null) {
+ logTutorialStepShown(statsLogManager);
+ }
mEdgeBackGestureHandler.setViewGroupParent(getRootView());
}
@@ -374,14 +362,20 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
}
void continueTutorial() {
- Set updatedCompletedSteps = new ArraySet<>(mSharedPrefs.getStringSet(
- COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, new ArraySet<>()));
+ SharedPreferences sharedPrefs = getSharedPreferences();
+ if (sharedPrefs != null) {
+ Set updatedCompletedSteps = new ArraySet<>(sharedPrefs.getStringSet(
+ COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, new ArraySet<>()));
- updatedCompletedSteps.add(mTutorialType.toString());
+ updatedCompletedSteps.add(mTutorialType.toString());
- mSharedPrefs.edit().putStringSet(
- COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, updatedCompletedSteps).apply();
- logTutorialStepCompleted();
+ sharedPrefs.edit().putStringSet(
+ COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY, updatedCompletedSteps).apply();
+ }
+ StatsLogManager statsLogManager = getStatsLogManager();
+ if (statsLogManager != null) {
+ logTutorialStepCompleted(statsLogManager);
+ }
GestureSandboxActivity gestureSandboxActivity = getGestureSandboxActivity();
if (gestureSandboxActivity == null) {
@@ -397,9 +391,15 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
void closeTutorial(boolean tutorialSkipped) {
if (tutorialSkipped) {
- mSharedPrefs.edit().putBoolean(TUTORIAL_SKIPPED_PREFERENCE_KEY, true).apply();
- mStatsLogManager.logger().log(
- StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_SKIPPED);
+ SharedPreferences sharedPrefs = getSharedPreferences();
+ if (sharedPrefs != null) {
+ sharedPrefs.edit().putBoolean(TUTORIAL_SKIPPED_PREFERENCE_KEY, true).apply();
+ }
+ StatsLogManager statsLogManager = getStatsLogManager();
+ if (statsLogManager != null) {
+ statsLogManager.logger().log(
+ StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_SKIPPED);
+ }
}
FragmentActivity activity = getActivity();
if (activity != null) {
@@ -433,9 +433,9 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
|| (mTutorialController != null && mTutorialController.isGestureCompleted());
}
- abstract void logTutorialStepShown();
+ abstract void logTutorialStepShown(@NonNull StatsLogManager statsLogManager);
- abstract void logTutorialStepCompleted();
+ abstract void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager);
@Nullable
private GestureSandboxActivity getGestureSandboxActivity() {
@@ -443,4 +443,18 @@ abstract class TutorialFragment extends Fragment implements OnTouchListener {
return context instanceof GestureSandboxActivity ? (GestureSandboxActivity) context : null;
}
+
+ @Nullable
+ private StatsLogManager getStatsLogManager() {
+ GestureSandboxActivity activity = getGestureSandboxActivity();
+
+ return activity != null ? activity.getStatsLogManager() : null;
+ }
+
+ @Nullable
+ private SharedPreferences getSharedPreferences() {
+ GestureSandboxActivity activity = getGestureSandboxActivity();
+
+ return activity != null ? activity.getSharedPrefs() : null;
+ }
}