Merge "Fix issue #18942959: Phone getting stuck then restarts after unplugging from Audi" into lmp-mr1-dev
automerge: 54f9b1e
* commit '54f9b1eedc86a3066bedf3d8ea3e8ffbb83cb678':
Fix issue #18942959: Phone getting stuck then restarts after unplugging from Audi
This commit is contained in:
@@ -15,7 +15,7 @@ import java.nio.charset.CoderResult;
|
||||
import java.nio.charset.CodingErrorAction;
|
||||
|
||||
public class FastPrintWriter extends PrintWriter {
|
||||
private static Writer sDummyWriter = new Writer() {
|
||||
private static class DummyWriter extends Writer {
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
UnsupportedOperationException ex
|
||||
@@ -100,7 +100,7 @@ public class FastPrintWriter extends PrintWriter {
|
||||
* if {@code out} is {@code null}.
|
||||
*/
|
||||
public FastPrintWriter(OutputStream out, boolean autoFlush, int bufferLen) {
|
||||
super(sDummyWriter, autoFlush);
|
||||
super(new DummyWriter(), autoFlush);
|
||||
if (out == null) {
|
||||
throw new NullPointerException("out is null");
|
||||
}
|
||||
@@ -169,7 +169,7 @@ public class FastPrintWriter extends PrintWriter {
|
||||
* if {@code wr} is {@code null}.
|
||||
*/
|
||||
public FastPrintWriter(Writer wr, boolean autoFlush, int bufferLen) {
|
||||
super(sDummyWriter, autoFlush);
|
||||
super(new DummyWriter(), autoFlush);
|
||||
if (wr == null) {
|
||||
throw new NullPointerException("wr is null");
|
||||
}
|
||||
@@ -212,7 +212,7 @@ public class FastPrintWriter extends PrintWriter {
|
||||
* if {@code pr} is {@code null}.
|
||||
*/
|
||||
public FastPrintWriter(Printer pr, int bufferLen) {
|
||||
super(sDummyWriter, true);
|
||||
super(new DummyWriter(), true);
|
||||
if (pr == null) {
|
||||
throw new NullPointerException("pr is null");
|
||||
}
|
||||
|
||||
@@ -205,8 +205,8 @@ public class SystemConfig {
|
||||
}
|
||||
|
||||
if (!parser.getName().equals("permissions") && !parser.getName().equals("config")) {
|
||||
throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
|
||||
", expected 'permissions' or 'config'");
|
||||
throw new XmlPullParserException("Unexpected start tag in " + permFile
|
||||
+ ": found " + parser.getName() + ", expected 'permissions' or 'config'");
|
||||
}
|
||||
|
||||
while (true) {
|
||||
@@ -222,7 +222,7 @@ public class SystemConfig {
|
||||
int gid = android.os.Process.getGidForName(gidStr);
|
||||
mGlobalGids = appendInt(mGlobalGids, gid);
|
||||
} else {
|
||||
Slog.w(TAG, "<group> without gid at "
|
||||
Slog.w(TAG, "<group> without gid in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ public class SystemConfig {
|
||||
} else if ("permission".equals(name) && !onlyFeatures) {
|
||||
String perm = parser.getAttributeValue(null, "name");
|
||||
if (perm == null) {
|
||||
Slog.w(TAG, "<permission> without name at "
|
||||
Slog.w(TAG, "<permission> without name in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
XmlUtils.skipCurrentTag(parser);
|
||||
continue;
|
||||
@@ -242,14 +242,14 @@ public class SystemConfig {
|
||||
} else if ("assign-permission".equals(name) && !onlyFeatures) {
|
||||
String perm = parser.getAttributeValue(null, "name");
|
||||
if (perm == null) {
|
||||
Slog.w(TAG, "<assign-permission> without name at "
|
||||
Slog.w(TAG, "<assign-permission> without name in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
XmlUtils.skipCurrentTag(parser);
|
||||
continue;
|
||||
}
|
||||
String uidStr = parser.getAttributeValue(null, "uid");
|
||||
if (uidStr == null) {
|
||||
Slog.w(TAG, "<assign-permission> without uid at "
|
||||
Slog.w(TAG, "<assign-permission> without uid in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
XmlUtils.skipCurrentTag(parser);
|
||||
continue;
|
||||
@@ -257,7 +257,7 @@ public class SystemConfig {
|
||||
int uid = Process.getUidForName(uidStr);
|
||||
if (uid < 0) {
|
||||
Slog.w(TAG, "<assign-permission> with unknown uid \""
|
||||
+ uidStr + "\" at "
|
||||
+ uidStr + " in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
XmlUtils.skipCurrentTag(parser);
|
||||
continue;
|
||||
@@ -275,10 +275,10 @@ public class SystemConfig {
|
||||
String lname = parser.getAttributeValue(null, "name");
|
||||
String lfile = parser.getAttributeValue(null, "file");
|
||||
if (lname == null) {
|
||||
Slog.w(TAG, "<library> without name at "
|
||||
Slog.w(TAG, "<library> without name in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
} else if (lfile == null) {
|
||||
Slog.w(TAG, "<library> without file at "
|
||||
Slog.w(TAG, "<library> without file in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
} else {
|
||||
//Log.i(TAG, "Got library " + lname + " in " + lfile);
|
||||
@@ -297,7 +297,7 @@ public class SystemConfig {
|
||||
allowed = !"true".equals(notLowRam);
|
||||
}
|
||||
if (fname == null) {
|
||||
Slog.w(TAG, "<feature> without name at "
|
||||
Slog.w(TAG, "<feature> without name in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
} else if (allowed) {
|
||||
//Log.i(TAG, "Got feature " + fname);
|
||||
@@ -311,7 +311,7 @@ public class SystemConfig {
|
||||
} else if ("unavailable-feature".equals(name)) {
|
||||
String fname = parser.getAttributeValue(null, "name");
|
||||
if (fname == null) {
|
||||
Slog.w(TAG, "<unavailable-feature> without name at "
|
||||
Slog.w(TAG, "<unavailable-feature> without name in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
} else {
|
||||
mUnavailableFeatures.add(fname);
|
||||
@@ -322,7 +322,7 @@ public class SystemConfig {
|
||||
} else if ("allow-in-power-save".equals(name) && !onlyFeatures) {
|
||||
String pkgname = parser.getAttributeValue(null, "package");
|
||||
if (pkgname == null) {
|
||||
Slog.w(TAG, "<allow-in-power-save> without package at "
|
||||
Slog.w(TAG, "<allow-in-power-save> without package in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
} else {
|
||||
mAllowInPowerSave.add(pkgname);
|
||||
@@ -333,7 +333,7 @@ public class SystemConfig {
|
||||
} else if ("fixed-ime-app".equals(name) && !onlyFeatures) {
|
||||
String pkgname = parser.getAttributeValue(null, "package");
|
||||
if (pkgname == null) {
|
||||
Slog.w(TAG, "<fixed-ime-app> without package at "
|
||||
Slog.w(TAG, "<fixed-ime-app> without package in " + permFile + " at "
|
||||
+ parser.getPositionDescription());
|
||||
} else {
|
||||
mFixedImeApps.add(pkgname);
|
||||
|
||||
@@ -2998,6 +2998,10 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
instructionSet = VMRuntime.getInstructionSet(app.info.primaryCpuAbi);
|
||||
}
|
||||
|
||||
app.gids = gids;
|
||||
app.requiredAbi = requiredAbi;
|
||||
app.instructionSet = instructionSet;
|
||||
|
||||
// Start the process. It will either succeed and return a result containing
|
||||
// the PID of the new process, or else throw a RuntimeException.
|
||||
boolean isActivityProcess = (entryPoint == null);
|
||||
@@ -3028,7 +3032,11 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
StringBuilder buf = mStringBuilder;
|
||||
buf.setLength(0);
|
||||
buf.append("Start proc ");
|
||||
buf.append(startResult.pid);
|
||||
buf.append(':');
|
||||
buf.append(app.processName);
|
||||
buf.append('/');
|
||||
UserHandle.formatUid(buf, uid);
|
||||
if (!isActivityProcess) {
|
||||
buf.append(" [");
|
||||
buf.append(entryPoint);
|
||||
@@ -3040,23 +3048,6 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
buf.append(" ");
|
||||
buf.append(hostingNameStr);
|
||||
}
|
||||
buf.append(": pid=");
|
||||
buf.append(startResult.pid);
|
||||
buf.append(" uid=");
|
||||
buf.append(uid);
|
||||
buf.append(" gids={");
|
||||
if (gids != null) {
|
||||
for (int gi=0; gi<gids.length; gi++) {
|
||||
if (gi != 0) buf.append(", ");
|
||||
buf.append(gids[gi]);
|
||||
|
||||
}
|
||||
}
|
||||
buf.append("}");
|
||||
if (requiredAbi != null) {
|
||||
buf.append(" abi=");
|
||||
buf.append(requiredAbi);
|
||||
}
|
||||
Slog.i(TAG, buf.toString());
|
||||
app.setPid(startResult.pid);
|
||||
app.usingWrapper = startResult.usingWrapper;
|
||||
@@ -5327,7 +5318,6 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
int callingPid = Binder.getCallingPid();
|
||||
if (callingPid == Process.myPid()) {
|
||||
// Yeah, um, no.
|
||||
Slog.w(TAG, "Can't addPackageDependency on system process");
|
||||
return;
|
||||
}
|
||||
ProcessRecord proc;
|
||||
|
||||
@@ -108,50 +108,46 @@ final class CoreSettingsObserver extends ContentObserver {
|
||||
for (Map.Entry<String, Class<?>> entry : map.entrySet()) {
|
||||
String setting = entry.getKey();
|
||||
Class<?> type = entry.getValue();
|
||||
try {
|
||||
if (type == String.class) {
|
||||
final String value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getString(context.getContentResolver(), setting);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getString(context.getContentResolver(), setting);
|
||||
} else {
|
||||
value = Settings.Global.getString(context.getContentResolver(), setting);
|
||||
}
|
||||
snapshot.putString(setting, value);
|
||||
} else if (type == int.class) {
|
||||
final int value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getInt(context.getContentResolver(), setting);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getInt(context.getContentResolver(), setting);
|
||||
} else {
|
||||
value = Settings.Global.getInt(context.getContentResolver(), setting);
|
||||
}
|
||||
snapshot.putInt(setting, value);
|
||||
} else if (type == float.class) {
|
||||
final float value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getFloat(context.getContentResolver(), setting);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getFloat(context.getContentResolver(), setting);
|
||||
} else {
|
||||
value = Settings.Global.getFloat(context.getContentResolver(), setting);
|
||||
}
|
||||
snapshot.putFloat(setting, value);
|
||||
} else if (type == long.class) {
|
||||
final long value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getLong(context.getContentResolver(), setting);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getLong(context.getContentResolver(), setting);
|
||||
} else {
|
||||
value = Settings.Global.getLong(context.getContentResolver(), setting);
|
||||
}
|
||||
snapshot.putLong(setting, value);
|
||||
if (type == String.class) {
|
||||
final String value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getString(context.getContentResolver(), setting);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getString(context.getContentResolver(), setting);
|
||||
} else {
|
||||
value = Settings.Global.getString(context.getContentResolver(), setting);
|
||||
}
|
||||
} catch (SettingNotFoundException snfe) {
|
||||
Log.w(LOG_TAG, "Cannot find setting \"" + setting + "\"", snfe);
|
||||
snapshot.putString(setting, value);
|
||||
} else if (type == int.class) {
|
||||
final int value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getInt(context.getContentResolver(), setting, 0);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getInt(context.getContentResolver(), setting, 0);
|
||||
} else {
|
||||
value = Settings.Global.getInt(context.getContentResolver(), setting, 0);
|
||||
}
|
||||
snapshot.putInt(setting, value);
|
||||
} else if (type == float.class) {
|
||||
final float value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getFloat(context.getContentResolver(), setting, 0);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getFloat(context.getContentResolver(), setting, 0);
|
||||
} else {
|
||||
value = Settings.Global.getFloat(context.getContentResolver(), setting, 0);
|
||||
}
|
||||
snapshot.putFloat(setting, value);
|
||||
} else if (type == long.class) {
|
||||
final long value;
|
||||
if (map == sSecureSettingToTypeMap) {
|
||||
value = Settings.Secure.getLong(context.getContentResolver(), setting, 0);
|
||||
} else if (map == sSystemSettingToTypeMap) {
|
||||
value = Settings.System.getLong(context.getContentResolver(), setting, 0);
|
||||
} else {
|
||||
value = Settings.Global.getLong(context.getContentResolver(), setting, 0);
|
||||
}
|
||||
snapshot.putLong(setting, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,9 @@ final class ProcessRecord {
|
||||
ProcessStats.ProcessState baseProcessTracker;
|
||||
BatteryStatsImpl.Uid.Proc curProcBatteryStats;
|
||||
int pid; // The process of this application; 0 if none
|
||||
int[] gids; // The gids this process was launched with
|
||||
String requiredAbi; // The ABI this process was launched with
|
||||
String instructionSet; // The instruction set this process was launched with
|
||||
boolean starting; // True if the process is being started
|
||||
long lastActivityTime; // For managing the LRU list
|
||||
long lastPssTime; // Last time we retrieved PSS data
|
||||
@@ -183,7 +186,17 @@ final class ProcessRecord {
|
||||
if (uid != info.uid) {
|
||||
pw.print(" ISOLATED uid="); pw.print(uid);
|
||||
}
|
||||
pw.println();
|
||||
pw.print(" gids={");
|
||||
if (gids != null) {
|
||||
for (int gi=0; gi<gids.length; gi++) {
|
||||
if (gi != 0) pw.print(", ");
|
||||
pw.print(gids[gi]);
|
||||
|
||||
}
|
||||
}
|
||||
pw.println("}");
|
||||
pw.print(prefix); pw.print("requiredAbi="); pw.print(requiredAbi);
|
||||
pw.print(" instructionSet="); pw.println(instructionSet);
|
||||
if (info.className != null) {
|
||||
pw.print(prefix); pw.print("class="); pw.println(info.className);
|
||||
}
|
||||
|
||||
@@ -168,7 +168,6 @@ public class ConditionProviders extends ManagedServices {
|
||||
|
||||
@Override
|
||||
protected void onServiceAdded(ManagedServiceInfo info) {
|
||||
Slog.d(TAG, "onServiceAdded " + info);
|
||||
final IConditionProvider provider = provider(info);
|
||||
try {
|
||||
provider.onConnected();
|
||||
|
||||
Reference in New Issue
Block a user