Move clear instant app dialog logic out of AppInfoDashboardFragment.

- refactor AppInfoDashboardFragment and move the clear instant app dialog
handling into instant app button controller.
- move the dialog fragment to be a stand-alone class instead of inner
class.

Change-Id: I51c045938f3fd1db73b4b9f7e0311a51df599a29
Fixes: 110102457
Test: make RunSettingsRoboTests
This commit is contained in:
Doris Ling
2018-06-14 14:58:52 -07:00
parent 701d9a0eea
commit f176175f24
6 changed files with 206 additions and 89 deletions

View File

@@ -16,15 +16,13 @@
package com.android.settings.applications.appinfo;
import android.app.AlertDialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import androidx.preference.PreferenceScreen;
import android.text.TextUtils;
@@ -34,12 +32,10 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.applications.AppStoreUtil;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -50,15 +46,13 @@ import com.android.settingslib.core.lifecycle.events.OnPrepareOptionsMenu;
import java.util.List;
public class InstantAppButtonsPreferenceController extends BasePreferenceController implements
LifecycleObserver, OnCreateOptionsMenu, OnPrepareOptionsMenu, OnOptionsItemSelected,
DialogInterface.OnClickListener {
LifecycleObserver, OnCreateOptionsMenu, OnPrepareOptionsMenu, OnOptionsItemSelected {
private static final String KEY_INSTANT_APP_BUTTONS = "instant_app_buttons";
private static final String META_DATA_DEFAULT_URI = "default-url";
private final AppInfoDashboardFragment mParent;
private final String mPackageName;
private final PackageManager mPackageManager;
private String mLaunchUri;
private LayoutPreference mPreference;
private MenuItem mInstallMenu;
@@ -68,7 +62,6 @@ public class InstantAppButtonsPreferenceController extends BasePreferenceControl
super(context, KEY_INSTANT_APP_BUTTONS);
mParent = parent;
mPackageName = packageName;
mPackageManager = context.getPackageManager();
mLaunchUri = getDefaultLaunchUri();
if (lifecycle != null) {
lifecycle.addObserver(this);
@@ -118,27 +111,6 @@ public class InstantAppButtonsPreferenceController extends BasePreferenceControl
}
}
@Override
public void onClick(DialogInterface dialog, int which) {
FeatureFactory.getFactory(mContext).getMetricsFeatureProvider()
.action(mContext, MetricsEvent.ACTION_SETTINGS_CLEAR_INSTANT_APP, mPackageName);
mPackageManager.deletePackageAsUser(
mPackageName, null, 0, UserHandle.myUserId());
}
AlertDialog createDialog(int id) {
if (id == AppInfoDashboardFragment.DLG_CLEAR_INSTANT_APP) {
AlertDialog confirmDialog = new AlertDialog.Builder(mContext)
.setPositiveButton(R.string.clear_instant_app_data, this)
.setNegativeButton(R.string.cancel, null)
.setTitle(R.string.clear_instant_app_data)
.setMessage(mContext.getString(R.string.clear_instant_app_confirmation))
.create();
return confirmDialog;
}
return null;
}
private void initButtons(View view) {
final Button installButton = view.findViewById(R.id.install);
final Button clearDataButton = view.findViewById(R.id.clear_data);
@@ -160,8 +132,14 @@ public class InstantAppButtonsPreferenceController extends BasePreferenceControl
installButton.setEnabled(false);
}
}
clearDataButton.setOnClickListener(
v -> mParent.showDialogInner(mParent.DLG_CLEAR_INSTANT_APP, 0));
clearDataButton.setOnClickListener(v -> showDialog());
}
private void showDialog() {
final DialogFragment newFragment =
InstantAppButtonDialogFragment.newInstance(mPackageName);
newFragment.setTargetFragment(mParent, 0);
newFragment.show(mParent.getFragmentManager(), KEY_INSTANT_APP_BUTTONS);
}
private String getDefaultLaunchUri() {