Loading android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java +3 −11 Original line number Diff line number Diff line Loading @@ -908,10 +908,7 @@ public class AvrcpControllerService extends ProfileService { */ public synchronized boolean disconnect(BluetoothDevice device) { if (DBG) { StringBuilder sb = new StringBuilder(); dump(sb); Log.d(TAG, "MAP disconnect device: " + device + ", InstanceMap start state: " + sb.toString()); Log.d(TAG, "disconnect(device=" + device + ")"); } AvrcpControllerStateMachine stateMachine = mDeviceStateMap.get(device); // a map state machine instance doesn't exist. maybe it is already gone? Loading @@ -924,12 +921,6 @@ public class AvrcpControllerService extends ProfileService { return false; } stateMachine.disconnect(); if (DBG) { StringBuilder sb = new StringBuilder(); dump(sb); Log.d(TAG, "MAP disconnect device: " + device + ", InstanceMap start state: " + sb.toString()); } return true; } Loading Loading @@ -1005,7 +996,8 @@ public class AvrcpControllerService extends ProfileService { "==== StateMachine for " + stateMachine.getDevice() + " ===="); stateMachine.dump(sb); } sb.append("\n sBrowseTree: " + sBrowseTree.toString()); sb.append("\n BrowseTree:\n"); sBrowseTree.dump(sb); sb.append("\n Cover Artwork Enabled: " + (mCoverArtEnabled ? "True" : "False")); if (mCoverArtManager != null) { Loading android/app/src/com/android/bluetooth/avrcpcontroller/BrowseTree.java +27 −20 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.UUID; Loading Loading @@ -140,6 +141,7 @@ public class BrowseTree { private int mExpectedChildrenCount; BrowseNode(AvrcpItem item) { Objects.requireNonNull(item, "Cannot have a browse node with a null item"); mItem = item; } Loading Loading @@ -337,19 +339,21 @@ public class BrowseTree { return getID().equals(otherNode.getID()); } @Override public synchronized String toString() { if (VDBG) { String serialized = "[ Name: " + mItem.getTitle() + " Scope:" + mBrowseScope + " expected Children: " + mExpectedChildrenCount + "] "; public synchronized void toTreeString(int depth, StringBuilder sb) { for (int i = 0; i <= depth; i++) { sb.append(" "); } sb.append(toString() + "\n"); for (BrowseNode node : mChildren) { serialized += node.toString(); node.toTreeString(depth + 1, sb); } return serialized; } else { return "ID: " + getID(); } @Override public synchronized String toString() { return "[Id: " + getID() + " Name: " + getMediaItem().getDescription().getTitle() + " Size: " + mChildren.size() + "]"; } // Returns true if target is a descendant of this. Loading Loading @@ -495,18 +499,21 @@ public class BrowseTree { return parents; } @Override public String toString() { String serialized = "Size: " + mBrowseMap.size(); if (VDBG) { serialized += mRootNode.toString(); serialized += "\n Image handles in use (" + mCoverArtMap.size() + "):"; /** * Dump the state of the AVRCP browse tree */ public void dump(StringBuilder sb) { mRootNode.toTreeString(0, sb); sb.append("\n Image handles in use (" + mCoverArtMap.size() + "):"); for (String handle : mCoverArtMap.keySet()) { serialized += "\n " + handle + "\n"; sb.append("\n " + handle); } sb.append("\n"); } return serialized; @Override public String toString() { return "[BrowseTree size=" + mBrowseMap.size() + "]"; } // Calculates the path to target node. Loading android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/BrowseNodeTest.java +40 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import java.util.List; public class BrowseNodeTest { private static final int TEST_PLAYER_ID = 1; private static final String TEST_UUID = "1111"; private static final String TEST_NAME = "item"; private final byte[] mTestAddress = new byte[]{01, 01, 01, 01, 01, 01}; private BluetoothAdapter mAdapter; Loading Loading @@ -181,11 +182,46 @@ public class BrowseNodeTest { assertThat(mRootNode.isDescendant(browseNode)).isTrue(); } @Test public void toTreeString_returnFormattedString() { final String expected = " [Id: 1111 Name: item Size: 2]\n" + " [Id: child1 Name: child1 Size: 1]\n" + " [Id: child3 Name: child3 Size: 0]\n" + " [Id: child2 Name: child2 Size: 0]\n"; BrowseNode browseNode = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid(TEST_UUID) .setDisplayableName(TEST_NAME) .build()); BrowseNode childNode1 = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid("child1") .setDisplayableName("child1") .build()); BrowseNode childNode2 = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid("child2") .setDisplayableName("child2") .build()); BrowseNode childNode3 = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid("child3") .setDisplayableName("child3") .build()); childNode1.addChild(childNode3); browseNode.addChild(childNode1); browseNode.addChild(childNode2); StringBuilder sb = new StringBuilder(); browseNode.toTreeString(0, sb); assertThat(sb.toString()).isEqualTo(expected); } @Test public void toString_returnsId() { BrowseNode browseNode = mBrowseTree.new BrowseNode( new AvrcpItem.Builder().setUuid(TEST_UUID).build()); BrowseNode browseNode = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid(TEST_UUID) .setDisplayableName(TEST_NAME) .build()); assertThat(browseNode.toString()).isEqualTo("ID: " + TEST_UUID); assertThat(browseNode.toString()).isEqualTo( "[Id: " + TEST_UUID + " Name: " + TEST_NAME + " Size: 0]"); } } android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/BrowseTreeTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -207,7 +207,7 @@ public class BrowseTreeTest { @Test public void toString_returnsSizeInfo() { BrowseTree browseTree = new BrowseTree(mTestDevice); assertThat(browseTree.toString()).isEqualTo("Size: " + browseTree.mBrowseMap.size()); assertThat(browseTree.toString()).isEqualTo( "[BrowseTree size=" + browseTree.mBrowseMap.size() + "]"); } } Loading
android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java +3 −11 Original line number Diff line number Diff line Loading @@ -908,10 +908,7 @@ public class AvrcpControllerService extends ProfileService { */ public synchronized boolean disconnect(BluetoothDevice device) { if (DBG) { StringBuilder sb = new StringBuilder(); dump(sb); Log.d(TAG, "MAP disconnect device: " + device + ", InstanceMap start state: " + sb.toString()); Log.d(TAG, "disconnect(device=" + device + ")"); } AvrcpControllerStateMachine stateMachine = mDeviceStateMap.get(device); // a map state machine instance doesn't exist. maybe it is already gone? Loading @@ -924,12 +921,6 @@ public class AvrcpControllerService extends ProfileService { return false; } stateMachine.disconnect(); if (DBG) { StringBuilder sb = new StringBuilder(); dump(sb); Log.d(TAG, "MAP disconnect device: " + device + ", InstanceMap start state: " + sb.toString()); } return true; } Loading Loading @@ -1005,7 +996,8 @@ public class AvrcpControllerService extends ProfileService { "==== StateMachine for " + stateMachine.getDevice() + " ===="); stateMachine.dump(sb); } sb.append("\n sBrowseTree: " + sBrowseTree.toString()); sb.append("\n BrowseTree:\n"); sBrowseTree.dump(sb); sb.append("\n Cover Artwork Enabled: " + (mCoverArtEnabled ? "True" : "False")); if (mCoverArtManager != null) { Loading
android/app/src/com/android/bluetooth/avrcpcontroller/BrowseTree.java +27 −20 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.UUID; Loading Loading @@ -140,6 +141,7 @@ public class BrowseTree { private int mExpectedChildrenCount; BrowseNode(AvrcpItem item) { Objects.requireNonNull(item, "Cannot have a browse node with a null item"); mItem = item; } Loading Loading @@ -337,19 +339,21 @@ public class BrowseTree { return getID().equals(otherNode.getID()); } @Override public synchronized String toString() { if (VDBG) { String serialized = "[ Name: " + mItem.getTitle() + " Scope:" + mBrowseScope + " expected Children: " + mExpectedChildrenCount + "] "; public synchronized void toTreeString(int depth, StringBuilder sb) { for (int i = 0; i <= depth; i++) { sb.append(" "); } sb.append(toString() + "\n"); for (BrowseNode node : mChildren) { serialized += node.toString(); node.toTreeString(depth + 1, sb); } return serialized; } else { return "ID: " + getID(); } @Override public synchronized String toString() { return "[Id: " + getID() + " Name: " + getMediaItem().getDescription().getTitle() + " Size: " + mChildren.size() + "]"; } // Returns true if target is a descendant of this. Loading Loading @@ -495,18 +499,21 @@ public class BrowseTree { return parents; } @Override public String toString() { String serialized = "Size: " + mBrowseMap.size(); if (VDBG) { serialized += mRootNode.toString(); serialized += "\n Image handles in use (" + mCoverArtMap.size() + "):"; /** * Dump the state of the AVRCP browse tree */ public void dump(StringBuilder sb) { mRootNode.toTreeString(0, sb); sb.append("\n Image handles in use (" + mCoverArtMap.size() + "):"); for (String handle : mCoverArtMap.keySet()) { serialized += "\n " + handle + "\n"; sb.append("\n " + handle); } sb.append("\n"); } return serialized; @Override public String toString() { return "[BrowseTree size=" + mBrowseMap.size() + "]"; } // Calculates the path to target node. Loading
android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/BrowseNodeTest.java +40 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import java.util.List; public class BrowseNodeTest { private static final int TEST_PLAYER_ID = 1; private static final String TEST_UUID = "1111"; private static final String TEST_NAME = "item"; private final byte[] mTestAddress = new byte[]{01, 01, 01, 01, 01, 01}; private BluetoothAdapter mAdapter; Loading Loading @@ -181,11 +182,46 @@ public class BrowseNodeTest { assertThat(mRootNode.isDescendant(browseNode)).isTrue(); } @Test public void toTreeString_returnFormattedString() { final String expected = " [Id: 1111 Name: item Size: 2]\n" + " [Id: child1 Name: child1 Size: 1]\n" + " [Id: child3 Name: child3 Size: 0]\n" + " [Id: child2 Name: child2 Size: 0]\n"; BrowseNode browseNode = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid(TEST_UUID) .setDisplayableName(TEST_NAME) .build()); BrowseNode childNode1 = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid("child1") .setDisplayableName("child1") .build()); BrowseNode childNode2 = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid("child2") .setDisplayableName("child2") .build()); BrowseNode childNode3 = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid("child3") .setDisplayableName("child3") .build()); childNode1.addChild(childNode3); browseNode.addChild(childNode1); browseNode.addChild(childNode2); StringBuilder sb = new StringBuilder(); browseNode.toTreeString(0, sb); assertThat(sb.toString()).isEqualTo(expected); } @Test public void toString_returnsId() { BrowseNode browseNode = mBrowseTree.new BrowseNode( new AvrcpItem.Builder().setUuid(TEST_UUID).build()); BrowseNode browseNode = mBrowseTree.new BrowseNode(new AvrcpItem.Builder() .setUuid(TEST_UUID) .setDisplayableName(TEST_NAME) .build()); assertThat(browseNode.toString()).isEqualTo("ID: " + TEST_UUID); assertThat(browseNode.toString()).isEqualTo( "[Id: " + TEST_UUID + " Name: " + TEST_NAME + " Size: 0]"); } }
android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/BrowseTreeTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -207,7 +207,7 @@ public class BrowseTreeTest { @Test public void toString_returnsSizeInfo() { BrowseTree browseTree = new BrowseTree(mTestDevice); assertThat(browseTree.toString()).isEqualTo("Size: " + browseTree.mBrowseMap.size()); assertThat(browseTree.toString()).isEqualTo( "[BrowseTree size=" + browseTree.mBrowseMap.size() + "]"); } }