Propagating core settings to the system process.
bug:3511123 Now the core settins are stored in the ActivityThread instad in the AppBindData of the currently bound app. Also the settings are pushed to the system process on init. Change-Id: I100bb7dc80d0d4548def22c328427bbef1694eb7
This commit is contained in:
@@ -200,6 +200,8 @@ public final class ActivityThread {
|
||||
|
||||
static Handler sMainThreadHandler; // set once in main()
|
||||
|
||||
Bundle mCoreSettings = null;
|
||||
|
||||
private static final class ActivityClientRecord {
|
||||
IBinder token;
|
||||
int ident;
|
||||
@@ -354,7 +356,6 @@ public final class ActivityThread {
|
||||
boolean restrictedBackupMode;
|
||||
Configuration config;
|
||||
boolean handlingProfiling;
|
||||
Bundle coreSettings;
|
||||
public String toString() {
|
||||
return "AppBindData{appInfo=" + appInfo + "}";
|
||||
}
|
||||
@@ -559,6 +560,8 @@ public final class ActivityThread {
|
||||
ServiceManager.initServiceCache(services);
|
||||
}
|
||||
|
||||
setCoreSettings(coreSettings);
|
||||
|
||||
AppBindData data = new AppBindData();
|
||||
data.processName = processName;
|
||||
data.appInfo = appInfo;
|
||||
@@ -570,7 +573,6 @@ public final class ActivityThread {
|
||||
data.debugMode = debugMode;
|
||||
data.restrictedBackupMode = isRestrictedBackupMode;
|
||||
data.config = config;
|
||||
data.coreSettings = coreSettings;
|
||||
queueOrSendMessage(H.BIND_APPLICATION, data);
|
||||
}
|
||||
|
||||
@@ -898,8 +900,8 @@ public final class ActivityThread {
|
||||
pw.println(String.format(format, objs));
|
||||
}
|
||||
|
||||
public void setCoreSettings(Bundle settings) {
|
||||
queueOrSendMessage(H.SET_CORE_SETTINGS, settings);
|
||||
public void setCoreSettings(Bundle coreSettings) {
|
||||
queueOrSendMessage(H.SET_CORE_SETTINGS, coreSettings);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2720,10 +2722,8 @@ public final class ActivityThread {
|
||||
}
|
||||
|
||||
private void handleSetCoreSettings(Bundle coreSettings) {
|
||||
if (mBoundApplication != null) {
|
||||
synchronized (mBoundApplication) {
|
||||
mBoundApplication.coreSettings = coreSettings;
|
||||
}
|
||||
synchronized (mPackages) {
|
||||
mCoreSettings = coreSettings;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3990,13 +3990,9 @@ public final class ActivityThread {
|
||||
}
|
||||
|
||||
public int getIntCoreSetting(String key, int defaultValue) {
|
||||
if (mBoundApplication == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
synchronized (mBoundApplication) {
|
||||
Bundle coreSettings = mBoundApplication.coreSettings;
|
||||
if (coreSettings != null) {
|
||||
return coreSettings.getInt(key, defaultValue);
|
||||
synchronized (mPackages) {
|
||||
if (mCoreSettings != null) {
|
||||
return mCoreSettings.getInt(key, defaultValue);
|
||||
} else {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ class CoreSettingsObserver extends ContentObserver {
|
||||
super(activityManagerService.mHandler);
|
||||
mActivityManagerService = activityManagerService;
|
||||
beginObserveCoreSettings();
|
||||
populateCoreSettings(mCoreSettings);
|
||||
sendCoreSettings();
|
||||
}
|
||||
|
||||
public Bundle getCoreSettingsLocked() {
|
||||
@@ -62,11 +62,15 @@ class CoreSettingsObserver extends ContentObserver {
|
||||
@Override
|
||||
public void onChange(boolean selfChange) {
|
||||
synchronized (mActivityManagerService) {
|
||||
populateCoreSettings(mCoreSettings);
|
||||
mActivityManagerService.onCoreSettingsChange(mCoreSettings);
|
||||
sendCoreSettings();
|
||||
}
|
||||
}
|
||||
|
||||
private void sendCoreSettings() {
|
||||
populateCoreSettings(mCoreSettings);
|
||||
mActivityManagerService.onCoreSettingsChange(mCoreSettings);
|
||||
}
|
||||
|
||||
private void beginObserveCoreSettings() {
|
||||
for (String setting : sCoreSettingToTypeMap.keySet()) {
|
||||
Uri uri = Settings.Secure.getUriFor(setting);
|
||||
|
||||
Reference in New Issue
Block a user