diff --git a/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java b/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java index 4e8c61f8fad..017bdb53fdb 100644 --- a/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java +++ b/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java @@ -35,13 +35,10 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.List; import java.util.concurrent.Callable; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; public class EligibleCardChecker implements Callable { private static final String TAG = "EligibleCardChecker"; - private static final long LATCH_TIMEOUT_MS = 300; private final Context mContext; @@ -54,7 +51,7 @@ public class EligibleCardChecker implements Callable { } @Override - public ContextualCard call() throws Exception { + public ContextualCard call() { final long startTime = System.currentTimeMillis(); final MetricsFeatureProvider metricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(); @@ -113,35 +110,10 @@ public class EligibleCardChecker implements Callable { @VisibleForTesting Slice bindSlice(Uri uri) { final SliceViewManager manager = SliceViewManager.getInstance(mContext); - final Slice[] returnSlice = new Slice[1]; - final CountDownLatch latch = new CountDownLatch(1); - final SliceViewManager.SliceCallback callback = - new SliceViewManager.SliceCallback() { - @Override - public void onSliceUpdated(Slice slice) { - try { - // We are just making sure the existence of the slice, so ignore - // slice loading state here. - returnSlice[0] = slice; - latch.countDown(); - } catch (Exception e) { - Log.w(TAG, uri + " cannot be indexed", e); - } finally { - manager.unregisterSliceCallback(uri, this); - } - } - }; - // Register a callback until we get a loaded slice. - manager.registerSliceCallback(uri, callback); - // Trigger the binding. - callback.onSliceUpdated(manager.bindSlice(uri)); - try { - latch.await(LATCH_TIMEOUT_MS, TimeUnit.MILLISECONDS); - } catch (InterruptedException e) { - Log.w(TAG, "Error waiting for slice binding for uri" + uri, e); - manager.unregisterSliceCallback(uri, callback); - } - return returnSlice[0]; + manager.pinSlice(uri); + final Slice slice = manager.bindSlice(uri); + manager.unpinSlice(uri); + return slice; } @VisibleForTesting diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java index 613062fea14..67f0462c823 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java @@ -77,9 +77,9 @@ public class EligibleCardCheckerTest { @Test public void isCardEligibleToDisplay_invalidScheme_returnFalse() { - final Uri sliceUri = Uri.parse("contet://com.android.settings.slices/action/flashlight"); + final Uri invalidUri = Uri.parse("contet://com.android.settings.slices/action/flashlight"); - assertThat(mEligibleCardChecker.isCardEligibleToDisplay(getContextualCard(sliceUri))) + assertThat(mEligibleCardChecker.isCardEligibleToDisplay(getContextualCard(invalidUri))) .isFalse(); } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java index 722833c8b04..06edf2baa4d 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java @@ -86,10 +86,10 @@ public class SliceContextualCardRendererTest { @Test public void bindView_invalidScheme_sliceShouldBeNull() { - final Uri sliceUri = Uri.parse("contet://com.android.settings.slices/action/flashlight"); + final Uri invalidUri = Uri.parse("contet://com.android.settings.slices/action/flashlight"); final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); - mRenderer.bindView(viewHolder, buildContextualCard(sliceUri)); + mRenderer.bindView(viewHolder, buildContextualCard(invalidUri)); assertThat( ((SliceFullCardRendererHelper.SliceViewHolder) viewHolder).sliceView.getSlice())