summaryrefslogtreecommitdiff
path: root/SettingsAPI/java/com/android/tv/settings/library/system/DevelopmentState.java
diff options
context:
space:
mode:
Diffstat (limited to 'SettingsAPI/java/com/android/tv/settings/library/system/DevelopmentState.java')
-rw-r--r--SettingsAPI/java/com/android/tv/settings/library/system/DevelopmentState.java417
1 files changed, 0 insertions, 417 deletions
diff --git a/SettingsAPI/java/com/android/tv/settings/library/system/DevelopmentState.java b/SettingsAPI/java/com/android/tv/settings/library/system/DevelopmentState.java
deleted file mode 100644
index 1b4eec7aa..000000000
--- a/SettingsAPI/java/com/android/tv/settings/library/system/DevelopmentState.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.tv.settings.library.system;
-
-import static com.android.tv.settings.library.ManagerUtil.STATE_DEVELOPMENT;
-import static com.android.tv.settings.library.overlay.FlavorUtils.X_EXPERIENCE_FLAVORS_MASK;
-
-import android.app.AppOpsManager;
-import android.app.admin.DevicePolicyManager;
-import android.app.backup.IBackupManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.wifi.WifiManager;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.ServiceManager;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.sysprop.AdbProperties;
-import android.view.IWindowManager;
-import android.widget.Toast;
-
-import com.android.tv.settings.library.PreferenceCompat;
-import com.android.tv.settings.library.UIUpdateCallback;
-import com.android.tv.settings.library.data.PreferenceControllerState;
-import com.android.tv.settings.library.overlay.FlavorUtils;
-import com.android.tv.settings.library.system.development.audio.AudioDebug;
-import com.android.tv.settings.library.system.development.audio.AudioMetrics;
-import com.android.tv.settings.library.util.AbstractPreferenceController;
-import com.android.tv.settings.library.util.ResourcesUtil;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-
-public class DevelopmentState extends PreferenceControllerState {
- private static final String TAG = "DevelopmentSettings";
-
- private static final String ENABLE_DEVELOPER = "development_settings_enable";
- private static final String ENABLE_ADB = "enable_adb";
- private static final String CLEAR_ADB_KEYS = "clear_adb_keys";
- private static final String ENABLE_TERMINAL = "enable_terminal";
- private static final String KEEP_SCREEN_ON = "keep_screen_on";
- private static final String BT_HCI_SNOOP_LOG = "bt_hci_snoop_log";
- private static final String BTSNOOP_LOG_MODE_PROPERTY = "persist.bluetooth.btsnooplogmode";
- private static final String ENABLE_OEM_UNLOCK = "oem_unlock_enable";
- private static final String HDCP_CHECKING_KEY = "hdcp_checking";
- private static final String HDCP_CHECKING_PROPERTY = "persist.sys.hdcp_checking";
- private static final String LOCAL_BACKUP_PASSWORD = "local_backup_password";
- private static final String BUGREPORT = "bugreport";
- private static final String BUGREPORT_IN_POWER_KEY = "bugreport_in_power";
-
- private static final String DEBUG_APP_KEY = "debug_app";
- private static final String WAIT_FOR_DEBUGGER_KEY = "wait_for_debugger";
- private static final String MOCK_LOCATION_APP_KEY = "mock_location_app";
- private static final String VERIFY_APPS_OVER_USB_KEY = "verify_apps_over_usb";
- private static final String DEBUG_VIEW_ATTRIBUTES = "debug_view_attributes";
- private static final String FORCE_ALLOW_ON_EXTERNAL_KEY = "force_allow_on_external";
- private static final String STRICT_MODE_KEY = "strict_mode";
- private static final String POINTER_LOCATION_KEY = "pointer_location";
- private static final String SHOW_TOUCHES_KEY = "show_touches";
- private static final String SHOW_SCREEN_UPDATES_KEY = "show_screen_updates";
- private static final String DISABLE_OVERLAYS_KEY = "disable_overlays";
- private static final String SIMULATE_COLOR_SPACE = "simulate_color_space";
- private static final String USB_AUDIO_KEY = "usb_audio";
- private static final String RECORD_AUDIO_KEY = "record_audio";
- private static final String PLAY_RECORDED_AUDIO_KEY = "play_recorded_audio";
- private static final String SAVE_RECORDED_AUDIO_KEY = "save_recorded_audio";
- private static final String TIME_TO_START_READ_KEY = "time_to_start_read";
- private static final String TIME_TO_VALID_AUDIO_KEY = "time_to_valid_audio";
- private static final String EMPTY_AUDIO_DURATION_KEY = "empty_audio_duration";
- private static final String FORCE_MSAA_KEY = "force_msaa";
- private static final String TRACK_FRAME_TIME_KEY = "track_frame_time";
- private static final String SHOW_NON_RECTANGULAR_CLIP_KEY = "show_non_rect_clip";
- private static final String SHOW_HW_SCREEN_UPDATES_KEY = "show_hw_screen_updates";
- private static final String SHOW_HW_LAYERS_UPDATES_KEY = "show_hw_layers_updates";
- private static final String DEBUG_HW_OVERDRAW_KEY = "debug_hw_overdraw";
- private static final String DEBUG_LAYOUT_KEY = "debug_layout";
- private static final String FORCE_RTL_LAYOUT_KEY = "force_rtl_layout_all_locales";
- private static final String WINDOW_BLURS_KEY = "window_blurs";
- private static final String WINDOW_ANIMATION_SCALE_KEY = "window_animation_scale";
- private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale";
- private static final String ANIMATOR_DURATION_SCALE_KEY = "animator_duration_scale";
- private static final String OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices";
- private static final String DEBUG_DEBUGGING_CATEGORY_KEY = "debug_debugging_category";
-
- private static final String WIFI_DISPLAY_CERTIFICATION_KEY = "wifi_display_certification";
- private static final String WIFI_VERBOSE_LOGGING_KEY = "wifi_verbose_logging";
- private static final String USB_CONFIGURATION_KEY = "select_usb_configuration";
- private static final String MOBILE_DATA_ALWAYS_ON = "mobile_data_always_on";
- private static final String KEY_COLOR_MODE = "color_mode";
- private static final String FORCE_RESIZABLE_KEY = "force_resizable_activities";
-
- private static final String INACTIVE_APPS_KEY = "inactive_apps";
-
- private static final String OPENGL_TRACES_KEY = "enable_opengl_traces";
-
- private static final String IMMEDIATELY_DESTROY_ACTIVITIES_KEY =
- "immediately_destroy_activities";
- private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit";
-
- private static final String SHOW_ALL_ANRS_KEY = "show_all_anrs";
-
- private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive";
-
- private static final String TERMINAL_APP_PACKAGE = "com.android.terminal";
-
- private static final int RESULT_DEBUG_APP = 1000;
- private static final int RESULT_MOCK_LOCATION_APP = 1001;
-
- private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
-
- private static final String DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES = "262144"; // 256K
-
- private static final int[] MOCK_LOCATION_APP_OPS = new int[]{AppOpsManager.OP_MOCK_LOCATION};
-
- private static final String STATE_SHOWING_DIALOG_KEY = "showing_dialog_key";
-
- private String mPendingDialogKey;
-
- private IWindowManager mWindowManager;
- private IBackupManager mBackupManager;
- private DevicePolicyManager mDpm;
- private UserManager mUm;
- private WifiManager mWifiManager;
- private ContentResolver mContentResolver;
-
- private boolean mLastEnabledState;
- private boolean mHaveDebugSettings;
-
- private PreferenceCompat mEnableDeveloper;
- private PreferenceCompat mEnableAdb;
- private PreferenceCompat mClearAdbKeys;
- private PreferenceCompat mEnableTerminal;
- private PreferenceCompat mBugreport;
- private PreferenceCompat mKeepScreenOn;
- private PreferenceCompat mDebugDebuggingCategory;
- private PreferenceCompat mBtHciSnoopLog;
- private PreferenceCompat mDebugViewAttributes;
- private PreferenceCompat mForceAllowOnExternal;
-
- private PreferenceCompat mPassword;
- private String mDebugApp;
- private PreferenceCompat mDebugAppPref;
-
- private String mMockLocationApp;
- private PreferenceCompat mMockLocationAppPref;
-
- private PreferenceCompat mWaitForDebugger;
- private PreferenceCompat mVerifyAppsOverUsb;
- private PreferenceCompat mWifiDisplayCertification;
- private PreferenceCompat mWifiVerboseLogging;
- private PreferenceCompat mMobileDataAlwaysOn;
-
- private PreferenceCompat mStrictMode;
- private PreferenceCompat mPointerLocation;
- private PreferenceCompat mShowTouches;
- private PreferenceCompat mShowScreenUpdates;
- private PreferenceCompat mDisableOverlays;
- private PreferenceCompat mForceMsaa;
- private PreferenceCompat mShowHwScreenUpdates;
- private PreferenceCompat mShowHwLayersUpdates;
- private PreferenceCompat mDebugLayout;
- private PreferenceCompat mForceRtlLayout;
- private PreferenceCompat mWindowBlurs;
- private PreferenceCompat mDebugHwOverdraw;
- private PreferenceCompat mTrackFrameTime;
- private PreferenceCompat mShowNonRectClip;
- private PreferenceCompat mWindowAnimationScale;
- private PreferenceCompat mTransitionAnimationScale;
- private PreferenceCompat mAnimatorDurationScale;
- private PreferenceCompat mOverlayDisplayDevices;
- private PreferenceCompat mOpenGLTraces;
- private PreferenceCompat mSimulateColorSpace;
- private PreferenceCompat mUSBAudio;
- private PreferenceCompat mRecordAudio;
- private PreferenceCompat mPlayRecordedAudio;
- private PreferenceCompat mSaveAudio;
- private PreferenceCompat mTimeToStartRead;
- private PreferenceCompat mTimeToValidAudio;
- private PreferenceCompat mEmptyAudioDuration;
- private PreferenceCompat mImmediatelyDestroyActivities;
- private PreferenceCompat mAppProcessLimit;
- private PreferenceCompat mShowAllANRs;
- private PreferenceCompat mForceResizable;
- private PreferenceCompat mHdcpChecking;
-
- private boolean mUnavailable;
-
- private AudioDebug mAudioDebug;
- private final ArrayList<PreferenceCompat> mAllPrefCompats = new ArrayList<>();
- private final ArrayList<PreferenceCompat> mResetSwitchPrefCompats = new ArrayList<>();
- private final HashSet<PreferenceCompat> mDisabledPrefCompats = new HashSet<>();
-
- public DevelopmentState(Context context,
- UIUpdateCallback callback) {
- super(context, callback);
- }
-
- @Override
- public void onCreate(Bundle extras) {
- super.onCreate(extras);
- if (extras != null) {
- // Don't show this in onCreate since we might be on the back stack
- mPendingDialogKey = extras.getString(STATE_SHOWING_DIALOG_KEY);
- }
-
- mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
- mBackupManager = IBackupManager.Stub.asInterface(
- ServiceManager.getService(Context.BACKUP_SERVICE));
- mDpm = mContext.getSystemService(DevicePolicyManager.class);
- mUm = mContext.getSystemService(UserManager.class);
-
- mWifiManager = mContext.getSystemService(WifiManager.class);
-
- mContentResolver = mContext.getContentResolver();
-
- mAudioDebug = new AudioDebug(mContext,
- (boolean successful) -> onAudioRecorded(successful),
- (AudioMetrics.Data data) -> updateAudioRecordingMetrics(data));
- mEnableDeveloper = mPreferenceCompatManager.getOrCreatePrefCompat(ENABLE_DEVELOPER);
- mEnableAdb = findAndInitSwitchPrefCompat(ENABLE_DEVELOPER);
- mDebugDebuggingCategory = mPreferenceCompatManager.getOrCreatePrefCompat(
- DEBUG_DEBUGGING_CATEGORY_KEY);
- mClearAdbKeys = mPreferenceCompatManager.getOrCreatePrefCompat(CLEAR_ADB_KEYS);
- mKeepScreenOn = mPreferenceCompatManager.getOrCreatePrefCompat(KEEP_SCREEN_ON);
- if (!AdbProperties.secure().orElse(false)) {
- mClearAdbKeys.setVisible(false);
- }
- mAllPrefCompats.add(mClearAdbKeys);
- mEnableTerminal = findAndInitSwitchPrefCompat(ENABLE_TERMINAL);
- if (!isPackageInstalled(mContext, TERMINAL_APP_PACKAGE)) {
- mEnableTerminal.setVisible(false);
- }
- mBugreport = mPreferenceCompatManager.getOrCreatePrefCompat(BUGREPORT);
- if (!showBugReportPreference()) {
- mBugreport.setVisible(false);
- }
-
- mKeepScreenOn = findAndInitSwitchPrefCompat(KEEP_SCREEN_ON);
- mBtHciSnoopLog = addListPrefCompat(BT_HCI_SNOOP_LOG);
- mDebugViewAttributes = findAndInitSwitchPrefCompat(DEBUG_VIEW_ATTRIBUTES);
- mForceAllowOnExternal = findAndInitSwitchPrefCompat(FORCE_ALLOW_ON_EXTERNAL_KEY);
- if (!mUm.isAdminUser()) {
- disableForUser(mEnableAdb);
- disableForUser(mClearAdbKeys);
- disableForUser(mEnableTerminal);
- disableForUser(mPassword);
- }
- mDebugAppPref = mPreferenceCompatManager.getOrCreatePrefCompat(DEBUG_APP_KEY);
- mAllPrefCompats.add(mDebugAppPref);
- mWaitForDebugger = findAndInitSwitchPrefCompat(WAIT_FOR_DEBUGGER_KEY);
- mMockLocationAppPref = mPreferenceCompatManager.getOrCreatePrefCompat(
- MOCK_LOCATION_APP_KEY);
- mAllPrefCompats.add(mMockLocationAppPref);
- mVerifyAppsOverUsb = findAndInitSwitchPrefCompat(VERIFY_APPS_OVER_USB_KEY);
- if (!showVerifierSetting()) {
- mVerifyAppsOverUsb.setVisible(false);
- mVerifyAppsOverUsb.setEnabled(false);
- }
- mStrictMode = findAndInitSwitchPrefCompat(STRICT_MODE_KEY);
- mPointerLocation = findAndInitSwitchPrefCompat(POINTER_LOCATION_KEY);
- mShowTouches = findAndInitSwitchPrefCompat(SHOW_TOUCHES_KEY);
- mShowScreenUpdates = findAndInitSwitchPrefCompat(SHOW_SCREEN_UPDATES_KEY);
- mDisableOverlays = findAndInitSwitchPrefCompat(DISABLE_OVERLAYS_KEY);
- mForceMsaa = findAndInitSwitchPrefCompat(FORCE_MSAA_KEY);
- mTrackFrameTime = addListPrefCompat(TRACK_FRAME_TIME_KEY);
- mShowNonRectClip = addListPrefCompat(SHOW_NON_RECTANGULAR_CLIP_KEY);
- mShowHwScreenUpdates = findAndInitSwitchPrefCompat(SHOW_HW_SCREEN_UPDATES_KEY);
- mShowHwLayersUpdates = findAndInitSwitchPrefCompat(SHOW_HW_LAYERS_UPDATES_KEY);
- mDebugLayout = findAndInitSwitchPrefCompat(DEBUG_LAYOUT_KEY);
- mForceRtlLayout = findAndInitSwitchPrefCompat(FORCE_RTL_LAYOUT_KEY);
- mWindowBlurs = findAndInitSwitchPrefCompat(WINDOW_BLURS_KEY);
- mDebugHwOverdraw = addListPrefCompat(DEBUG_HW_OVERDRAW_KEY);
- mWifiDisplayCertification = findAndInitSwitchPrefCompat(WIFI_DISPLAY_CERTIFICATION_KEY);
- mWifiVerboseLogging = findAndInitSwitchPrefCompat(WIFI_VERBOSE_LOGGING_KEY);
- mMobileDataAlwaysOn = findAndInitSwitchPrefCompat(MOBILE_DATA_ALWAYS_ON);
-
- mWindowAnimationScale = addListPrefCompat(WINDOW_ANIMATION_SCALE_KEY);
- mTransitionAnimationScale = addListPrefCompat(TRANSITION_ANIMATION_SCALE_KEY);
- mAnimatorDurationScale = addListPrefCompat(ANIMATOR_DURATION_SCALE_KEY);
- mOverlayDisplayDevices = addListPrefCompat(OVERLAY_DISPLAY_DEVICES_KEY);
- mOpenGLTraces = addListPrefCompat(OPENGL_TRACES_KEY);
- mSimulateColorSpace = addListPrefCompat(SIMULATE_COLOR_SPACE);
- mUSBAudio = findAndInitSwitchPrefCompat(USB_AUDIO_KEY);
- mRecordAudio = findAndInitSwitchPrefCompat(RECORD_AUDIO_KEY);
- mPlayRecordedAudio = mPreferenceCompatManager.getOrCreatePrefCompat(
- PLAY_RECORDED_AUDIO_KEY);
- mPlayRecordedAudio.setVisible(false);
- mSaveAudio = mPreferenceCompatManager.getOrCreatePrefCompat(SAVE_RECORDED_AUDIO_KEY);
- mSaveAudio.setVisible(false);
- mTimeToStartRead = mPreferenceCompatManager.getOrCreatePrefCompat(TIME_TO_START_READ_KEY);
- mTimeToStartRead.setVisible(false);
- mTimeToValidAudio = mPreferenceCompatManager.getOrCreatePrefCompat(TIME_TO_VALID_AUDIO_KEY);
- mTimeToValidAudio.setVisible(false);
- mEmptyAudioDuration = mPreferenceCompatManager.getOrCreatePrefCompat(
- EMPTY_AUDIO_DURATION_KEY);
- mEmptyAudioDuration.setVisible(false);
- mForceResizable = findAndInitSwitchPrefCompat(FORCE_RESIZABLE_KEY);
-
- mImmediatelyDestroyActivities = findAndInitSwitchPrefCompat(
- IMMEDIATELY_DESTROY_ACTIVITIES_KEY);
-
- mAppProcessLimit = addListPrefCompat(APP_PROCESS_LIMIT_KEY);
-
- mShowAllANRs = findAndInitSwitchPrefCompat(SHOW_ALL_ANRS_KEY);
-
- mHdcpChecking = mPreferenceCompatManager.getOrCreatePrefCompat(HDCP_CHECKING_KEY);
- mAllPrefCompats.add(mHdcpChecking);
- removePreferenceForProduction(mHdcpChecking);
- }
-
-
- private PreferenceCompat addListPrefCompat(String prefKey) {
- PreferenceCompat pref = mPreferenceCompatManager.getOrCreatePrefCompat(prefKey);
- pref.setType(PreferenceCompat.TYPE_LIST);
- mAllPrefCompats.add(pref);
- return pref;
- }
-
- /** Called when audio recording is finished. Updates UI component states. */
- private void onAudioRecorded(boolean successful) {
- mPlayRecordedAudio.setVisible(successful);
- mSaveAudio.setVisible(successful);
- mRecordAudio.setChecked(false);
-
- if (!successful) {
- Toast errorToast = Toast.makeText(mContext,
- ResourcesUtil.getString(mContext, "show_audio_recording_failed"),
- Toast.LENGTH_SHORT);
- errorToast.show();
- }
- }
-
- /** Updates displayed audio recording metrics */
- private void updateAudioRecordingMetrics(AudioMetrics.Data data) {
- updateAudioRecordingMetric(mTimeToStartRead, data.timeToStartReadMs);
- updateAudioRecordingMetric(mTimeToValidAudio, data.timeToValidAudioMs);
- updateAudioRecordingMetric(mEmptyAudioDuration, data.emptyAudioDurationMs);
- }
-
- private static void updateAudioRecordingMetric(PreferenceCompat preference, Optional<Long> ts) {
- ts.ifPresent(x -> preference.setVisible(true));
- if (preference.getVisible() == PreferenceCompat.STATUS_ON) {
- preference.setSummary(AudioMetrics.msTimestampToString(ts));
- }
- }
-
- private boolean removePreferenceForProduction(PreferenceCompat preference) {
- if ("user".equals(Build.TYPE)) {
- preference.setVisible(false);
- return true;
- }
- return false;
- }
-
- private boolean showVerifierSetting() {
- return Settings.Global.getInt(mContentResolver,
- Settings.Global.PACKAGE_VERIFIER_SETTING_VISIBLE, 1) > 0;
- }
-
- private PreferenceCompat findAndInitSwitchPrefCompat(String key) {
- PreferenceCompat pref = mPreferenceCompatManager.getOrCreatePrefCompat(key);
- pref.setType(PreferenceCompat.TYPE_SWITCH);
- if (pref == null) {
- throw new IllegalArgumentException("Cannot find preference with key = " + key);
- }
- mAllPrefCompats.add(pref);
- mResetSwitchPrefCompats.add(pref);
- return pref;
- }
-
- @Override
- public int getStateIdentifier() {
- return STATE_DEVELOPMENT;
- }
-
- private static boolean isPackageInstalled(Context context, String packageName) {
- try {
- return context.getPackageManager().getPackageInfo(packageName, 0) != null;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-
- private void disableForUser(PreferenceCompat pref) {
- if (pref != null) {
- pref.setEnabled(false);
- mDisabledPrefCompats.add(pref);
- }
- }
-
- private boolean showBugReportPreference() {
- return (FlavorUtils.getFlavor(mContext) & X_EXPERIENCE_FLAVORS_MASK) == 0;
- }
-
- @Override
- protected List<AbstractPreferenceController> onCreatePreferenceControllers(Context context) {
- return null;
- }
-}