diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 0090723513a2c..8efec671e582c 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -108,6 +108,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.content.PackageMonitor; import com.android.internal.os.BackgroundThread; +import com.android.internal.util.FrameworkStatsLog; import com.android.providers.settings.SettingsState.Setting; import com.android.server.SystemConfig; @@ -224,6 +225,11 @@ public class SettingsProvider extends ContentProvider { public static final int SETTINGS_TYPE_SSAID = SettingsState.SETTINGS_TYPE_SSAID; public static final int SETTINGS_TYPE_CONFIG = SettingsState.SETTINGS_TYPE_CONFIG; + private static final int CHANGE_TYPE_INSERT = 0; + private static final int CHANGE_TYPE_DELETE = 1; + private static final int CHANGE_TYPE_UPDATE = 2; + private static final int CHANGE_TYPE_RESET = 3; + private static final Bundle NULL_SETTING_BUNDLE = Bundle.forPair( Settings.NameValueTable.VALUE, null); @@ -3020,6 +3026,9 @@ public class SettingsProvider extends ContentProvider { if (forceNotify || success) { notifyForSettingsChange(key, name); } + if (success) { + logSettingChanged(userId, name, type, CHANGE_TYPE_INSERT); + } return success; } @@ -3063,6 +3072,9 @@ public class SettingsProvider extends ContentProvider { if (forceNotify || success) { notifyForSettingsChange(key, name); } + if (success) { + logSettingChanged(userId, name, type, CHANGE_TYPE_DELETE); + } return success; } @@ -3085,7 +3097,9 @@ public class SettingsProvider extends ContentProvider { if (forceNotify || success) { notifyForSettingsChange(key, name); } - + if (success) { + logSettingChanged(userId, name, type, CHANGE_TYPE_UPDATE); + } return success; } @@ -3129,6 +3143,7 @@ public class SettingsProvider extends ContentProvider { if (settingsState.resetSettingLocked(name)) { someSettingChanged = true; notifyForSettingsChange(key, name); + logSettingChanged(userId, name, type, CHANGE_TYPE_RESET); } } if (someSettingChanged) { @@ -3149,6 +3164,7 @@ public class SettingsProvider extends ContentProvider { if (settingsState.resetSettingLocked(name)) { someSettingChanged = true; notifyForSettingsChange(key, name); + logSettingChanged(userId, name, type, CHANGE_TYPE_RESET); } } if (someSettingChanged) { @@ -3170,10 +3186,12 @@ public class SettingsProvider extends ContentProvider { if (settingsState.resetSettingLocked(name)) { someSettingChanged = true; notifyForSettingsChange(key, name); + logSettingChanged(userId, name, type, CHANGE_TYPE_RESET); } } else if (settingsState.deleteSettingLocked(name)) { someSettingChanged = true; notifyForSettingsChange(key, name); + logSettingChanged(userId, name, type, CHANGE_TYPE_DELETE); } } if (someSettingChanged) { @@ -3193,10 +3211,12 @@ public class SettingsProvider extends ContentProvider { if (settingsState.resetSettingLocked(name)) { someSettingChanged = true; notifyForSettingsChange(key, name); + logSettingChanged(userId, name, type, CHANGE_TYPE_RESET); } } else if (settingsState.deleteSettingLocked(name)) { someSettingChanged = true; notifyForSettingsChange(key, name); + logSettingChanged(userId, name, type, CHANGE_TYPE_DELETE); } if (someSettingChanged) { settingsState.persistSyncLocked(); @@ -3438,6 +3458,11 @@ public class SettingsProvider extends ContentProvider { mHandler.obtainMessage(MyHandler.MSG_NOTIFY_DATA_CHANGED).sendToTarget(); } + private void logSettingChanged(int userId, String name, int type, int changeType) { + FrameworkStatsLog.write(FrameworkStatsLog.SETTINGS_PROVIDER_SETTING_CHANGED, userId, + name, type, changeType); + } + private void notifyForConfigSettingsChangeLocked(int key, String prefix, List changedSettings) {