Loading src/com/android/settings/DeviceAdminAdd.java +11 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,9 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.overlay.FeatureFactory; import com.android.settings.users.UserDialogs; import org.xmlpull.v1.XmlPullParserException; Loading Loading @@ -395,6 +398,7 @@ public class DeviceAdminAdd extends Activity { void addAndFinish() { try { logSpecialPermissionChange(true, mDeviceAdmin.getComponent().getPackageName()); mDPM.setActiveAdmin(mDeviceAdmin.getComponent(), mRefreshing); EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_ACTIVATED_BY_USER, mDeviceAdmin.getActivityInfo().applicationInfo.uid); Loading Loading @@ -429,6 +433,7 @@ public class DeviceAdminAdd extends Activity { ActivityManager.getService().resumeAppSwitches(); } catch (RemoteException e) { } logSpecialPermissionChange(false, mDeviceAdmin.getComponent().getPackageName()); mDPM.removeActiveAdmin(mDeviceAdmin.getComponent()); finish(); } else { Loading @@ -444,6 +449,12 @@ public class DeviceAdminAdd extends Activity { } } void logSpecialPermissionChange(boolean allow, String packageName) { int logCategory = allow ? MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_ALLOW : MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY; FeatureFactory.getFactory(this).getMetricsFeatureProvider().action(this, logCategory, packageName); } @Override protected void onResume() { super.onResume(); Loading src/com/android/settings/applications/DrawOverlayDetails.java +11 −0 Original line number Diff line number Diff line Loading @@ -31,10 +31,12 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceClickListener; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.AppStateAppOpsBridge.PermissionState; import com.android.settings.applications.AppStateOverlayBridge.OverlayState; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.applications.ApplicationsState.AppEntry; public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenceChangeListener, Loading Loading @@ -121,11 +123,20 @@ public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenc } private void setCanDrawOverlay(boolean newState) { logSpecialPermissionChange(newState, mPackageName); mAppOpsManager.setMode(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, mPackageInfo.applicationInfo.uid, mPackageName, newState ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED); } @VisibleForTesting void logSpecialPermissionChange(boolean newState, String packageName) { int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY; FeatureFactory.getFactory(getContext()) .getMetricsFeatureProvider().action(getContext(), logCategory, packageName); } private boolean canDrawOverlay(String pkgName) { int result = mAppOpsManager.noteOpNoThrow(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, mPackageInfo.applicationInfo.uid, pkgName); Loading src/com/android/settings/applications/PremiumSmsAccess.java +28 −2 Original line number Diff line number Diff line Loading @@ -24,13 +24,17 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceViewHolder; import android.view.View; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.telephony.SmsUsageMonitor; import com.android.settings.DividerPreference; import com.android.settings.R; import com.android.settings.applications.AppStateBaseBridge.Callback; import com.android.settings.applications.AppStateSmsPremBridge.SmsState; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.notification.EmptyTextSettings; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.Callbacks; Loading Loading @@ -81,11 +85,33 @@ public class PremiumSmsAccess extends EmptyTextSettings implements Callback, Cal @Override public boolean onPreferenceChange(Preference preference, Object newValue) { PremiumSmsPreference pref = (PremiumSmsPreference) preference; mSmsBackend.setSmsState(pref.mAppEntry.info.packageName, Integer.parseInt((String) newValue)); int smsState = Integer.parseInt((String) newValue); logSpecialPermissionChange(smsState, pref.mAppEntry.info.packageName); mSmsBackend.setSmsState(pref.mAppEntry.info.packageName, smsState); return true; } @VisibleForTesting void logSpecialPermissionChange(int smsState, String packageName) { int category = SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN; switch (smsState) { case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER: category = MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK; break; case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW: category = MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY; break; case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW: category = MetricsProto.MetricsEvent. APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW; break; } if (category != SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN) { FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action( getContext(), category, packageName); } } private void updatePrefs(ArrayList<AppEntry> apps) { if (apps == null) return; setEmptyText(R.string.premium_sms_none); Loading src/com/android/settings/applications/UsageAccessDetails.java +12 −0 Original line number Diff line number Diff line Loading @@ -33,9 +33,12 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceClickListener; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.AppStateUsageBridge.UsageState; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.overlay.FeatureFactory; public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenceChangeListener, OnPreferenceClickListener { Loading Loading @@ -119,10 +122,19 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc } private void setHasAccess(boolean newState) { logSpecialPermissionChange(newState, mPackageName); mAppOpsManager.setMode(AppOpsManager.OP_GET_USAGE_STATS, mPackageInfo.applicationInfo.uid, mPackageName, newState ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED); } @VisibleForTesting void logSpecialPermissionChange(boolean newState, String packageName) { int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY; FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(), logCategory, packageName); } @Override protected boolean refreshUi() { mUsageState = mUsageBridge.getUsageInfo(mPackageName, Loading src/com/android/settings/applications/VrListenerSettings.java +17 −0 Original line number Diff line number Diff line Loading @@ -15,11 +15,14 @@ */ package com.android.settings.applications; import android.content.ComponentName; import android.provider.Settings; import android.service.vr.VrListenerService; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.overlay.FeatureFactory; import com.android.settings.utils.ManagedServiceSettings; public class VrListenerSettings extends ManagedServiceSettings { Loading Loading @@ -48,4 +51,18 @@ public class VrListenerSettings extends ManagedServiceSettings { public int getMetricsCategory() { return MetricsEvent.VR_MANAGE_LISTENERS; } @Override protected boolean setEnabled(ComponentName service, String title, boolean enable) { logSpecialPermissionChange(enable, service.getPackageName()); return super.setEnabled(service, title, enable); } @VisibleForTesting void logSpecialPermissionChange(boolean enable, String packageName) { int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_DENY; FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(), logCategory, packageName); } } Loading
src/com/android/settings/DeviceAdminAdd.java +11 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,9 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.overlay.FeatureFactory; import com.android.settings.users.UserDialogs; import org.xmlpull.v1.XmlPullParserException; Loading Loading @@ -395,6 +398,7 @@ public class DeviceAdminAdd extends Activity { void addAndFinish() { try { logSpecialPermissionChange(true, mDeviceAdmin.getComponent().getPackageName()); mDPM.setActiveAdmin(mDeviceAdmin.getComponent(), mRefreshing); EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_ACTIVATED_BY_USER, mDeviceAdmin.getActivityInfo().applicationInfo.uid); Loading Loading @@ -429,6 +433,7 @@ public class DeviceAdminAdd extends Activity { ActivityManager.getService().resumeAppSwitches(); } catch (RemoteException e) { } logSpecialPermissionChange(false, mDeviceAdmin.getComponent().getPackageName()); mDPM.removeActiveAdmin(mDeviceAdmin.getComponent()); finish(); } else { Loading @@ -444,6 +449,12 @@ public class DeviceAdminAdd extends Activity { } } void logSpecialPermissionChange(boolean allow, String packageName) { int logCategory = allow ? MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_ALLOW : MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY; FeatureFactory.getFactory(this).getMetricsFeatureProvider().action(this, logCategory, packageName); } @Override protected void onResume() { super.onResume(); Loading
src/com/android/settings/applications/DrawOverlayDetails.java +11 −0 Original line number Diff line number Diff line Loading @@ -31,10 +31,12 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceClickListener; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.AppStateAppOpsBridge.PermissionState; import com.android.settings.applications.AppStateOverlayBridge.OverlayState; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.applications.ApplicationsState.AppEntry; public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenceChangeListener, Loading Loading @@ -121,11 +123,20 @@ public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenc } private void setCanDrawOverlay(boolean newState) { logSpecialPermissionChange(newState, mPackageName); mAppOpsManager.setMode(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, mPackageInfo.applicationInfo.uid, mPackageName, newState ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED); } @VisibleForTesting void logSpecialPermissionChange(boolean newState, String packageName) { int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY; FeatureFactory.getFactory(getContext()) .getMetricsFeatureProvider().action(getContext(), logCategory, packageName); } private boolean canDrawOverlay(String pkgName) { int result = mAppOpsManager.noteOpNoThrow(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, mPackageInfo.applicationInfo.uid, pkgName); Loading
src/com/android/settings/applications/PremiumSmsAccess.java +28 −2 Original line number Diff line number Diff line Loading @@ -24,13 +24,17 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceViewHolder; import android.view.View; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.telephony.SmsUsageMonitor; import com.android.settings.DividerPreference; import com.android.settings.R; import com.android.settings.applications.AppStateBaseBridge.Callback; import com.android.settings.applications.AppStateSmsPremBridge.SmsState; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.notification.EmptyTextSettings; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.Callbacks; Loading Loading @@ -81,11 +85,33 @@ public class PremiumSmsAccess extends EmptyTextSettings implements Callback, Cal @Override public boolean onPreferenceChange(Preference preference, Object newValue) { PremiumSmsPreference pref = (PremiumSmsPreference) preference; mSmsBackend.setSmsState(pref.mAppEntry.info.packageName, Integer.parseInt((String) newValue)); int smsState = Integer.parseInt((String) newValue); logSpecialPermissionChange(smsState, pref.mAppEntry.info.packageName); mSmsBackend.setSmsState(pref.mAppEntry.info.packageName, smsState); return true; } @VisibleForTesting void logSpecialPermissionChange(int smsState, String packageName) { int category = SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN; switch (smsState) { case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER: category = MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK; break; case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW: category = MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY; break; case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW: category = MetricsProto.MetricsEvent. APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW; break; } if (category != SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN) { FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action( getContext(), category, packageName); } } private void updatePrefs(ArrayList<AppEntry> apps) { if (apps == null) return; setEmptyText(R.string.premium_sms_none); Loading
src/com/android/settings/applications/UsageAccessDetails.java +12 −0 Original line number Diff line number Diff line Loading @@ -33,9 +33,12 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceClickListener; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.AppStateUsageBridge.UsageState; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.overlay.FeatureFactory; public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenceChangeListener, OnPreferenceClickListener { Loading Loading @@ -119,10 +122,19 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc } private void setHasAccess(boolean newState) { logSpecialPermissionChange(newState, mPackageName); mAppOpsManager.setMode(AppOpsManager.OP_GET_USAGE_STATS, mPackageInfo.applicationInfo.uid, mPackageName, newState ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED); } @VisibleForTesting void logSpecialPermissionChange(boolean newState, String packageName) { int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY; FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(), logCategory, packageName); } @Override protected boolean refreshUi() { mUsageState = mUsageBridge.getUsageInfo(mPackageName, Loading
src/com/android/settings/applications/VrListenerSettings.java +17 −0 Original line number Diff line number Diff line Loading @@ -15,11 +15,14 @@ */ package com.android.settings.applications; import android.content.ComponentName; import android.provider.Settings; import android.service.vr.VrListenerService; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.overlay.FeatureFactory; import com.android.settings.utils.ManagedServiceSettings; public class VrListenerSettings extends ManagedServiceSettings { Loading Loading @@ -48,4 +51,18 @@ public class VrListenerSettings extends ManagedServiceSettings { public int getMetricsCategory() { return MetricsEvent.VR_MANAGE_LISTENERS; } @Override protected boolean setEnabled(ComponentName service, String title, boolean enable) { logSpecialPermissionChange(enable, service.getPackageName()); return super.setEnabled(service, title, enable); } @VisibleForTesting void logSpecialPermissionChange(boolean enable, String packageName) { int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_DENY; FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(), logCategory, packageName); } }