Loading src/com/android/settings/SettingsInitialize.java +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ public class SettingsInitialize extends BroadcastReceiver { DeepLinkHomepageActivity.class); final ComponentName searchStateReceiver = new ComponentName(context, SearchStateReceiver.class); final int enableState = SplitController.getInstance().isSplitSupported() final int enableState = SplitController.getInstance(context).isSplitSupported() ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; pm.setComponentEnabledSetting(deepLinkHome, enableState, PackageManager.DONT_KILL_APP); Loading src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +53 −33 Original line number Diff line number Diff line Loading @@ -22,11 +22,11 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.util.FeatureFlagUtils; import android.util.LayoutDirection; import android.util.Log; import androidx.window.embedding.ActivityFilter; import androidx.window.embedding.ActivityRule; import androidx.window.embedding.SplitAttributes; import androidx.window.embedding.SplitController; import androidx.window.embedding.SplitPairFilter; import androidx.window.embedding.SplitPairRule; Loading @@ -49,6 +49,7 @@ import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockPattern; import com.android.settingslib.users.AvatarPickerActivity; import java.util.Collection; import java.util.HashSet; import java.util.Set; Loading @@ -63,7 +64,7 @@ public class ActivityEmbeddingRulesController { public ActivityEmbeddingRulesController(Context context) { mContext = context; mSplitController = SplitController.getInstance(); mSplitController = SplitController.getInstance(context); } /** Loading @@ -88,8 +89,8 @@ public class ActivityEmbeddingRulesController { ComponentName primaryComponent, ComponentName secondaryComponent, String secondaryIntentAction, int finishPrimaryWithSecondary, int finishSecondaryWithPrimary, SplitRule.FinishBehavior finishPrimaryWithSecondary, SplitRule.FinishBehavior finishSecondaryWithPrimary, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; Loading @@ -98,14 +99,20 @@ public class ActivityEmbeddingRulesController { filters.add(new SplitPairFilter(primaryComponent, secondaryComponent, secondaryIntentAction)); SplitController.getInstance().registerRule(new SplitPairRule(filters, finishPrimaryWithSecondary, finishSecondaryWithPrimary, clearTop, ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context), ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context), ActivityEmbeddingUtils.getSplitRatio(context), LayoutDirection.LOCALE)); SplitAttributes attributes = new SplitAttributes.Builder() .setSplitType(SplitAttributes.SplitType.ratio( ActivityEmbeddingUtils.getSplitRatio(context))) .setLayoutDirection(SplitAttributes.LayoutDirection.LOCALE) .build(); SplitPairRule splitPairRule = new SplitPairRule.Builder(filters) .setFinishPrimaryWithSecondary(finishPrimaryWithSecondary) .setFinishSecondaryWithPrimary(finishSecondaryWithPrimary) .setClearTop(clearTop) .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp()) .setMinSmallestWidthDp(ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp()) .setDefaultSplitAttributes(attributes) .build(); SplitController.getInstance(context).addRule(splitPairRule); } /** Loading @@ -126,8 +133,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, Settings.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, clearTop); registerTwoPanePairRule( Loading @@ -135,8 +144,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, SettingsHomepageActivity.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, clearTop); // We should finish HomePageActivity altogether even if it shows in single pane for all deep Loading @@ -146,8 +157,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, DeepLinkHomepageActivity.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, clearTop); registerTwoPanePairRule( Loading @@ -155,8 +168,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, DeepLinkHomepageActivityInternal.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, clearTop); } Loading Loading @@ -207,17 +222,20 @@ public class ActivityEmbeddingRulesController { final Intent intent = new Intent(mContext, Settings.NetworkDashboardActivity.class); intent.putExtra(SettingsActivity.EXTRA_IS_SECOND_LAYER_PAGE, true); final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule( activityFilters, intent, false /* stickyPlaceholder */, SplitRule.FINISH_ADJACENT, ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(mContext), ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(mContext), ActivityEmbeddingUtils.getSplitRatio(mContext), LayoutDirection.LOCALE); SplitAttributes attributes = new SplitAttributes.Builder() .setSplitType(SplitAttributes.SplitType.ratio( ActivityEmbeddingUtils.getSplitRatio(mContext))) .build(); final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule.Builder( activityFilters, intent) .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp()) .setMinSmallestWidthDp(ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp()) .setSticky(false) .setFinishPrimaryWithPlaceholder(SplitRule.FinishBehavior.ADJACENT) .setDefaultSplitAttributes(attributes) .build(); mSplitController.registerRule(placeholderRule); mSplitController.addRule(placeholderRule); } private void registerAlwaysExpandRule() { Loading @@ -235,14 +253,16 @@ public class ActivityEmbeddingRulesController { addActivityFilter(activityFilters, FaceEnrollIntroduction.class); addActivityFilter(activityFilters, AvatarPickerActivity.class); addActivityFilter(activityFilters, ChooseLockPattern.class); mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */)); ActivityRule activityRule = new ActivityRule.Builder(activityFilters).setAlwaysExpand(true) .build(); mSplitController.addRule(activityRule); } private static void addActivityFilter(Set<ActivityFilter> activityFilters, Intent intent) { activityFilters.add(new ActivityFilter(COMPONENT_NAME_WILDCARD, intent.getAction())); } private void addActivityFilter(Set<ActivityFilter> activityFilters, private void addActivityFilter(Collection<ActivityFilter> activityFilters, Class<? extends Activity> activityClass) { activityFilters.add(new ActivityFilter(new ComponentName(mContext, activityClass), null /* intentAction */)); Loading src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java +9 −13 Original line number Diff line number Diff line Loading @@ -30,29 +30,25 @@ import com.android.settings.R; /** An util class collecting all common methods for the embedding activity features. */ public class ActivityEmbeddingUtils { // The smallest value of current width of the window when the split should be used. private static final float MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP = 720f; private static final int MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP = 720; // The smallest value of the smallest-width (sw) of the window in any rotation when // the split should be used. private static final float MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP = 600f; private static final int MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP = 600; // The minimum width of the activity to show the regular homepage layout. private static final float MIN_REGULAR_HOMEPAGE_LAYOUT_WIDTH_DP = 380f; private static final String TAG = "ActivityEmbeddingUtils"; /** Get the smallest pixel value of width of the window when the split should be used. */ public static int getMinCurrentScreenSplitWidthPx(Context context) { final DisplayMetrics dm = context.getResources().getDisplayMetrics(); return (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP, dm); /** Get the smallest width dp of the window when the split should be used. */ public static int getMinCurrentScreenSplitWidthDp() { return MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP; } /** * Get the smallest pixel value of the smallest-width (sw) of the window in any rotation when * Get the smallest dp value of the smallest-width (sw) of the window in any rotation when * the split should be used. */ public static int getMinSmallestScreenSplitWidthPx(Context context) { final DisplayMetrics dm = context.getResources().getDisplayMetrics(); return (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP, dm); public static int getMinSmallestScreenSplitWidthDp() { return MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP; } /** Loading @@ -67,7 +63,7 @@ public class ActivityEmbeddingUtils { public static boolean isEmbeddingActivityEnabled(Context context) { final boolean isFlagEnabled = FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_SUPPORT_LARGE_SCREEN); final boolean isSplitSupported = SplitController.getInstance().isSplitSupported(); final boolean isSplitSupported = SplitController.getInstance(context).isSplitSupported(); Log.d(TAG, "isFlagEnabled = " + isFlagEnabled); Log.d(TAG, "isSplitSupported = " + isSplitSupported); Loading src/com/android/settings/homepage/SettingsHomepageActivity.java +5 −5 Original line number Diff line number Diff line Loading @@ -190,7 +190,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements setupEdgeToEdge(); setContentView(R.layout.settings_homepage_container); mSplitController = SplitController.getInstance(); mSplitController = SplitController.getInstance(this); mIsTwoPane = mSplitController.isActivityEmbedded(this); updateAppBarMinHeight(); Loading Loading @@ -518,15 +518,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements new ComponentName(getApplicationContext(), getClass()), targetComponentName, targetIntent.getAction(), SplitRule.FINISH_ALWAYS, SplitRule.FINISH_ALWAYS, SplitRule.FinishBehavior.ALWAYS, SplitRule.FinishBehavior.ALWAYS, true /* clearTop */); ActivityEmbeddingRulesController.registerTwoPanePairRule(this, new ComponentName(getApplicationContext(), Settings.class), targetComponentName, targetIntent.getAction(), SplitRule.FINISH_ALWAYS, SplitRule.FINISH_ALWAYS, SplitRule.FinishBehavior.ALWAYS, SplitRule.FinishBehavior.ALWAYS, true /* clearTop */); final UserHandle user = intent.getParcelableExtra(EXTRA_USER_HANDLE, UserHandle.class); Loading src/com/android/settings/homepage/TopLevelSettings.java +12 −3 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi private int mPaddingHorizontal; private boolean mScrollNeeded = true; private boolean mFirstStarted = true; private SplitController mSplitController; public TopLevelSettings() { final Bundle args = new Bundle(); Loading Loading @@ -143,7 +144,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi return; } boolean activityEmbedded = SplitController.getInstance().isActivityEmbedded(getActivity()); boolean activityEmbedded = isActivityEmbedded(); if (icicle != null) { mHighlightMixin = icicle.getParcelable(SAVED_HIGHLIGHT_MIXIN); mScrollNeeded = !mHighlightMixin.isActivityEmbedded() && activityEmbedded; Loading @@ -154,6 +155,14 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi } } /** Wrap SplitController#isActivityEmbedded for testing. */ public boolean isActivityEmbedded() { if (mSplitController == null) { mSplitController = SplitController.getInstance(getActivity()); } return mSplitController.isActivityEmbedded(getActivity()); } @Override public void onStart() { if (mFirstStarted) { Loading @@ -161,7 +170,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi FeatureFactory.getFactory(getContext()).getSearchFeatureProvider().sendPreIndexIntent( getContext()); } else if (mIsEmbeddingActivityEnabled && isOnlyOneActivityInTask() && !SplitController.getInstance().isActivityEmbedded(getActivity())) { && !isActivityEmbedded()) { // Set default highlight menu key for 1-pane homepage since it will show the placeholder // page once changing back to 2-pane. Log.i(TAG, "Set default menu key"); Loading Loading @@ -286,7 +295,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi * 3. the current activity is embedded */ return mHighlightMixin != null && TextUtils.equals(pref.getKey(), mHighlightMixin.getHighlightPreferenceKey()) && SplitController.getInstance().isActivityEmbedded(getActivity()); && isActivityEmbedded(); } /** Show/hide the highlight on the menu entry for the search page presence */ Loading Loading
src/com/android/settings/SettingsInitialize.java +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ public class SettingsInitialize extends BroadcastReceiver { DeepLinkHomepageActivity.class); final ComponentName searchStateReceiver = new ComponentName(context, SearchStateReceiver.class); final int enableState = SplitController.getInstance().isSplitSupported() final int enableState = SplitController.getInstance(context).isSplitSupported() ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; pm.setComponentEnabledSetting(deepLinkHome, enableState, PackageManager.DONT_KILL_APP); Loading
src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +53 −33 Original line number Diff line number Diff line Loading @@ -22,11 +22,11 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.util.FeatureFlagUtils; import android.util.LayoutDirection; import android.util.Log; import androidx.window.embedding.ActivityFilter; import androidx.window.embedding.ActivityRule; import androidx.window.embedding.SplitAttributes; import androidx.window.embedding.SplitController; import androidx.window.embedding.SplitPairFilter; import androidx.window.embedding.SplitPairRule; Loading @@ -49,6 +49,7 @@ import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockPattern; import com.android.settingslib.users.AvatarPickerActivity; import java.util.Collection; import java.util.HashSet; import java.util.Set; Loading @@ -63,7 +64,7 @@ public class ActivityEmbeddingRulesController { public ActivityEmbeddingRulesController(Context context) { mContext = context; mSplitController = SplitController.getInstance(); mSplitController = SplitController.getInstance(context); } /** Loading @@ -88,8 +89,8 @@ public class ActivityEmbeddingRulesController { ComponentName primaryComponent, ComponentName secondaryComponent, String secondaryIntentAction, int finishPrimaryWithSecondary, int finishSecondaryWithPrimary, SplitRule.FinishBehavior finishPrimaryWithSecondary, SplitRule.FinishBehavior finishSecondaryWithPrimary, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; Loading @@ -98,14 +99,20 @@ public class ActivityEmbeddingRulesController { filters.add(new SplitPairFilter(primaryComponent, secondaryComponent, secondaryIntentAction)); SplitController.getInstance().registerRule(new SplitPairRule(filters, finishPrimaryWithSecondary, finishSecondaryWithPrimary, clearTop, ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context), ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context), ActivityEmbeddingUtils.getSplitRatio(context), LayoutDirection.LOCALE)); SplitAttributes attributes = new SplitAttributes.Builder() .setSplitType(SplitAttributes.SplitType.ratio( ActivityEmbeddingUtils.getSplitRatio(context))) .setLayoutDirection(SplitAttributes.LayoutDirection.LOCALE) .build(); SplitPairRule splitPairRule = new SplitPairRule.Builder(filters) .setFinishPrimaryWithSecondary(finishPrimaryWithSecondary) .setFinishSecondaryWithPrimary(finishSecondaryWithPrimary) .setClearTop(clearTop) .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp()) .setMinSmallestWidthDp(ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp()) .setDefaultSplitAttributes(attributes) .build(); SplitController.getInstance(context).addRule(splitPairRule); } /** Loading @@ -126,8 +133,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, Settings.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, clearTop); registerTwoPanePairRule( Loading @@ -135,8 +144,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, SettingsHomepageActivity.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ADJACENT : SplitRule.FinishBehavior.NEVER, clearTop); // We should finish HomePageActivity altogether even if it shows in single pane for all deep Loading @@ -146,8 +157,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, DeepLinkHomepageActivity.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, clearTop); registerTwoPanePairRule( Loading @@ -155,8 +168,10 @@ public class ActivityEmbeddingRulesController { new ComponentName(context, DeepLinkHomepageActivityInternal.class), secondaryComponent, secondaryIntentAction, finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER, finishPrimaryWithSecondary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, finishSecondaryWithPrimary ? SplitRule.FinishBehavior.ALWAYS : SplitRule.FinishBehavior.NEVER, clearTop); } Loading Loading @@ -207,17 +222,20 @@ public class ActivityEmbeddingRulesController { final Intent intent = new Intent(mContext, Settings.NetworkDashboardActivity.class); intent.putExtra(SettingsActivity.EXTRA_IS_SECOND_LAYER_PAGE, true); final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule( activityFilters, intent, false /* stickyPlaceholder */, SplitRule.FINISH_ADJACENT, ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(mContext), ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(mContext), ActivityEmbeddingUtils.getSplitRatio(mContext), LayoutDirection.LOCALE); SplitAttributes attributes = new SplitAttributes.Builder() .setSplitType(SplitAttributes.SplitType.ratio( ActivityEmbeddingUtils.getSplitRatio(mContext))) .build(); final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule.Builder( activityFilters, intent) .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp()) .setMinSmallestWidthDp(ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp()) .setSticky(false) .setFinishPrimaryWithPlaceholder(SplitRule.FinishBehavior.ADJACENT) .setDefaultSplitAttributes(attributes) .build(); mSplitController.registerRule(placeholderRule); mSplitController.addRule(placeholderRule); } private void registerAlwaysExpandRule() { Loading @@ -235,14 +253,16 @@ public class ActivityEmbeddingRulesController { addActivityFilter(activityFilters, FaceEnrollIntroduction.class); addActivityFilter(activityFilters, AvatarPickerActivity.class); addActivityFilter(activityFilters, ChooseLockPattern.class); mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */)); ActivityRule activityRule = new ActivityRule.Builder(activityFilters).setAlwaysExpand(true) .build(); mSplitController.addRule(activityRule); } private static void addActivityFilter(Set<ActivityFilter> activityFilters, Intent intent) { activityFilters.add(new ActivityFilter(COMPONENT_NAME_WILDCARD, intent.getAction())); } private void addActivityFilter(Set<ActivityFilter> activityFilters, private void addActivityFilter(Collection<ActivityFilter> activityFilters, Class<? extends Activity> activityClass) { activityFilters.add(new ActivityFilter(new ComponentName(mContext, activityClass), null /* intentAction */)); Loading
src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java +9 −13 Original line number Diff line number Diff line Loading @@ -30,29 +30,25 @@ import com.android.settings.R; /** An util class collecting all common methods for the embedding activity features. */ public class ActivityEmbeddingUtils { // The smallest value of current width of the window when the split should be used. private static final float MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP = 720f; private static final int MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP = 720; // The smallest value of the smallest-width (sw) of the window in any rotation when // the split should be used. private static final float MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP = 600f; private static final int MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP = 600; // The minimum width of the activity to show the regular homepage layout. private static final float MIN_REGULAR_HOMEPAGE_LAYOUT_WIDTH_DP = 380f; private static final String TAG = "ActivityEmbeddingUtils"; /** Get the smallest pixel value of width of the window when the split should be used. */ public static int getMinCurrentScreenSplitWidthPx(Context context) { final DisplayMetrics dm = context.getResources().getDisplayMetrics(); return (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP, dm); /** Get the smallest width dp of the window when the split should be used. */ public static int getMinCurrentScreenSplitWidthDp() { return MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP; } /** * Get the smallest pixel value of the smallest-width (sw) of the window in any rotation when * Get the smallest dp value of the smallest-width (sw) of the window in any rotation when * the split should be used. */ public static int getMinSmallestScreenSplitWidthPx(Context context) { final DisplayMetrics dm = context.getResources().getDisplayMetrics(); return (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP, dm); public static int getMinSmallestScreenSplitWidthDp() { return MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP; } /** Loading @@ -67,7 +63,7 @@ public class ActivityEmbeddingUtils { public static boolean isEmbeddingActivityEnabled(Context context) { final boolean isFlagEnabled = FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_SUPPORT_LARGE_SCREEN); final boolean isSplitSupported = SplitController.getInstance().isSplitSupported(); final boolean isSplitSupported = SplitController.getInstance(context).isSplitSupported(); Log.d(TAG, "isFlagEnabled = " + isFlagEnabled); Log.d(TAG, "isSplitSupported = " + isSplitSupported); Loading
src/com/android/settings/homepage/SettingsHomepageActivity.java +5 −5 Original line number Diff line number Diff line Loading @@ -190,7 +190,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements setupEdgeToEdge(); setContentView(R.layout.settings_homepage_container); mSplitController = SplitController.getInstance(); mSplitController = SplitController.getInstance(this); mIsTwoPane = mSplitController.isActivityEmbedded(this); updateAppBarMinHeight(); Loading Loading @@ -518,15 +518,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements new ComponentName(getApplicationContext(), getClass()), targetComponentName, targetIntent.getAction(), SplitRule.FINISH_ALWAYS, SplitRule.FINISH_ALWAYS, SplitRule.FinishBehavior.ALWAYS, SplitRule.FinishBehavior.ALWAYS, true /* clearTop */); ActivityEmbeddingRulesController.registerTwoPanePairRule(this, new ComponentName(getApplicationContext(), Settings.class), targetComponentName, targetIntent.getAction(), SplitRule.FINISH_ALWAYS, SplitRule.FINISH_ALWAYS, SplitRule.FinishBehavior.ALWAYS, SplitRule.FinishBehavior.ALWAYS, true /* clearTop */); final UserHandle user = intent.getParcelableExtra(EXTRA_USER_HANDLE, UserHandle.class); Loading
src/com/android/settings/homepage/TopLevelSettings.java +12 −3 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi private int mPaddingHorizontal; private boolean mScrollNeeded = true; private boolean mFirstStarted = true; private SplitController mSplitController; public TopLevelSettings() { final Bundle args = new Bundle(); Loading Loading @@ -143,7 +144,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi return; } boolean activityEmbedded = SplitController.getInstance().isActivityEmbedded(getActivity()); boolean activityEmbedded = isActivityEmbedded(); if (icicle != null) { mHighlightMixin = icicle.getParcelable(SAVED_HIGHLIGHT_MIXIN); mScrollNeeded = !mHighlightMixin.isActivityEmbedded() && activityEmbedded; Loading @@ -154,6 +155,14 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi } } /** Wrap SplitController#isActivityEmbedded for testing. */ public boolean isActivityEmbedded() { if (mSplitController == null) { mSplitController = SplitController.getInstance(getActivity()); } return mSplitController.isActivityEmbedded(getActivity()); } @Override public void onStart() { if (mFirstStarted) { Loading @@ -161,7 +170,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi FeatureFactory.getFactory(getContext()).getSearchFeatureProvider().sendPreIndexIntent( getContext()); } else if (mIsEmbeddingActivityEnabled && isOnlyOneActivityInTask() && !SplitController.getInstance().isActivityEmbedded(getActivity())) { && !isActivityEmbedded()) { // Set default highlight menu key for 1-pane homepage since it will show the placeholder // page once changing back to 2-pane. Log.i(TAG, "Set default menu key"); Loading Loading @@ -286,7 +295,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi * 3. the current activity is embedded */ return mHighlightMixin != null && TextUtils.equals(pref.getKey(), mHighlightMixin.getHighlightPreferenceKey()) && SplitController.getInstance().isActivityEmbedded(getActivity()); && isActivityEmbedded(); } /** Show/hide the highlight on the menu entry for the search page presence */ Loading