Prevent crash when a Browsable player has an empty root

Bug: 110051940
Test: runtest bluetooth -c
com.android.bluetooth.avrcp.BrowserPlayerWrapperTest

Change-Id: I2d6db2814f3ea61e95e0a1cc8417274f103af5de
(cherry picked from commit acdf7d6bc28bdda01a3918772d0082fa75bc91c5)
(cherry picked from commit 5851f9b5afe30aea8625e56fc2192befb63c663b)
diff --git a/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java b/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java
index bd75ae3..93afd17 100644
--- a/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java
+++ b/src/com/android/bluetooth/newavrcp/BrowsedPlayerWrapper.java
@@ -207,7 +207,15 @@
             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 e4ab0f4..66eac21 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 @@
     }
 
     @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);