Merge "Add current user handle to tile intent in account detail page."
This commit is contained in:
committed by
Android (Google) Code Review
commit
158fd441ff
@@ -15,11 +15,14 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.accounts;
|
package com.android.settings.accounts;
|
||||||
|
|
||||||
|
import static android.content.Intent.EXTRA_USER;
|
||||||
|
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
import android.accounts.AccountManager;
|
import android.accounts.AccountManager;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
@@ -56,6 +59,8 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
|
|||||||
String mAccountType;
|
String mAccountType;
|
||||||
private AccountSyncPreferenceController mAccountSynController;
|
private AccountSyncPreferenceController mAccountSynController;
|
||||||
private RemoveAccountPreferenceController mRemoveAccountController;
|
private RemoveAccountPreferenceController mRemoveAccountController;
|
||||||
|
@VisibleForTesting
|
||||||
|
UserHandle mUserHandle;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
@@ -63,7 +68,7 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
|
|||||||
getPreferenceManager().setPreferenceComparisonCallback(null);
|
getPreferenceManager().setPreferenceComparisonCallback(null);
|
||||||
Bundle args = getArguments();
|
Bundle args = getArguments();
|
||||||
final Activity activity = getActivity();
|
final Activity activity = getActivity();
|
||||||
UserHandle userHandle = Utils.getSecureTargetUser(activity.getActivityToken(),
|
mUserHandle = Utils.getSecureTargetUser(activity.getActivityToken(),
|
||||||
(UserManager) getSystemService(Context.USER_SERVICE), args,
|
(UserManager) getSystemService(Context.USER_SERVICE), args,
|
||||||
activity.getIntent().getExtras());
|
activity.getIntent().getExtras());
|
||||||
if (args != null) {
|
if (args != null) {
|
||||||
@@ -77,8 +82,8 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
|
|||||||
mAccountType = args.getString(KEY_ACCOUNT_TYPE);
|
mAccountType = args.getString(KEY_ACCOUNT_TYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mAccountSynController.init(mAccount, userHandle);
|
mAccountSynController.init(mAccount, mUserHandle);
|
||||||
mRemoveAccountController.init(mAccount, userHandle);
|
mRemoveAccountController.init(mAccount, mUserHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -154,7 +159,9 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
|
|||||||
}
|
}
|
||||||
final boolean display = mAccountType.equals(metadata.getString(METADATA_IA_ACCOUNT));
|
final boolean display = mAccountType.equals(metadata.getString(METADATA_IA_ACCOUNT));
|
||||||
if (display) {
|
if (display) {
|
||||||
tile.getIntent().putExtra(EXTRA_ACCOUNT_NAME, mAccount.name);
|
final Intent intent = tile.getIntent();
|
||||||
|
intent.putExtra(EXTRA_ACCOUNT_NAME, mAccount.name);
|
||||||
|
intent.putExtra(EXTRA_USER, mUserHandle);
|
||||||
}
|
}
|
||||||
return display;
|
return display;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.dashboard;
|
package com.android.settings.dashboard;
|
||||||
|
|
||||||
|
import static android.content.Intent.EXTRA_USER;
|
||||||
|
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
|
||||||
@@ -29,6 +31,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.Icon;
|
import android.graphics.drawable.Icon;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
@@ -239,7 +242,14 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
|||||||
mMetricsFeatureProvider.logDashboardStartIntent(mContext, intent, sourceMetricCategory);
|
mMetricsFeatureProvider.logDashboardStartIntent(mContext, intent, sourceMetricCategory);
|
||||||
activity.startActivityForResultAsUser(intent, 0, tile.userHandle.get(0));
|
activity.startActivityForResultAsUser(intent, 0, tile.userHandle.get(0));
|
||||||
} else {
|
} else {
|
||||||
ProfileSelectDialog.show(activity.getSupportFragmentManager(), tile);
|
final UserHandle userHandle = intent.getParcelableExtra(EXTRA_USER);
|
||||||
|
if (userHandle != null && tile.userHandle.contains(userHandle)) {
|
||||||
|
mMetricsFeatureProvider.logDashboardStartIntent(
|
||||||
|
mContext, intent, sourceMetricCategory);
|
||||||
|
activity.startActivityForResultAsUser(intent, 0, userHandle);
|
||||||
|
} else {
|
||||||
|
ProfileSelectDialog.show(activity.getSupportFragmentManager(), tile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.accounts;
|
package com.android.settings.accounts;
|
||||||
|
|
||||||
|
import static android.content.Intent.EXTRA_USER;
|
||||||
|
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
|
||||||
|
|
||||||
@@ -160,6 +162,20 @@ public class AccountDetailDashboardFragmentTest {
|
|||||||
assertThat(intent.getStringExtra("extra.accountName")).isEqualTo("name1@abc.com");
|
assertThat(intent.getStringExtra("extra.accountName")).isEqualTo("name1@abc.com");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void displayTile_shouldAddUserHandleToTileIntent() {
|
||||||
|
mFragment.mUserHandle = new UserHandle(1);
|
||||||
|
|
||||||
|
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
|
||||||
|
mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT);
|
||||||
|
mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");
|
||||||
|
|
||||||
|
mFragment.displayTile(tile);
|
||||||
|
|
||||||
|
final UserHandle userHandle = tile.getIntent().getParcelableExtra(EXTRA_USER);
|
||||||
|
assertThat(userHandle.getIdentifier()).isEqualTo(1);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onResume_accountMissing_shouldFinish() {
|
public void onResume_accountMissing_shouldFinish() {
|
||||||
ShadowUserManager userManager =
|
ShadowUserManager userManager =
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.dashboard;
|
package com.android.settings.dashboard;
|
||||||
|
|
||||||
|
import static android.content.Intent.EXTRA_USER;
|
||||||
|
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
|
||||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
|
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
|
||||||
@@ -67,6 +69,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Answers;
|
import org.mockito.Answers;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.Robolectric;
|
import org.robolectric.Robolectric;
|
||||||
@@ -412,4 +415,44 @@ public class DashboardFeatureProviderImplTest {
|
|||||||
.startActivityForResult(any(Intent.class), eq(0));
|
.startActivityForResult(any(Intent.class), eq(0));
|
||||||
verify(mActivity, never()).getSupportFragmentManager();
|
verify(mActivity, never()).getSupportFragmentManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void openTileIntent_profileSelectionDialog_validUserHandleShouldNotShow() {
|
||||||
|
final int userId = 10;
|
||||||
|
ShadowUserManager.getShadow().addUser(userId, "Someone", 0);
|
||||||
|
|
||||||
|
final UserHandle userHandle = new UserHandle(userId);
|
||||||
|
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
|
||||||
|
tile.getIntent().putExtra(EXTRA_USER, userHandle);
|
||||||
|
final ArrayList<UserHandle> handles = new ArrayList<>();
|
||||||
|
handles.add(new UserHandle(0));
|
||||||
|
handles.add(userHandle);
|
||||||
|
tile.userHandle = handles;
|
||||||
|
|
||||||
|
mImpl.openTileIntent(mActivity, tile);
|
||||||
|
|
||||||
|
final ArgumentCaptor<UserHandle> argument = ArgumentCaptor.forClass(UserHandle.class);
|
||||||
|
verify(mActivity)
|
||||||
|
.startActivityForResultAsUser(any(Intent.class), anyInt(), argument.capture());
|
||||||
|
assertThat(argument.getValue().getIdentifier()).isEqualTo(userId);
|
||||||
|
verify(mActivity, never()).getSupportFragmentManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void openTileIntent_profileSelectionDialog_invalidUserHandleShouldShow() {
|
||||||
|
ShadowUserManager.getShadow().addUser(10, "Someone", 0);
|
||||||
|
|
||||||
|
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
|
||||||
|
tile.getIntent().putExtra(EXTRA_USER, new UserHandle(30));
|
||||||
|
final ArrayList<UserHandle> handles = new ArrayList<>();
|
||||||
|
handles.add(new UserHandle(0));
|
||||||
|
handles.add(new UserHandle(10));
|
||||||
|
tile.userHandle = handles;
|
||||||
|
|
||||||
|
mImpl.openTileIntent(mActivity, tile);
|
||||||
|
|
||||||
|
verify(mActivity, never())
|
||||||
|
.startActivityForResultAsUser(any(Intent.class), anyInt(), any(UserHandle.class));
|
||||||
|
verify(mActivity).getSupportFragmentManager();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user