Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c26ea56f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Get rid of direct usage of Utils.onBuildStartFragmentIntent"

parents e5b8a5b2 1f6d24a9
Loading
Loading
Loading
Loading
+0 −33
Original line number Diff line number Diff line
@@ -388,39 +388,6 @@ public final class Utils extends com.android.settingslib.Utils {
                .getUsers().size() > 1;
    }

    /**
     * Build an Intent to launch a new activity showing the selected fragment.
     * The implementation constructs an Intent that re-launches the current activity with the
     * appropriate arguments to display the fragment.
     *
     *
     * @param context The Context.
     * @param fragmentName The name of the fragment to display.
     * @param args Optional arguments to supply to the fragment.
     * @param titleResPackageName Optional package name for the resource id of the title.
     * @param titleResId Optional title resource id to show for this item.
     * @param title Optional title to show for this item.
     * @param isShortcut  tell if this is a Launcher Shortcut or not
     * @param sourceMetricsCategory The context (source) from which an action is performed
     * @return Returns an Intent that can be launched to display the given
     * fragment.
     */
    public static Intent onBuildStartFragmentIntent(Context context, String fragmentName,
            Bundle args, String titleResPackageName, int titleResId, CharSequence title,
            boolean isShortcut, int sourceMetricsCategory) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.setClass(context, SubSettings.class);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, fragmentName);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RES_PACKAGE_NAME,
                titleResPackageName);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, titleResId);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT, isShortcut);
        intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY, sourceMetricsCategory);
        return intent;
    }

    /**
     * Returns the managed profile of the current user or {@code null} if none is found or a profile
     * exists but it is disabled.
+10 −12
Original line number Diff line number Diff line
@@ -43,8 +43,8 @@ import android.util.Log;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
@@ -218,20 +218,18 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment

    public static void startAppInfoFragment(Class<?> fragment, int titleRes,
            String pkg, int uid, Fragment source, int request, int sourceMetricsCategory) {
        startAppInfoFragment(fragment, titleRes, pkg, uid, source.getActivity(), request,
                sourceMetricsCategory);
    }

    public static void startAppInfoFragment(Class<?> fragment, int titleRes,
            String pkg, int uid, Activity source, int request, int sourceMetricsCategory) {
        Bundle args = new Bundle();
        final Bundle args = new Bundle();
        args.putString(AppInfoBase.ARG_PACKAGE_NAME, pkg);
        args.putInt(AppInfoBase.ARG_PACKAGE_UID, uid);

        Intent intent = Utils.onBuildStartFragmentIntent(source, fragment.getName(),
                args, null, titleRes, null, false, sourceMetricsCategory);
        source.startActivityForResultAsUser(intent, request,
                new UserHandle(UserHandle.getUserId(uid)));
        new SubSettingLauncher(source.getContext())
                .setDestination(fragment.getName())
                .setSourceMetricsCategory(sourceMetricsCategory)
                .setTitle(titleRes)
                .setArguments(args)
                .setUserHandle(new UserHandle(UserHandle.getUserId(uid)))
                .setResultListener(source, request)
                .launch();
    }

    public static class MyAlertDialogFragment extends InstrumentedDialogFragment {
+33 −15
Original line number Diff line number Diff line
@@ -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);
    }

    /**
+7 −3
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.util.AttributeSet;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.datausage.CellDataPreference.DataStateListener;

public class BillingCyclePreference extends Preference implements TemplatePreference {
@@ -80,8 +80,12 @@ public class BillingCyclePreference extends Preference implements TemplatePrefer
    public Intent getIntent() {
        Bundle args = new Bundle();
        args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
        return Utils.onBuildStartFragmentIntent(getContext(), BillingCycleSettings.class.getName(),
                args, null, 0, getTitle(), false, MetricsProto.MetricsEvent.VIEW_UNKNOWN);
        return new SubSettingLauncher(getContext())
                .setDestination(BillingCycleSettings.class.getName())
                .setArguments(args)
                .setTitle(getTitle())
                .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN)
                .toIntent();
    }

    private final DataStateListener mListener = new DataStateListener() {
+12 −10
Original line number Diff line number Diff line
@@ -23,10 +23,10 @@ import android.support.v4.content.res.TypedArrayUtils;
import android.support.v7.preference.Preference;
import android.text.format.Formatter;
import android.util.AttributeSet;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.net.DataUsageController;

public class DataUsagePreference extends Preference implements TemplatePreference {
@@ -60,16 +60,18 @@ public class DataUsagePreference extends Preference implements TemplatePreferenc

    @Override
    public Intent getIntent() {
        Bundle args = new Bundle();
        final Bundle args = new Bundle();
        args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
        args.putInt(DataUsageList.EXTRA_SUB_ID, mSubId);
        final SubSettingLauncher launcher = new SubSettingLauncher(getContext())
                .setArguments(args)
                .setDestination(DataUsageList.class.getName())
                .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN);
        if (mTitleRes > 0) {
            return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(),
                    args, getContext().getPackageName(), mTitleRes, null, false,
                    MetricsProto.MetricsEvent.VIEW_UNKNOWN);
            launcher.setTitle(mTitleRes);
        } else {
            launcher.setTitle(getTitle());
        }
        return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(), args,
                getContext().getPackageName(), 0, getTitle(), false,
                MetricsProto.MetricsEvent.VIEW_UNKNOWN);
        return launcher.toIntent();
    }
}
Loading