Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96c2184e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "More gracefully handle client death"

parents a8d1105b 2cf6d642
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -166,6 +166,7 @@ public class PinnedSliceState {
    ContentProviderClient getClient() {
    ContentProviderClient getClient() {
        ContentProviderClient client =
        ContentProviderClient client =
                mService.getContext().getContentResolver().acquireContentProviderClient(mUri);
                mService.getContext().getContentResolver().acquireContentProviderClient(mUri);
        if (client == null) return null;
        client.setDetectNotResponding(SLICE_TIMEOUT);
        client.setDetectNotResponding(SLICE_TIMEOUT);
        return client;
        return client;
    }
    }
@@ -181,6 +182,7 @@ public class PinnedSliceState {
            }
            }
            if (!isPinned()) {
            if (!isPinned()) {
                // All the listeners died, remove from pinned state.
                // All the listeners died, remove from pinned state.
                mService.unlisten(mUri);
                mService.removePinnedSlice(mUri);
                mService.removePinnedSlice(mUri);
            }
            }
        }
        }
@@ -210,6 +212,7 @@ public class PinnedSliceState {
            }
            }
            if (!isPinned()) {
            if (!isPinned()) {
                // All the listeners died, remove from pinned state.
                // All the listeners died, remove from pinned state.
                mService.unlisten(mUri);
                mService.removePinnedSlice(mUri);
                mService.removePinnedSlice(mUri);
            }
            }
        }
        }
@@ -217,6 +220,7 @@ public class PinnedSliceState {


    private Slice doBind(String overridePkg) {
    private Slice doBind(String overridePkg) {
        try (ContentProviderClient client = getClient()) {
        try (ContentProviderClient client = getClient()) {
            if (client == null) return null;
            Bundle extras = new Bundle();
            Bundle extras = new Bundle();
            extras.putParcelable(SliceProvider.EXTRA_BIND_URI, mUri);
            extras.putParcelable(SliceProvider.EXTRA_BIND_URI, mUri);
            extras.putParcelableArrayList(SliceProvider.EXTRA_SUPPORTED_SPECS,
            extras.putParcelableArrayList(SliceProvider.EXTRA_SUPPORTED_SPECS,
@@ -237,6 +241,7 @@ public class PinnedSliceState {


    private void handleSendPinned() {
    private void handleSendPinned() {
        try (ContentProviderClient client = getClient()) {
        try (ContentProviderClient client = getClient()) {
            if (client == null) return;
            Bundle b = new Bundle();
            Bundle b = new Bundle();
            b.putParcelable(SliceProvider.EXTRA_BIND_URI, mUri);
            b.putParcelable(SliceProvider.EXTRA_BIND_URI, mUri);
            try {
            try {
@@ -249,6 +254,7 @@ public class PinnedSliceState {


    private void handleSendUnpinned() {
    private void handleSendUnpinned() {
        try (ContentProviderClient client = getClient()) {
        try (ContentProviderClient client = getClient()) {
            if (client == null) return;
            Bundle b = new Bundle();
            Bundle b = new Bundle();
            b.putParcelable(SliceProvider.EXTRA_BIND_URI, mUri);
            b.putParcelable(SliceProvider.EXTRA_BIND_URI, mUri);
            try {
            try {
+1 −0
Original line number Original line Diff line number Diff line
@@ -198,6 +198,7 @@ public class PinnedSliceStateTest extends UiServiceTestCase {
        when(binder.isBinderAlive()).thenReturn(false);
        when(binder.isBinderAlive()).thenReturn(false);
        arg.getValue().binderDied();
        arg.getValue().binderDied();


        verify(mSliceService).unlisten(eq(TEST_URI));
        verify(mSliceService).removePinnedSlice(eq(TEST_URI));
        verify(mSliceService).removePinnedSlice(eq(TEST_URI));
        assertFalse(mPinnedSliceManager.isPinned());
        assertFalse(mPinnedSliceManager.isPinned());
    }
    }