Messaging: Vendor chips, colorpicker, photoviewer, and vcard in-tree
Clone no longer depends on LineageOS gitlinks; the libraries used by the app live in this repo. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# Copyright (C) 2011 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.
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||
|
||||
LOCAL_PACKAGE_NAME := libChipsTests
|
||||
LOCAL_MODULE_TAGS := tests
|
||||
LOCAL_SDK_VERSION := current
|
||||
LOCAL_CERTIFICATE := platform
|
||||
LOCAL_STATIC_JAVA_LIBRARIES := libchips legacy-android-test junit
|
||||
LOCAL_RESOURCE_DIR := frameworks/opt/chips/res/
|
||||
LOCAL_AAPT_FLAGS := --auto-add-overlay
|
||||
LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.chips
|
||||
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2011 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.
|
||||
-->
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.ex.chips.tests"
|
||||
android:sharedUserId="com.android.uid.test">
|
||||
|
||||
<application>
|
||||
<uses-library android:name="android.test.runner" />
|
||||
</application>
|
||||
|
||||
<!-- Run tests with "runtest android-common" -->
|
||||
<instrumentation android:name="android.test.InstrumentationTestRunner"
|
||||
android:targetPackage="com.android.ex.chips.tests"
|
||||
android:label="Chips Tests" />
|
||||
|
||||
</manifest>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,167 @@
|
||||
/*
|
||||
* Copyright (C) 2012 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.ex.chips;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.database.MatrixCursor;
|
||||
import android.net.Uri;
|
||||
import android.provider.ContactsContract.DisplayNameSources;
|
||||
import android.test.AndroidTestCase;
|
||||
|
||||
import com.android.ex.chips.RecipientAlternatesAdapter;
|
||||
import com.android.ex.chips.RecipientEntry;
|
||||
|
||||
public class RecipientAlternatesAdapterTest extends AndroidTestCase {
|
||||
|
||||
public void testRemoveUndesiredDestinations() {
|
||||
MatrixCursor c = new MatrixCursor(Queries.EMAIL.getProjection());
|
||||
Cursor result;
|
||||
|
||||
// Test: Empty input
|
||||
assertEquals(0, RecipientAlternatesAdapter.removeUndesiredDestinations(c,
|
||||
null /* desiredMimeType */, null /* lookupKey */).getCount());
|
||||
|
||||
|
||||
// Test: One row
|
||||
addRow(c, "a", "1@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
|
||||
result = RecipientAlternatesAdapter.removeUndesiredDestinations(c,
|
||||
null /* desiredMimeType */, null /* lookupKey */);
|
||||
assertEquals(1, result.getCount());
|
||||
assertRow(result, 0, "a", "1@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
|
||||
// Test: two unique rows, different destinations
|
||||
addRow(c, "a", "2@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
|
||||
result = RecipientAlternatesAdapter.removeUndesiredDestinations(c,
|
||||
null /* desiredMimeType */, null /* lookupKey */);
|
||||
assertEquals(2, result.getCount());
|
||||
assertRow(result, 0, "a", "1@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
assertRow(result, 1, "a", "2@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
|
||||
// Test: add a third row with a non-unique destination.
|
||||
addRow(c, "ax", "1@android.com", 11, "homex", 10001, 2000, "xx", 1);
|
||||
|
||||
// Third row should be removed.
|
||||
result = RecipientAlternatesAdapter.removeUndesiredDestinations(c,
|
||||
null /* desiredMimeType */, null /* lookupKey */);
|
||||
assertEquals(2, result.getCount());
|
||||
assertRow(result, 0, "a", "1@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
assertRow(result, 1, "a", "2@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
|
||||
// Test: add a forth row with a non-unique destination again.
|
||||
addRow(c, "ax", "2@android.com", 11, "homex", 10001, 2000, "xx", 1);
|
||||
|
||||
// Forth row should also be removed.
|
||||
result = RecipientAlternatesAdapter.removeUndesiredDestinations(c,
|
||||
null /* desiredMimeType */, null /* lookupKey */);
|
||||
assertEquals(2, result.getCount());
|
||||
assertRow(result, 0, "a", "1@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
assertRow(result, 1, "a", "2@android.com", 1, "home", 1000, 2000, "x", 0);
|
||||
}
|
||||
|
||||
private static MatrixCursor addRow(MatrixCursor c,
|
||||
String displayName,
|
||||
String destination,
|
||||
int destinationType,
|
||||
String destinationLabel,
|
||||
long contactId,
|
||||
long dataId,
|
||||
String photoUri,
|
||||
int displayNameSource
|
||||
) {
|
||||
c.addRow(new Object[] {displayName, destination, destinationType, destinationLabel,
|
||||
contactId, dataId, photoUri, displayNameSource});
|
||||
return c;
|
||||
}
|
||||
|
||||
private static void assertRow(Cursor c, int position,
|
||||
String displayName,
|
||||
String destination,
|
||||
int destinationType,
|
||||
String destinationLabel,
|
||||
long contactId,
|
||||
long dataId,
|
||||
String photoUri,
|
||||
int displayNameSource
|
||||
) {
|
||||
assertTrue(c.moveToPosition(position));
|
||||
assertEquals(displayName, c.getString(0));
|
||||
assertEquals(destination, c.getString(1));
|
||||
assertEquals(destinationType, c.getInt(2));
|
||||
assertEquals(destinationLabel, c.getString(3));
|
||||
assertEquals(contactId, c.getLong(4));
|
||||
assertEquals(dataId, c.getLong(5));
|
||||
assertEquals(photoUri, c.getString(6));
|
||||
assertEquals(displayNameSource, c.getInt(7));
|
||||
}
|
||||
|
||||
public void testGetBetterRecipient() {
|
||||
// Ensure that if either (but not both) parameters are null, the other is returned
|
||||
{
|
||||
final RecipientEntry entry1 =
|
||||
RecipientEntry.constructFakeEntry("1@android.com", true);
|
||||
final RecipientEntry entry2 = null;
|
||||
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry1, entry2), entry1);
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry2, entry1), entry1);
|
||||
}
|
||||
|
||||
// Ensure that if only one has a display name, it is used
|
||||
{
|
||||
final RecipientEntry entry1 =
|
||||
RecipientEntry.constructTopLevelEntry("Android", DisplayNameSources.NICKNAME,
|
||||
"1@android.com", 0, null, 0, null /* directoryId */, 0, (Uri) null,
|
||||
true, null /* lookupKey */);
|
||||
final RecipientEntry entry2 = RecipientEntry.constructFakeEntry("1@android.com", true);
|
||||
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry1, entry2), entry1);
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry2, entry1), entry1);
|
||||
}
|
||||
|
||||
// Ensure that if one has a display name different from its destination, and the other's
|
||||
// is equal to its destination, we use the unique one
|
||||
{
|
||||
final RecipientEntry entry1 =
|
||||
RecipientEntry.constructTopLevelEntry("Android", DisplayNameSources.NICKNAME,
|
||||
"1@android.com", 0, null, 0, null /* directoryId */, 0, (Uri) null,
|
||||
true, null /* lookupKey */);
|
||||
final RecipientEntry entry2 =
|
||||
RecipientEntry.constructTopLevelEntry("2@android.com", DisplayNameSources.EMAIL,
|
||||
"2@android.com", 0, null, 0, null /* directoryId */, 0, (Uri) null,
|
||||
true, null /* lookupKey */);
|
||||
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry1, entry2), entry1);
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry2, entry1), entry1);
|
||||
}
|
||||
|
||||
// Ensure that if only one has a photo, it is used
|
||||
{
|
||||
final RecipientEntry entry1 =
|
||||
RecipientEntry.constructTopLevelEntry("Android", DisplayNameSources.NICKNAME,
|
||||
"1@android.com", 0, null, 0, null /* directoryId */, 0,
|
||||
Uri.parse("http://www.android.com"), true, null /* lookupKey */);
|
||||
final RecipientEntry entry2 =
|
||||
RecipientEntry.constructTopLevelEntry("Android", DisplayNameSources.EMAIL,
|
||||
"2@android.com", 0, null, 0, null /* directoryId */,
|
||||
0, (Uri) null, true, null /* lookupKey */);
|
||||
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry1, entry2), entry1);
|
||||
assertEquals(RecipientAlternatesAdapter.getBetterRecipient(entry2, entry1), entry1);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user