Merge "Fix death recipient leakage of WindowTokenClient" into tm-dev
This commit is contained in:
@@ -116,6 +116,9 @@ class WindowContextListenerController {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
listener.unregister();
|
listener.unregister();
|
||||||
|
if (listener.mDeathRecipient != null) {
|
||||||
|
listener.mDeathRecipient.unlinkToDeath();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispatchPendingConfigurationIfNeeded(int displayId) {
|
void dispatchPendingConfigurationIfNeeded(int displayId) {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
|
|||||||
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
|
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
|
||||||
import static android.window.WindowProvider.KEY_IS_WINDOW_PROVIDER_SERVICE;
|
import static android.window.WindowProvider.KEY_IS_WINDOW_PROVIDER_SERVICE;
|
||||||
|
|
||||||
|
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
|
||||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
|
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
@@ -86,7 +87,7 @@ public class WindowContextListenerControllerTests extends WindowTestsBase {
|
|||||||
|
|
||||||
assertEquals(1, mController.mListeners.size());
|
assertEquals(1, mController.mListeners.size());
|
||||||
|
|
||||||
final IBinder clientToken = new Binder();
|
final IBinder clientToken = mock(IBinder.class);
|
||||||
mController.registerWindowContainerListener(clientToken, mContainer, -1,
|
mController.registerWindowContainerListener(clientToken, mContainer, -1,
|
||||||
TYPE_APPLICATION_OVERLAY, null /* options */);
|
TYPE_APPLICATION_OVERLAY, null /* options */);
|
||||||
|
|
||||||
@@ -103,6 +104,10 @@ public class WindowContextListenerControllerTests extends WindowTestsBase {
|
|||||||
WindowContextListenerController.WindowContextListenerImpl listener =
|
WindowContextListenerController.WindowContextListenerImpl listener =
|
||||||
mController.mListeners.get(mClientToken);
|
mController.mListeners.get(mClientToken);
|
||||||
assertEquals(container, listener.getWindowContainer());
|
assertEquals(container, listener.getWindowContainer());
|
||||||
|
|
||||||
|
mController.unregisterWindowContainerListener(clientToken);
|
||||||
|
assertFalse(mController.mListeners.containsKey(clientToken));
|
||||||
|
verify(clientToken).unlinkToDeath(any(), anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
@UseTestDisplay
|
@UseTestDisplay
|
||||||
|
|||||||
Reference in New Issue
Block a user