Introduce AdbPreferenceController

- Create new AdbPreferenceController
 - Create AdbOnChangeListener interface for adb change callbacks
 - Create EnableAdbSettingWarningDialog
 - Create controller inside the DashboardFragment
 - Port logic from DevelopmentSettings into the controller
 - Add deprecated annotation to EnableAdbPreferenceController

Bug: 34203528
Test: make RunSettingsRoboTests -j40
Change-Id: Id57146149943d770bf5ccc9ed5ecc6ea9d8ae66c
This commit is contained in:
jeffreyhuang
2017-09-21 11:14:22 -07:00
parent 6931fcd61f
commit 8d8f1663b4
9 changed files with 504 additions and 3 deletions

View File

@@ -17,13 +17,19 @@
package com.android.settings.development;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.support.annotation.VisibleForTesting;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Switch;
import com.android.internal.logging.nano.MetricsProto;
@@ -43,7 +49,7 @@ import java.util.Arrays;
import java.util.List;
public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFragment
implements SwitchBar.OnSwitchChangeListener, OemUnlockDialogHost {
implements SwitchBar.OnSwitchChangeListener, OemUnlockDialogHost, AdbDialogHost {
private static final String TAG = "DevSettingsDashboard";
@@ -52,6 +58,17 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
private DevelopmentSwitchBarController mSwitchBarController;
private List<AbstractPreferenceController> mPreferenceControllers = new ArrayList<>();
private final BroadcastReceiver mEnableAdbReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
for (AbstractPreferenceController controller : mPreferenceControllers) {
if (controller instanceof AdbOnChangeListener) {
((AdbOnChangeListener) controller).onAdbSettingChanged();
}
}
}
};
public DevelopmentSettingsDashboardFragment() {
super(UserManager.DISALLOW_DEBUGGING_FEATURES);
}
@@ -79,6 +96,19 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
mSwitchBar.show();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
registerReceivers();
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onDestroyView() {
super.onDestroyView();
unregisterReceivers();
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.DEVELOPMENT;
@@ -120,6 +150,21 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
controller.onOemUnlockDismissed();
}
@Override
public void onEnableAdbDialogConfirmed() {
final AdbPreferenceController controller = getDevelopmentOptionsController(
AdbPreferenceController.class);
controller.onAdbDialogConfirmed();
}
@Override
public void onEnableAdbDialogDismissed() {
final AdbPreferenceController controller = getDevelopmentOptionsController(
AdbPreferenceController.class);
controller.onAdbDialogDismissed();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
boolean handledResult = false;
@@ -160,6 +205,16 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
return mPreferenceControllers;
}
private void registerReceivers() {
LocalBroadcastManager.getInstance(getContext())
.registerReceiver(mEnableAdbReceiver, new IntentFilter(
AdbPreferenceController.ADB_STATE_CHANGED));
}
private void unregisterReceivers() {
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mEnableAdbReceiver);
}
void onEnableDevelopmentOptionsConfirmed() {
DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(getContext(), true);
for (AbstractPreferenceController controller : mPreferenceControllers) {
@@ -191,7 +246,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
controllers.add(new DisableAutomaticUpdatesPreferenceController(context));
// system ui demo mode
// quick settings developer tiles
// usb debugging
controllers.add(new AdbPreferenceController(context, fragment));
// revoke usb debugging authorizations
controllers.add(new LocalTerminalPreferenceController(context));
// bug report shortcut