summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-10-11 19:05:27 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-10-11 19:05:27 +0000
commit546073a5b67601a39987a650fa176905149bd5c4 (patch)
tree47ab40edc844c9b588c706eed47587964e624188
parentcb90628990f63157abee9c2d241ce0b5cd6d0950 (diff)
parent569055dd608c21b2c763f896e73761007f125a50 (diff)
downloadbase-546073a5b67601a39987a650fa176905149bd5c4.tar.gz
Merge changes I7070326d,I8346e53c
* changes: Add OWNERS file to AndroidKeystoreSPI implementation KeyguardStateMonitor looses connection with keystore if keystore dies
-rw-r--r--keystore/OWNERS4
-rw-r--r--services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java20
2 files changed, 20 insertions, 4 deletions
diff --git a/keystore/OWNERS b/keystore/OWNERS
new file mode 100644
index 000000000000..a63ca46df2a6
--- /dev/null
+++ b/keystore/OWNERS
@@ -0,0 +1,4 @@
+jbires@google.com
+jdanis@google.com
+robbarnes@google.com
+swillden@google.com
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
index 1cba1c7bed1b..a55b49fe028d 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
@@ -95,10 +95,22 @@ public class KeyguardStateMonitor extends IKeyguardStateCallback.Stub {
mIsShowing = showing;
mCallback.onShowingChanged();
- try {
- mKeystoreService.onKeyguardVisibilityChanged(showing, mCurrentUserId);
- } catch (RemoteException e) {
- Slog.e(TAG, "Error informing keystore of screen lock", e);
+ int retry = 2;
+ while (retry > 0) {
+ try {
+ mKeystoreService.onKeyguardVisibilityChanged(showing, mCurrentUserId);
+ break;
+ } catch (RemoteException e) {
+ if (retry == 2) {
+ Slog.w(TAG, "Error informing keystore of screen lock. Keystore may have died"
+ + " -> refreshing service token and retrying");
+ mKeystoreService = IKeystoreService.Stub.asInterface(ServiceManager
+ .getService("android.security.keystore"));
+ } else {
+ Slog.e(TAG, "Error informing keystore of screen lock after retrying once", e);
+ }
+ --retry;
+ }
}
}