Snap for 10453563 from 65776e8f16bd6b2d318795b806c2d322491fdfa3 to mainline-ipsec-release

Change-Id: I7e50817d5ef0bd9c03774b2c5f9a7999d3f60238
diff --git a/Android.bp b/Android.bp
index ac8ca69..ac85d76 100644
--- a/Android.bp
+++ b/Android.bp
@@ -25,6 +25,10 @@
     srcs: ["java/**/*.java"],
     apex_available: [
         "//apex_available:platform",
-        "com.android.bluetooth",
+        "com.android.btservices",
     ],
+
+    libs: [
+        "framework-annotations-lib",
+    ]
 }
diff --git a/OWNERS b/OWNERS
index 22dad71..0b3cfb7 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1,4 @@
 # Default code reviewers picked from top 3 or more developers.
 # Please update this list if you find better candidates.
 pirozzoj@google.com
-maghraby@google.com
+johnshao@google.com
diff --git a/java/com/android/vcard/JapaneseUtils.java b/java/com/android/vcard/JapaneseUtils.java
index 5b44944..7079648 100644
--- a/java/com/android/vcard/JapaneseUtils.java
+++ b/java/com/android/vcard/JapaneseUtils.java
@@ -16,6 +16,8 @@
 
 package com.android.vcard;
 
+import com.android.internal.annotations.VisibleForTesting;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -23,7 +25,8 @@
  * TextUtils especially for Japanese.
  */
 /* package */ class JapaneseUtils {
-    static private final Map<Character, String> sHalfWidthMap =
+    @VisibleForTesting
+    static final Map<Character, String> sHalfWidthMap =
         new HashMap<Character, String>();
 
     static {
diff --git a/java/com/android/vcard/VCardParserImpl_V21.java b/java/com/android/vcard/VCardParserImpl_V21.java
index 2fa52df..07695a5 100644
--- a/java/com/android/vcard/VCardParserImpl_V21.java
+++ b/java/com/android/vcard/VCardParserImpl_V21.java
@@ -481,7 +481,7 @@
                 || ptypeval.startsWith("X-"))
                 && !mUnknownTypeSet.contains(ptypeval)) {
             mUnknownTypeSet.add(ptypeval);
-            Log.w(LOG_TAG, String.format("TYPE unsupported by %s: ", getVersion(), ptypeval));
+            Log.w(LOG_TAG, String.format("TYPE unsupported by %s: %s", getVersion(), ptypeval));
         }
         propertyData.addParameter(VCardConstants.PARAM_TYPE, ptypeval);
     }
@@ -495,7 +495,7 @@
                 || mUnknownValueSet.contains(pvalueval))) {
             mUnknownValueSet.add(pvalueval);
             Log.w(LOG_TAG, String.format(
-                    "The value unsupported by TYPE of %s: ", getVersion(), pvalueval));
+                    "The value unsupported by TYPE of %s: %s", getVersion(), pvalueval));
         }
         propertyData.addParameter(VCardConstants.PARAM_VALUE, pvalueval);
     }
diff --git a/tests/Android.bp b/tests/Android.bp
index 5c49410..ec1d932 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -31,6 +31,10 @@
     static_libs: [
         "com.android.vcard",
         "junit",
+        "androidx.test.ext.truth",
+        "androidx.test.rules",
+        "mockito-target",
+        "truth-prebuilt",
     ],
 
     jacoco: {
diff --git a/tests/src/com/android/vcard/tests/JapaneseUtilsTest.java b/tests/src/com/android/vcard/tests/JapaneseUtilsTest.java
new file mode 100644
index 0000000..452944e
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/JapaneseUtilsTest.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard;
+
+import com.android.vcard.JapaneseUtils;
+
+import junit.framework.TestCase;
+
+public class JapaneseUtilsTest extends TestCase {
+    static final char TEST_CONTAINED_CHAR = '\uFFE5';
+    static final char TEST_UNCONTAINED_CHAR = '\uFFF5';
+
+    public void testTryGetHalfWidthText() {
+        assertNull(JapaneseUtils.tryGetHalfWidthText(TEST_UNCONTAINED_CHAR));
+        assertEquals(JapaneseUtils.tryGetHalfWidthText(TEST_CONTAINED_CHAR), "\u005C\u005C");
+    }
+}
diff --git a/tests/src/com/android/vcard/tests/exception/VCardAgentNotSupportedExceptionTest.java b/tests/src/com/android/vcard/tests/exception/VCardAgentNotSupportedExceptionTest.java
new file mode 100644
index 0000000..c370ec0
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/exception/VCardAgentNotSupportedExceptionTest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard.tests;
+
+import com.android.vcard.exception.VCardAgentNotSupportedException;
+
+import junit.framework.TestCase;
+
+public class VCardAgentNotSupportedExceptionTest extends TestCase {
+    static final String TEST_MESSAGE = "message";
+
+    public void testExceptionWithoutMessage() {
+        VCardAgentNotSupportedException exception = new VCardAgentNotSupportedException();
+        assertNull(exception.getMessage());
+    }
+
+    public void testExceptionWithMessage() {
+        VCardAgentNotSupportedException exception = new VCardAgentNotSupportedException(
+                TEST_MESSAGE);
+        assertEquals(exception.getMessage(), TEST_MESSAGE);
+    }
+}
diff --git a/tests/src/com/android/vcard/tests/exception/VCardExceptionTest.java b/tests/src/com/android/vcard/tests/exception/VCardExceptionTest.java
new file mode 100644
index 0000000..6f09fad
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/exception/VCardExceptionTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard.tests;
+
+import com.android.vcard.exception.VCardException;
+
+import junit.framework.TestCase;
+
+public class VCardExceptionTest extends TestCase {
+    static final String TEST_MESSAGE = "message";
+
+    public void testExceptionWithoutMessage() {
+        VCardException exception = new VCardException();
+        assertNull(exception.getMessage());
+    }
+
+    public void testExceptionWithMessage() {
+        VCardException exception = new VCardException(TEST_MESSAGE);
+        assertEquals(exception.getMessage(), TEST_MESSAGE);
+    }
+}
diff --git a/tests/src/com/android/vcard/tests/exception/VCardInvalidCommentLineExceptionTest.java b/tests/src/com/android/vcard/tests/exception/VCardInvalidCommentLineExceptionTest.java
new file mode 100644
index 0000000..5a1429f
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/exception/VCardInvalidCommentLineExceptionTest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard.tests;
+
+import com.android.vcard.exception.VCardInvalidCommentLineException;
+
+import junit.framework.TestCase;
+
+public class VCardInvalidCommentLineExceptionTest extends TestCase {
+    static final String TEST_MESSAGE = "message";
+
+    public void testExceptionWithoutMessage() {
+        VCardInvalidCommentLineException exception = new VCardInvalidCommentLineException();
+        assertNull(exception.getMessage());
+    }
+
+    public void testExceptionWithMessage() {
+        VCardInvalidCommentLineException exception = new VCardInvalidCommentLineException(
+                TEST_MESSAGE);
+        assertEquals(exception.getMessage(), TEST_MESSAGE);
+    }
+}
diff --git a/tests/src/com/android/vcard/tests/exception/VCardInvalidLineExceptionTest.java b/tests/src/com/android/vcard/tests/exception/VCardInvalidLineExceptionTest.java
new file mode 100644
index 0000000..6568de8
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/exception/VCardInvalidLineExceptionTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard.tests;
+
+import com.android.vcard.exception.VCardInvalidLineException;
+
+import junit.framework.TestCase;
+
+public class VCardInvalidLineExceptionTest extends TestCase {
+    static final String TEST_MESSAGE = "message";
+
+    public void testExceptionWithoutMessage() {
+        VCardInvalidLineException exception = new VCardInvalidLineException();
+        assertNull(exception.getMessage());
+    }
+
+    public void testExceptionWithMessage() {
+        VCardInvalidLineException exception = new VCardInvalidLineException(TEST_MESSAGE);
+        assertEquals(exception.getMessage(), TEST_MESSAGE);
+    }
+}
diff --git a/tests/src/com/android/vcard/tests/exception/VCardNestedExceptionTest.java b/tests/src/com/android/vcard/tests/exception/VCardNestedExceptionTest.java
new file mode 100644
index 0000000..ee87dc2
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/exception/VCardNestedExceptionTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard.tests;
+
+import com.android.vcard.exception.VCardNestedException;
+
+import junit.framework.TestCase;
+
+public class VCardNestedExceptionTest extends TestCase {
+    static final String TEST_MESSAGE = "message";
+
+    public void testExceptionWithoutMessage() {
+        VCardNestedException exception = new VCardNestedException();
+        assertNull(exception.getMessage());
+    }
+
+    public void testExceptionWithMessage() {
+        VCardNestedException exception = new VCardNestedException(TEST_MESSAGE);
+        assertEquals(exception.getMessage(), TEST_MESSAGE);
+    }
+}
diff --git a/tests/src/com/android/vcard/tests/exception/VCardNotSupportedExceptionTest.java b/tests/src/com/android/vcard/tests/exception/VCardNotSupportedExceptionTest.java
new file mode 100644
index 0000000..0d393be
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/exception/VCardNotSupportedExceptionTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard.tests;
+
+import com.android.vcard.exception.VCardNotSupportedException;
+
+import junit.framework.TestCase;
+
+public class VCardNotSupportedExceptionTest extends TestCase {
+    static final String TEST_MESSAGE = "message";
+
+    public void testExceptionWithoutMessage() {
+        VCardNotSupportedException exception = new VCardNotSupportedException();
+        assertNull(exception.getMessage());
+    }
+
+    public void testExceptionWithMessage() {
+        VCardNotSupportedException exception = new VCardNotSupportedException(TEST_MESSAGE);
+        assertEquals(exception.getMessage(), TEST_MESSAGE);
+    }
+}
diff --git a/tests/src/com/android/vcard/tests/exception/VCardVersionExceptionTest.java b/tests/src/com/android/vcard/tests/exception/VCardVersionExceptionTest.java
new file mode 100644
index 0000000..1e9ed67
--- /dev/null
+++ b/tests/src/com/android/vcard/tests/exception/VCardVersionExceptionTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.vcard.tests;
+
+import com.android.vcard.exception.VCardVersionException;
+
+import junit.framework.TestCase;
+
+public class VCardVersionExceptionTest extends TestCase {
+    static final String TEST_MESSAGE = "message";
+
+    public void testExceptionWithoutMessage() {
+        VCardVersionException exception = new VCardVersionException();
+        assertNull(exception.getMessage());
+    }
+
+    public void testExceptionWithMessage() {
+        VCardVersionException exception = new VCardVersionException(TEST_MESSAGE);
+        assertEquals(exception.getMessage(), TEST_MESSAGE);
+    }
+}