Get rid of direct usage of Utils.onBuildStartFragmentIntent

Change-Id: I87eb97d6da4cd4f99be5bcdb1e3e245eb1c7bd1c
Fixes: 73250851
Test: robotests
This commit is contained in:
Fan Zhang
2018-02-19 14:31:50 -08:00
parent 47854c2945
commit 1f6d24a991
14 changed files with 221 additions and 168 deletions

View File

@@ -101,6 +101,25 @@ public class SubSettingLauncher {
"This launcher has already been executed. Do not reuse");
}
mLaunched = true;
final Intent intent = toIntent();
boolean launchAsUser = mLaunchRequest.userHandle != null
&& mLaunchRequest.userHandle.getIdentifier() != UserHandle.myUserId();
boolean launchForResult = mLaunchRequest.mResultListener != null;
if (launchAsUser && launchForResult) {
launchForResultAsUser(intent, mLaunchRequest.userHandle, mLaunchRequest.mResultListener,
mLaunchRequest.mRequestCode);
} else if (launchAsUser && !launchForResult) {
launchAsUser(intent, mLaunchRequest.userHandle);
} else if (!launchAsUser && launchForResult) {
launchForResult(mLaunchRequest.mResultListener, intent, mLaunchRequest.mRequestCode);
} else {
launch(intent);
}
}
public Intent toIntent() {
final Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(mContext, SubSettings.class);
if (TextUtils.isEmpty(mLaunchRequest.destinationName)) {
@@ -123,15 +142,7 @@ public class SubSettingLauncher {
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT,
mLaunchRequest.isShortCut);
intent.addFlags(mLaunchRequest.flags);
if (mLaunchRequest.userHandle != null
&& mLaunchRequest.userHandle.getIdentifier() != UserHandle.myUserId()) {
launchAsUser(mContext, intent, mLaunchRequest.userHandle);
} else if (mLaunchRequest.mResultListener != null) {
launchForResult(mLaunchRequest.mResultListener, intent, mLaunchRequest.mRequestCode);
} else {
launch(intent);
}
return intent;
}
@VisibleForTesting
@@ -139,14 +150,21 @@ public class SubSettingLauncher {
mContext.startActivity(intent);
}
private static void launchForResult(Fragment listener, Intent intent, int requestCode) {
listener.getActivity().startActivityForResult(intent, requestCode);
}
private static void launchAsUser(Context context, Intent intent, UserHandle userHandle) {
@VisibleForTesting
void launchAsUser(Intent intent, UserHandle userHandle) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivityAsUser(intent, userHandle);
mContext.startActivityAsUser(intent, userHandle);
}
@VisibleForTesting
void launchForResultAsUser(Intent intent, UserHandle userHandle,
Fragment resultListener, int requestCode) {
resultListener.getActivity().startActivityForResultAsUser(intent, requestCode, userHandle);
}
private void launchForResult(Fragment listener, Intent intent, int requestCode) {
listener.getActivity().startActivityForResult(intent, requestCode);
}
/**