Fix issue #18942959: Phone getting stuck then restarts after unplugging from Audi

FastPrintWriter needs to have its own lock for each instance, or
else one getting blocked can cause others to block and whacky deadlocks
result.

Also:

- Improve error reporting of SystemConfig to tell you which config
  file is the problem.
- Fix CoreSettingsProvider to not spew errors if a setting is not
  defined (it should just use a default value).
- Get rid of noisy init output of ConditionProviders.
- Reduce log noise of starting a process; move some of that information
  to ProcessRecord to print on demand.

Change-Id: I1032d141ddd449968b74ab7b88ab36f2d228ad1a
diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java
index 0dc163b..d1682b8 100644
--- a/services/core/java/com/android/server/am/CoreSettingsObserver.java
+++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java
@@ -108,50 +108,46 @@
         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);
             }
         }
     }