From 5df14831b8d0bbae062c644cfa987378ea2ca9d4 Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Thu, 23 Jun 2022 12:12:23 +0800 Subject: [PATCH 1/3] Make bluetooth not discoverable via large screen deep link flow Deep links on large screen devices starts a homepage activity on the left pane, and then starts the target activity on the right pane. This flow overrides the calling package, and the target activity can't know who initially calls it. Thus, we store the initial calling package in the intent, so the Connected devices page is able to make bluetooth not discoverable when it's called from unintended apps on large screen devices. Bug: 234440688 Test: robotest, manual Change-Id: I4ddcd4e083c002ece9d10aabdb4af4a41de55ce7 Merged-In: I4ddcd4e083c002ece9d10aabdb4af4a41de55ce7 --- src/com/android/settings/SettingsActivity.java | 15 +++++++++++++++ .../ConnectedDeviceDashboardFragment.java | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 1a9bdc742fe..c496d91092e 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -70,6 +70,7 @@ import com.android.settings.homepage.DeepLinkHomepageActivityInternal; import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.password.PasswordUtils; import com.android.settings.wfd.WifiDisplaySettings; import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settingslib.core.instrumentation.Instrumentable; @@ -154,6 +155,7 @@ public class SettingsActivity extends SettingsBaseActivity public static final String EXTRA_IS_FROM_SLICE = "is_from_slice"; public static final String EXTRA_USER_HANDLE = "user_handle"; + public static final String EXTRA_INITIAL_CALLING_PACKAGE = "initial_calling_package"; /** * Personal or Work profile tab of {@link ProfileSelectFragment} @@ -415,6 +417,8 @@ public class SettingsActivity extends SettingsBaseActivity } private boolean tryStartTwoPaneDeepLink(Intent intent) { + intent.putExtra(EXTRA_INITIAL_CALLING_PACKAGE, PasswordUtils.getCallingAppPackageName( + getActivityToken())); final Intent trampolineIntent; if (intent.getBooleanExtra(EXTRA_IS_FROM_SLICE, false)) { // Get menu key for slice deep link case. @@ -502,6 +506,17 @@ public class SettingsActivity extends SettingsBaseActivity return true; } + /** Returns the initial calling package name that launches the activity. */ + public String getInitialCallingPackage() { + String callingPackage = PasswordUtils.getCallingAppPackageName(getActivityToken()); + if (!TextUtils.equals(callingPackage, getPackageName())) { + return callingPackage; + } + + String initialCallingPackage = getIntent().getStringExtra(EXTRA_INITIAL_CALLING_PACKAGE); + return TextUtils.isEmpty(initialCallingPackage) ? callingPackage : initialCallingPackage; + } + /** Returns the initial fragment name that the activity will launch. */ @VisibleForTesting public String getInitialFragmentName(Intent intent) { diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java index 7e6eefe2e41..ea8a5f560f9 100644 --- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java +++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java @@ -25,9 +25,9 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settings.core.SettingsUIDeviceConfig; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.password.PasswordUtils; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.slices.SlicePreferenceController; import com.android.settingslib.search.SearchIndexable; @@ -71,8 +71,8 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment { super.onAttach(context); final boolean nearbyEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, SettingsUIDeviceConfig.BT_NEAR_BY_SUGGESTION_ENABLED, true); - String callingAppPackageName = PasswordUtils.getCallingAppPackageName( - getActivity().getActivityToken()); + String callingAppPackageName = ((SettingsActivity) getActivity()) + .getInitialCallingPackage(); String action = getIntent() != null ? getIntent().getAction() : ""; if (DEBUG) { Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName From 846d0286a8c1608796a64d9f6748c52bc3612bc1 Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Thu, 23 Jun 2022 12:12:23 +0800 Subject: [PATCH 2/3] [DO NOT MERGE] Make bluetooth not discoverable via large screen deep link flow Deep links on large screen devices starts a homepage activity on the left pane, and then starts the target activity on the right pane. This flow overrides the calling package, and the target activity can't know who initially calls it. Thus, we store the initial calling package in the intent, so the Connected devices page is able to make bluetooth not discoverable when it's called from unintended apps on large screen devices. Bug: 234440688 Test: robotest, manual Change-Id: I4ddcd4e083c002ece9d10aabdb4af4a41de55ce7 --- src/com/android/settings/SettingsActivity.java | 16 ++++++++++++++++ .../ConnectedDeviceDashboardFragment.java | 6 +++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index d3d3604a2cc..ea6d983fd01 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -68,6 +68,7 @@ import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SliceDeepLinkHomepageActivity; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.password.PasswordUtils; import com.android.settings.wfd.WifiDisplaySettings; import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settingslib.core.instrumentation.Instrumentable; @@ -150,6 +151,8 @@ public class SettingsActivity extends SettingsBaseActivity */ public static final String EXTRA_IS_FROM_SLICE = "is_from_slice"; + public static final String EXTRA_INITIAL_CALLING_PACKAGE = "initial_calling_package"; + /** * Personal or Work profile tab of {@link ProfileSelectFragment} *

0: Personal tab. @@ -399,6 +402,8 @@ public class SettingsActivity extends SettingsBaseActivity } private void launchHomepageForTwoPaneDeepLink(Intent intent) { + intent.putExtra(EXTRA_INITIAL_CALLING_PACKAGE, PasswordUtils.getCallingAppPackageName( + getActivityToken())); final Intent trampolineIntent; if (intent.getBooleanExtra(EXTRA_IS_FROM_SLICE, false)) { // Get menu key for slice deep link case. @@ -459,6 +464,17 @@ public class SettingsActivity extends SettingsBaseActivity return true; } + /** Returns the initial calling package name that launches the activity. */ + public String getInitialCallingPackage() { + String callingPackage = PasswordUtils.getCallingAppPackageName(getActivityToken()); + if (!TextUtils.equals(callingPackage, getPackageName())) { + return callingPackage; + } + + String initialCallingPackage = getIntent().getStringExtra(EXTRA_INITIAL_CALLING_PACKAGE); + return TextUtils.isEmpty(initialCallingPackage) ? callingPackage : initialCallingPackage; + } + /** Returns the initial fragment name that the activity will launch. */ @VisibleForTesting public String getInitialFragmentName(Intent intent) { diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java index 7e6eefe2e41..ea8a5f560f9 100644 --- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java +++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java @@ -25,9 +25,9 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settings.core.SettingsUIDeviceConfig; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.password.PasswordUtils; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.slices.SlicePreferenceController; import com.android.settingslib.search.SearchIndexable; @@ -71,8 +71,8 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment { super.onAttach(context); final boolean nearbyEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, SettingsUIDeviceConfig.BT_NEAR_BY_SUGGESTION_ENABLED, true); - String callingAppPackageName = PasswordUtils.getCallingAppPackageName( - getActivity().getActivityToken()); + String callingAppPackageName = ((SettingsActivity) getActivity()) + .getInitialCallingPackage(); String action = getIntent() != null ? getIntent().getAction() : ""; if (DEBUG) { Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName From 69cc573b76e62bd968af33fdcaa6d9530cd6442b Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Wed, 29 Jun 2022 19:07:44 +0000 Subject: [PATCH 3/3] Add field to control margin in FaceEnrollIntro Problem -> The require scroll mixin seems to scroll an entire device length when a button click occurs. If you have page content of 2x device_length + 10 pixels, a user will have to press the more button twice to scroll this length. With the illustration_margin_bottom field, devices can tune this parameter to allow the user to press the more button once. Fixes: 237474002 Test: Manual. Change-Id: I9de2d74608260fe835870211a07b96249a8598f8 --- res/layout/face_enroll_introduction.xml | 3 ++- res/values/dimens.xml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/res/layout/face_enroll_introduction.xml b/res/layout/face_enroll_introduction.xml index c497015ebcd..8b0352928ca 100644 --- a/res/layout/face_enroll_introduction.xml +++ b/res/layout/face_enroll_introduction.xml @@ -48,7 +48,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:contentDescription="@null" - android:src="@drawable/face_enroll_intro_illustration"/> + android:src="@drawable/face_enroll_intro_illustration" + android:layout_marginBottom="@dimen/face_enroll_intro_illustration_margin_bottom"/> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index b88d01d12b9..c9557c14dfb 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -234,6 +234,7 @@ 0 0 1.0 + 0dp 48dp