Log accessibility privacy warning status (2/2)
Uses the atom NonA11yToolServiceWarningReported in westworld to log the accessibility privacy warning service has been disabled in accessibility setting. Bug: 180983963 Test: m statsd_testdrive && statsd_testdrive 384 Change-Id: I4fb23066159f3086aaaeff521f305266e58cf42d
This commit is contained in:
@@ -211,6 +211,11 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment {
|
|||||||
|
|
||||||
final String htmlDescription = info.loadHtmlDescription(getActivity().getPackageManager());
|
final String htmlDescription = info.loadHtmlDescription(getActivity().getPackageManager());
|
||||||
extras.putString(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, htmlDescription);
|
extras.putString(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, htmlDescription);
|
||||||
|
|
||||||
|
// We will log nonA11yTool status from PolicyWarningUIController; others none.
|
||||||
|
extras.putLong(AccessibilitySettings.EXTRA_TIME_FOR_LOGGING,
|
||||||
|
getActivity().getIntent().getLongExtra(
|
||||||
|
AccessibilitySettings.EXTRA_TIME_FOR_LOGGING, 0));
|
||||||
return extras;
|
return extras;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -101,6 +101,7 @@ public class AccessibilitySettings extends DashboardFragment {
|
|||||||
static final String EXTRA_LAUNCHED_FROM_SUW = "from_suw";
|
static final String EXTRA_LAUNCHED_FROM_SUW = "from_suw";
|
||||||
static final String EXTRA_ANIMATED_IMAGE_RES = "animated_image_res";
|
static final String EXTRA_ANIMATED_IMAGE_RES = "animated_image_res";
|
||||||
static final String EXTRA_HTML_DESCRIPTION = "html_description";
|
static final String EXTRA_HTML_DESCRIPTION = "html_description";
|
||||||
|
static final String EXTRA_TIME_FOR_LOGGING = "start_time_to_log_a11y_tool";
|
||||||
|
|
||||||
// Timeout before we update the services if packages are added/removed
|
// Timeout before we update the services if packages are added/removed
|
||||||
// since the AccessibilityManagerService has to do that processing first
|
// since the AccessibilityManagerService has to do that processing first
|
||||||
|
@@ -41,4 +41,21 @@ public final class AccessibilityStatsLogUtils {
|
|||||||
return enabled ? SettingsStatsLog.ACCESSIBILITY_SERVICE_REPORTED__SERVICE_STATUS__ENABLED
|
return enabled ? SettingsStatsLog.ACCESSIBILITY_SERVICE_REPORTED__SERVICE_STATUS__ENABLED
|
||||||
: SettingsStatsLog.ACCESSIBILITY_SERVICE_REPORTED__SERVICE_STATUS__DISABLED;
|
: SettingsStatsLog.ACCESSIBILITY_SERVICE_REPORTED__SERVICE_STATUS__DISABLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs when the non-a11y category service is disabled. Calls this when the user disables the
|
||||||
|
* non-a11y category service for the first time.
|
||||||
|
*
|
||||||
|
* @param packageName package name of the service
|
||||||
|
* @param durationMills duration in milliseconds between starting the page and disabling the
|
||||||
|
* service
|
||||||
|
*/
|
||||||
|
static void logDisableNonA11yCategoryService(String packageName, long durationMills) {
|
||||||
|
com.android.internal.accessibility.util.AccessibilityStatsLogUtils
|
||||||
|
.logNonA11yToolServiceWarningReported(
|
||||||
|
packageName,
|
||||||
|
com.android.internal.accessibility.util.AccessibilityStatsLogUtils
|
||||||
|
.ACCESSIBILITY_PRIVACY_WARNING_STATUS_SERVICE_DISABLED,
|
||||||
|
durationMills);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -38,6 +38,7 @@ import android.content.pm.ServiceInfo;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.SystemClock;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.storage.StorageManager;
|
import android.os.storage.StorageManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -66,6 +67,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
|
|
||||||
private static final String TAG = "ToggleAccessibilityServicePreferenceFragment";
|
private static final String TAG = "ToggleAccessibilityServicePreferenceFragment";
|
||||||
private static final int ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION = 1;
|
private static final int ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION = 1;
|
||||||
|
private static final String KEY_HAS_LOGGED = "has_logged";
|
||||||
private LockPatternUtils mLockPatternUtils;
|
private LockPatternUtils mLockPatternUtils;
|
||||||
private AtomicBoolean mIsDialogShown = new AtomicBoolean(/* initialValue= */ false);
|
private AtomicBoolean mIsDialogShown = new AtomicBoolean(/* initialValue= */ false);
|
||||||
|
|
||||||
@@ -81,6 +83,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
|
|
||||||
private Dialog mDialog;
|
private Dialog mDialog;
|
||||||
private BroadcastReceiver mPackageRemovedReceiver;
|
private BroadcastReceiver mPackageRemovedReceiver;
|
||||||
|
private boolean mDisabledStateLogged = false;
|
||||||
|
private long mStartTimeMillsForLogging = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
@@ -98,6 +102,11 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
mLockPatternUtils = new LockPatternUtils(getPrefContext());
|
mLockPatternUtils = new LockPatternUtils(getPrefContext());
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
if (savedInstanceState.containsKey(KEY_HAS_LOGGED)) {
|
||||||
|
mDisabledStateLogged = savedInstanceState.getBoolean(KEY_HAS_LOGGED);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -118,10 +127,21 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
mSettingsContentObserver.register(getContentResolver());
|
mSettingsContentObserver.register(getContentResolver());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
if (mStartTimeMillsForLogging > 0) {
|
||||||
|
outState.putBoolean(KEY_HAS_LOGGED, mDisabledStateLogged);
|
||||||
|
}
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPreferenceToggled(String preferenceKey, boolean enabled) {
|
public void onPreferenceToggled(String preferenceKey, boolean enabled) {
|
||||||
ComponentName toggledService = ComponentName.unflattenFromString(preferenceKey);
|
ComponentName toggledService = ComponentName.unflattenFromString(preferenceKey);
|
||||||
logAccessibilityServiceEnabled(toggledService, enabled);
|
logAccessibilityServiceEnabled(toggledService, enabled);
|
||||||
|
if (!enabled) {
|
||||||
|
logDisabledState(toggledService.getPackageName());
|
||||||
|
}
|
||||||
AccessibilityUtils.setAccessibilityServiceState(getPrefContext(), toggledService, enabled);
|
AccessibilityUtils.setAccessibilityServiceState(getPrefContext(), toggledService, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -396,6 +416,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
// Get Accessibility service name.
|
// Get Accessibility service name.
|
||||||
mPackageName = getAccessibilityServiceInfo().getResolveInfo().loadLabel(
|
mPackageName = getAccessibilityServiceInfo().getResolveInfo().loadLabel(
|
||||||
getPackageManager());
|
getPackageManager());
|
||||||
|
|
||||||
|
mStartTimeMillsForLogging = arguments.getLong(AccessibilitySettings.EXTRA_TIME_FOR_LOGGING);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDialogButtonFromDisableToggleClicked(DialogInterface dialog, int which) {
|
private void onDialogButtonFromDisableToggleClicked(DialogInterface dialog, int which) {
|
||||||
@@ -558,4 +580,13 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
false));
|
false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void logDisabledState(String packageName) {
|
||||||
|
if (mStartTimeMillsForLogging > 0 && !mDisabledStateLogged) {
|
||||||
|
AccessibilityStatsLogUtils.logDisableNonA11yCategoryService(
|
||||||
|
packageName,
|
||||||
|
SystemClock.elapsedRealtime() - mStartTimeMillsForLogging);
|
||||||
|
mDisabledStateLogged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user