summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAjay Panicker <apanicke@google.com>2018-06-12 10:34:39 -0700
committerandroid-build-team Robot <android-build-team-robot@google.com>2018-06-13 00:28:42 +0000
commit3e191ef459a9f81bf6cfcfee1e36dec72c2831f2 (patch)
treee8860cf6cd6875a37e0dadff84f1cf553d1666a4
parent2c93f9e1f9191e79ec2202e7da87d4ebf471d95b (diff)
downloadBluetooth-android-wear-9.0.0_r14.tar.gz
Prevent crash when a Browsable player has an empty rootandroid-wear-9.0.0_r9android-wear-9.0.0_r8android-wear-9.0.0_r7android-wear-9.0.0_r6android-wear-9.0.0_r5android-wear-9.0.0_r4android-wear-9.0.0_r34android-wear-9.0.0_r33android-wear-9.0.0_r32android-wear-9.0.0_r31android-wear-9.0.0_r30android-wear-9.0.0_r3android-wear-9.0.0_r29android-wear-9.0.0_r28android-wear-9.0.0_r27android-wear-9.0.0_r26android-wear-9.0.0_r25android-wear-9.0.0_r24android-wear-9.0.0_r23android-wear-9.0.0_r22android-wear-9.0.0_r21android-wear-9.0.0_r20android-wear-9.0.0_r2android-wear-9.0.0_r19android-wear-9.0.0_r18android-wear-9.0.0_r17android-wear-9.0.0_r16android-wear-9.0.0_r15android-wear-9.0.0_r14android-wear-9.0.0_r13android-wear-9.0.0_r12android-wear-9.0.0_r11android-wear-9.0.0_r10android-wear-9.0.0_r1android-vts-9.0_r9android-vts-9.0_r8android-vts-9.0_r7android-vts-9.0_r6android-vts-9.0_r5android-vts-9.0_r4android-vts-9.0_r19android-vts-9.0_r18android-vts-9.0_r17android-vts-9.0_r16android-vts-9.0_r15android-vts-9.0_r14android-vts-9.0_r13android-vts-9.0_r12android-vts-9.0_r11android-vts-9.0_r10android-cts-9.0_r9android-cts-9.0_r8android-cts-9.0_r7android-cts-9.0_r6android-cts-9.0_r5android-cts-9.0_r4android-cts-9.0_r3android-cts-9.0_r20android-cts-9.0_r2android-cts-9.0_r19android-cts-9.0_r18android-cts-9.0_r17android-cts-9.0_r16android-cts-9.0_r15android-cts-9.0_r14android-cts-9.0_r13android-cts-9.0_r12android-cts-9.0_r11android-cts-9.0_r10android-cts-9.0_r1android-9.0.0_r9android-9.0.0_r8android-9.0.0_r7android-9.0.0_r6android-9.0.0_r5android-9.0.0_r3android-9.0.0_r2android-9.0.0_r18android-9.0.0_r17android-9.0.0_r10android-9.0.0_r1pie-vts-releasepie-s2-releasepie-release-2pie-releasepie-r2-s2-releasepie-r2-s1-releasepie-r2-releasepie-cts-release
Bug: 110051940 Test: runtest bluetooth -c com.android.bluetooth.avrcp.BrowserPlayerWrapperTest Change-Id: I2d6db2814f3ea61e95e0a1cc8417274f103af5de (cherry picked from commit acdf7d6bc28bdda01a3918772d0082fa75bc91c5) (cherry picked from commit 5851f9b5afe30aea8625e56fc2192befb63c663b)
-rw-r--r--src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java10
-rw-r--r--tests/unit/src/com/android/bluetooth/newavrcp/BrowserPlayerWrapperTest.java17
2 files changed, 26 insertions, 1 deletions
diff --git a/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java b/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java
index bd75ae387..93afd178e 100644
--- a/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java
+++ b/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java
@@ -207,7 +207,15 @@ class BrowsedPlayerWrapper {
Log.i(TAG, "onConnected: " + mPackageName + " is connected");
// Get the root while connected because we may need to use it when disconnected.
mRoot = mWrappedBrowser.getRoot();
- if (mCallback != null) mCallback.run(STATUS_SUCCESS, BrowsedPlayerWrapper.this);
+
+ if (mCallback == null) return;
+
+ if (mRoot == null || mRoot.isEmpty()) {
+ mCallback.run(STATUS_CONN_ERROR, BrowsedPlayerWrapper.this);
+ return;
+ }
+
+ mCallback.run(STATUS_SUCCESS, BrowsedPlayerWrapper.this);
mCallback = null;
}
diff --git a/tests/unit/src/com/android/bluetooth/newavrcp/BrowserPlayerWrapperTest.java b/tests/unit/src/com/android/bluetooth/newavrcp/BrowserPlayerWrapperTest.java
index e4ab0f414..66eac2189 100644
--- a/tests/unit/src/com/android/bluetooth/newavrcp/BrowserPlayerWrapperTest.java
+++ b/tests/unit/src/com/android/bluetooth/newavrcp/BrowserPlayerWrapperTest.java
@@ -88,6 +88,23 @@ public class BrowserPlayerWrapperTest {
}
@Test
+ public void testEmptyRoot() {
+ BrowsedPlayerWrapper wrapper = BrowsedPlayerWrapper.wrap(null, "test", "test");
+
+ doReturn("").when(mMockBrowser).getRoot();
+
+ wrapper.connect(mConnCb);
+ verify(mMockBrowser).testInit(any(), any(), mBrowserConnCb.capture(), any());
+ MediaBrowser.ConnectionCallback browserConnCb = mBrowserConnCb.getValue();
+
+ verify(mMockBrowser, times(1)).connect();
+
+ browserConnCb.onConnected();
+ verify(mConnCb).run(eq(BrowsedPlayerWrapper.STATUS_CONN_ERROR), eq(wrapper));
+ verify(mMockBrowser, times(1)).disconnect();
+ }
+
+ @Test
public void testDisconnect() {
BrowsedPlayerWrapper wrapper = BrowsedPlayerWrapper.wrap(null, "test", "test");
wrapper.connect(mConnCb);