Add saving/restoring state in CredentialInstaller and ...

make it transparent.
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6ddd679..a77728c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -321,7 +321,7 @@
         </activity>
 
         <activity android:name="CredentialInstaller"
-                android:label="@string/credential_installer_activity_title">
+                android:theme="@android:style/Theme.Translucent.NoTitleBar">
             <intent-filter>
                 <action android:name="android.credentials.SYSTEM_INSTALL" />
                 <category android:name="android.intent.category.DEFAULT" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b01608a..c98a867 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1937,9 +1937,6 @@
     <string name="gadget_toggle_wifi">Updating Wi-Fi setting</string>
     <string name="gadget_toggle_bluetooth">Updating Bluetooth setting</string>
 
-    <!-- credential installer title -->
-    <string name="credential_installer_activity_title">Credential installer</string>
-
     <string name="vpn_settings_activity_title">VPN settings</string>
 
     <!-- Title of VPN connect dialog -->
diff --git a/src/com/android/settings/CredentialInstaller.java b/src/com/android/settings/CredentialInstaller.java
index 5a457d7..7c63b1c 100644
--- a/src/com/android/settings/CredentialInstaller.java
+++ b/src/com/android/settings/CredentialInstaller.java
@@ -32,6 +32,7 @@
  */
 public class CredentialInstaller extends Activity {
     private static final String TAG = "CredentialInstaller";
+    private static final String UNLOCKING = "ulck";
 
     private KeyStore mKeyStore = KeyStore.getInstance();
     private boolean mUnlocking = false;
@@ -42,15 +43,26 @@
 
         if (!"com.android.certinstaller".equals(getCallingPackage())) finish();
 
-        if (!isKeyStoreLocked()) {
+        if (isKeyStoreUnlocked()) {
             install();
-            finish();
         } else if (!mUnlocking) {
             mUnlocking = true;
             Credentials.getInstance().unlock(this);
-        } else {
-            finish();
+            return;
         }
+        finish();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outStates) {
+        super.onSaveInstanceState(outStates);
+        outStates.putBoolean(UNLOCKING, mUnlocking);
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedStates) {
+        super.onRestoreInstanceState(savedStates);
+        mUnlocking = savedStates.getBoolean(UNLOCKING);
     }
 
     private void install() {
@@ -61,13 +73,13 @@
             byte[] data = bundle.getByteArray(key);
             if (data == null) continue;
             boolean success = mKeyStore.put(key.getBytes(), data);
-            Log.v(TAG, "install " + key + ": " + data.length + "  success? " + success);
+            Log.d(TAG, "install " + key + ": " + data.length + "  success? " + success);
             if (!success) return;
         }
         setResult(RESULT_OK);
     }
 
-    private boolean isKeyStoreLocked() {
-        return (mKeyStore.test() != KeyStore.NO_ERROR);
+    private boolean isKeyStoreUnlocked() {
+        return (mKeyStore.test() == KeyStore.NO_ERROR);
     }
 }