Merge "WM: Move WindowManagerPolicy, DisplayFrames and WindowManagerInternal into services"
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index 94a4dc8..60f451a 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -2099,7 +2099,7 @@
long handle = getSyntheticPasswordHandleLocked(userId);
authResult = mSpManager.unwrapPasswordBasedSyntheticPassword(
- getGateKeeperService(), handle, userCredential, userId);
+ getGateKeeperService(), handle, userCredential, userId, progressCallback);
if (authResult.credentialType != credentialType) {
Slog.e(TAG, "Credential type mismatch.");
@@ -2122,9 +2122,6 @@
}
if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) {
- if (progressCallback != null) {
- progressCallback.onCredentialVerified();
- }
notifyActivePasswordMetricsAvailable(userCredential, userId);
unlockKeystore(authResult.authToken.deriveKeyStorePassword(), userId);
@@ -2223,7 +2220,7 @@
}
long handle = getSyntheticPasswordHandleLocked(userId);
AuthenticationResult authResult = mSpManager.unwrapPasswordBasedSyntheticPassword(
- getGateKeeperService(), handle, savedCredential, userId);
+ getGateKeeperService(), handle, savedCredential, userId, null);
VerifyCredentialResponse response = authResult.gkResponse;
AuthenticationToken auth = authResult.authToken;
@@ -2277,7 +2274,7 @@
} else /* isSyntheticPasswordBasedCredentialLocked(userId) */ {
long pwdHandle = getSyntheticPasswordHandleLocked(userId);
auth = mSpManager.unwrapPasswordBasedSyntheticPassword(getGateKeeperService(),
- pwdHandle, null, userId).authToken;
+ pwdHandle, null, userId, null).authToken;
}
}
if (isSyntheticPasswordBasedCredentialLocked(userId)) {
diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
index 1a1aa56..7a3a746 100644
--- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
+++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
@@ -781,7 +781,8 @@
* unknown. Caller might choose to validate it by examining AuthenticationResult.credentialType
*/
public AuthenticationResult unwrapPasswordBasedSyntheticPassword(IGateKeeperService gatekeeper,
- long handle, String credential, int userId) throws RemoteException {
+ long handle, String credential, int userId,
+ ICheckCredentialProgressCallback progressCallback) throws RemoteException {
if (credential == null) {
credential = DEFAULT_PASSWORD;
}
@@ -841,7 +842,11 @@
applicationId = transformUnderSecdiscardable(pwdToken,
loadSecdiscardable(handle, userId));
}
-
+ // Supplied credential passes first stage weaver/gatekeeper check so it should be correct.
+ // Notify the callback so the keyguard UI can proceed immediately.
+ if (progressCallback != null) {
+ progressCallback.onCredentialVerified();
+ }
result.authToken = unwrapSyntheticPasswordBlob(handle, SYNTHETIC_PASSWORD_PASSWORD_BASED,
applicationId, sid, userId);
diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
index 4b98d9d..2358695 100644
--- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
+++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
@@ -16,6 +16,8 @@
package com.android.server.wm;
+import static android.os.Build.IS_USER;
+
import android.os.ShellCommand;
import java.io.PrintWriter;
@@ -50,8 +52,10 @@
pw.println(" help");
pw.println(" Print this help text.");
pw.println();
- pw.println(" tracing (start | stop)");
- pw.println(" start or stop window tracing");
- pw.println();
+ if (!IS_USER){
+ pw.println(" tracing (start | stop)");
+ pw.println(" start or stop window tracing");
+ pw.println();
+ }
}
}
diff --git a/services/core/java/com/android/server/wm/WindowTracing.java b/services/core/java/com/android/server/wm/WindowTracing.java
index 6aa5101..c858b19 100644
--- a/services/core/java/com/android/server/wm/WindowTracing.java
+++ b/services/core/java/com/android/server/wm/WindowTracing.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.os.Build.IS_USER;
import static com.android.server.wm.proto.WindowManagerTraceFileProto.ENTRY;
import static com.android.server.wm.proto.WindowManagerTraceFileProto.MAGIC_NUMBER;
import static com.android.server.wm.proto.WindowManagerTraceFileProto.MAGIC_NUMBER_H;
@@ -62,6 +63,10 @@
}
void startTrace(PrintWriter pw) throws IOException {
+ if (IS_USER){
+ logAndPrintln(pw, "Error: Tracing is not supported on user builds.");
+ return;
+ }
synchronized (mLock) {
logAndPrintln(pw, "Start tracing to " + mTraceFile + ".");
mWriteQueue.clear();
@@ -83,6 +88,10 @@
}
void stopTrace(PrintWriter pw) {
+ if (IS_USER){
+ logAndPrintln(pw, "Error: Tracing is not supported on user builds.");
+ return;
+ }
synchronized (mLock) {
logAndPrintln(pw, "Stop tracing to " + mTraceFile + ". Waiting for traces to flush.");
mEnabled = mEnabledLockFree = false;
@@ -150,7 +159,9 @@
static WindowTracing createDefaultAndStartLooper(Context context) {
File file = new File("/data/misc/wmtrace/wm_trace.pb");
WindowTracing windowTracing = new WindowTracing(file);
- new Thread(windowTracing::loop, "window_tracing").start();
+ if (!IS_USER){
+ new Thread(windowTracing::loop, "window_tracing").start();
+ }
return windowTracing;
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
index 2ad0580..ff25172 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
@@ -66,10 +66,12 @@
LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, authToken, PASSWORD_QUALITY_ALPHABETIC,
USER_ID);
- AuthenticationResult result = manager.unwrapPasswordBasedSyntheticPassword(mGateKeeperService, handle, PASSWORD, USER_ID);
+ AuthenticationResult result = manager.unwrapPasswordBasedSyntheticPassword(
+ mGateKeeperService, handle, PASSWORD, USER_ID, null);
assertEquals(result.authToken.deriveKeyStorePassword(), authToken.deriveKeyStorePassword());
- result = manager.unwrapPasswordBasedSyntheticPassword(mGateKeeperService, handle, BADPASSWORD, USER_ID);
+ result = manager.unwrapPasswordBasedSyntheticPassword(mGateKeeperService, handle,
+ BADPASSWORD, USER_ID, null);
assertNull(result.authToken);
}