1 // Copyright 2020 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.chrome.browser.settings; 6 7 import android.app.Activity; 8 import android.content.Context; 9 import android.content.Intent; 10 import android.os.Bundle; 11 12 import androidx.annotation.Nullable; 13 import androidx.fragment.app.Fragment; 14 15 import org.chromium.base.IntentUtils; 16 17 /** 18 * Implementation class for launching a {@link SettingsActivity}. 19 */ 20 public class SettingsLauncherImpl implements SettingsLauncher { SettingsLauncherImpl()21 public SettingsLauncherImpl() {} 22 23 @Override launchSettingsActivity(Context context)24 public void launchSettingsActivity(Context context) { 25 launchSettingsActivity(context, null); 26 } 27 28 @Override launchSettingsActivity( Context context, @Nullable Class<? extends Fragment> fragment)29 public void launchSettingsActivity( 30 Context context, @Nullable Class<? extends Fragment> fragment) { 31 launchSettingsActivity(context, fragment, null); 32 } 33 34 @Override launchSettingsActivity(Context context, @Nullable Class<? extends Fragment> fragment, @Nullable Bundle fragmentArgs)35 public void launchSettingsActivity(Context context, 36 @Nullable Class<? extends Fragment> fragment, @Nullable Bundle fragmentArgs) { 37 String fragmentName = fragment != null ? fragment.getName() : null; 38 Intent intent = createSettingsActivityIntent(context, fragmentName, fragmentArgs); 39 IntentUtils.safeStartActivity(context, intent); 40 } 41 42 @Override createSettingsActivityIntent(Context context, @Nullable String fragmentName)43 public Intent createSettingsActivityIntent(Context context, @Nullable String fragmentName) { 44 return createSettingsActivityIntent(context, fragmentName, null); 45 } 46 47 @Override createSettingsActivityIntent( Context context, @Nullable String fragmentName, @Nullable Bundle fragmentArgs)48 public Intent createSettingsActivityIntent( 49 Context context, @Nullable String fragmentName, @Nullable Bundle fragmentArgs) { 50 Intent intent = new Intent(); 51 intent.setClass(context, SettingsActivity.class); 52 if (!(context instanceof Activity)) { 53 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 54 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 55 } 56 if (fragmentName != null) { 57 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, fragmentName); 58 } 59 if (fragmentArgs != null) { 60 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs); 61 } 62 return intent; 63 } 64 } 65