summaryrefslogtreecommitdiff
path: root/InCallUI/tests
diff options
context:
space:
mode:
authorBrandon Maxwell <maxwelb@google.com>2016-02-02 19:36:46 -0800
committerBrandon Maxwell <maxwelb@google.com>2016-02-04 12:19:55 -0800
commit9cd03e1e3c319f7633638615074da3028eb45c2b (patch)
treeabf35f13b7223224d498acc2aa664a3cdc78b442 /InCallUI/tests
parentf68dac28d412c277a83db1e81147651c75cd22ef (diff)
Fixes for FBE behavior changes
+ This change ensures that the Dialer doesn't try to use the ContactsPreferences object (which uses information in unavailable storage) while in File based encryption locked mode. Without these checks, the Dialer crashes on receiving an incoming call while FBE locked. + Added Factory method to create ContactsPreferences for tests/while FBE locked/while FBE unlocked + Added tests for CallCardPresenter and StatusBarNotifier FBE related code Bug=26822105 Change-Id: I5df93526e70b7350885c7261982945c32b7e86a0
Diffstat (limited to 'InCallUI/tests')
-rw-r--r--InCallUI/tests/src/com/android/incallui/CallCardPresenterTest.java121
-rw-r--r--InCallUI/tests/src/com/android/incallui/ContactsPreferencesFactoryTest.java51
-rw-r--r--InCallUI/tests/src/com/android/incallui/StatusBarNotifierTest.java98
3 files changed, 270 insertions, 0 deletions
diff --git a/InCallUI/tests/src/com/android/incallui/CallCardPresenterTest.java b/InCallUI/tests/src/com/android/incallui/CallCardPresenterTest.java
new file mode 100644
index 000000000..79545ce4b
--- /dev/null
+++ b/InCallUI/tests/src/com/android/incallui/CallCardPresenterTest.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2016 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.incallui;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.incallui.ContactInfoCache.ContactCacheEntry;
+
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+@MediumTest
+public class CallCardPresenterTest extends AndroidTestCase {
+
+ private static final String NAME_PRIMARY = "Full Name";
+ private static final String NAME_ALTERNATIVE = "Name, Full";
+ private static final String LOCATION = "US";
+ private static final String NUMBER = "8006459001";
+
+ @Mock private ContactsPreferences mContactsPreferences;
+ private ContactCacheEntry mUnlockedContactInfo;
+ private ContactCacheEntry mLockedContactInfo;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ MockitoAnnotations.initMocks(this);
+
+ Mockito.when(mContactsPreferences.getDisplayOrder())
+ .thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+ // Unlocked all contact info is available
+ mUnlockedContactInfo = new ContactCacheEntry();
+ mUnlockedContactInfo.namePrimary = NAME_PRIMARY;
+ mUnlockedContactInfo.nameAlternative = NAME_ALTERNATIVE;
+ mUnlockedContactInfo.location = LOCATION;
+ mUnlockedContactInfo.number = NUMBER;
+
+ // Locked only number and location are available
+ mLockedContactInfo = new ContactCacheEntry();
+ mLockedContactInfo .location = LOCATION;
+ mLockedContactInfo .number = NUMBER;
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ super.tearDown();
+ ContactsPreferencesFactory.setTestInstance(null);
+ }
+
+ public void testGetNameForCall_Unlocked() {
+ ContactsPreferencesFactory.setTestInstance(mContactsPreferences);
+ CallCardPresenter presenter = new CallCardPresenter();
+ presenter.init(getContext(), null);
+
+ assertEquals(NAME_PRIMARY, presenter.getNameForCall(mUnlockedContactInfo));
+ }
+
+ public void testGetNameForCall_Locked() {
+ ContactsPreferencesFactory.setTestInstance(null);
+ CallCardPresenter presenter = new CallCardPresenter();
+ presenter.init(getContext(), null);
+
+ assertEquals(NUMBER, presenter.getNameForCall(mLockedContactInfo));
+ }
+
+ public void testGetNameForCall_EmptyPreferredName() {
+ ContactCacheEntry contactInfo = new ContactCacheEntry();
+ contactInfo.number = NUMBER;
+
+ ContactsPreferencesFactory.setTestInstance(null);
+ CallCardPresenter presenter = new CallCardPresenter();
+ presenter.init(getContext(), null);
+
+ assertEquals(NUMBER, presenter.getNameForCall(contactInfo));
+ }
+
+ public void testGetNumberForCall_Unlocked() {
+ ContactsPreferencesFactory.setTestInstance(mContactsPreferences);
+ CallCardPresenter presenter = new CallCardPresenter();
+ presenter.init(getContext(), null);
+
+ assertEquals(NUMBER, presenter.getNumberForCall(mUnlockedContactInfo));
+ }
+
+ public void testGetNumberForCall_Locked() {
+ ContactsPreferencesFactory.setTestInstance(null);
+ CallCardPresenter presenter = new CallCardPresenter();
+ presenter.init(getContext(), null);
+
+ assertEquals(LOCATION, presenter.getNumberForCall(mLockedContactInfo));
+ }
+
+ public void testGetNumberForCall_EmptyPreferredName() {
+ ContactCacheEntry contactInfo = new ContactCacheEntry();
+ contactInfo.location = LOCATION;
+
+ ContactsPreferencesFactory.setTestInstance(null);
+ CallCardPresenter presenter = new CallCardPresenter();
+ presenter.init(getContext(), null);
+
+ assertEquals(LOCATION, presenter.getNumberForCall(contactInfo));
+ }
+}
diff --git a/InCallUI/tests/src/com/android/incallui/ContactsPreferencesFactoryTest.java b/InCallUI/tests/src/com/android/incallui/ContactsPreferencesFactoryTest.java
new file mode 100644
index 000000000..bf915553b
--- /dev/null
+++ b/InCallUI/tests/src/com/android/incallui/ContactsPreferencesFactoryTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2016 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.incallui;
+
+import com.android.dialer.compat.UserManagerCompat;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.preference.ContactsPreferences;
+
+import org.mockito.Mockito;
+
+@SmallTest
+public class ContactsPreferencesFactoryTest extends AndroidTestCase {
+
+ public void testNewContactsPreferences_Unlocked() {
+ if (!UserManagerCompat.isUserUnlocked(getContext())) {
+ return;
+ }
+ assertNotNull(ContactsPreferencesFactory.newContactsPreferences(getContext()));
+ }
+
+ public void testNewContactsPreferences_Locked() {
+ if (UserManagerCompat.isUserUnlocked(getContext())) {
+ return;
+ }
+ assertNull(ContactsPreferencesFactory.newContactsPreferences(getContext()));
+ }
+
+ public void testNewContactsPreferences_TestInstance() {
+ ContactsPreferences testInstance = Mockito.mock(ContactsPreferences.class);
+ ContactsPreferencesFactory.setTestInstance(testInstance);
+ // Assert that it returns the same object always
+ assertSame(testInstance, ContactsPreferencesFactory.newContactsPreferences(getContext()));
+ assertSame(testInstance, ContactsPreferencesFactory.newContactsPreferences(getContext()));
+ }
+}
diff --git a/InCallUI/tests/src/com/android/incallui/StatusBarNotifierTest.java b/InCallUI/tests/src/com/android/incallui/StatusBarNotifierTest.java
new file mode 100644
index 000000000..4c55ddcc0
--- /dev/null
+++ b/InCallUI/tests/src/com/android/incallui/StatusBarNotifierTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2016 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.incallui;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.incallui.ContactInfoCache.ContactCacheEntry;
+
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+@MediumTest
+public class StatusBarNotifierTest extends AndroidTestCase {
+
+ private static final String NAME_PRIMARY = "Full Name";
+ private static final String NAME_ALTERNATIVE = "Name, Full";
+ private static final String LOCATION = "US";
+ private static final String NUMBER = "8006459001";
+
+ @Mock private Call mCall;
+ @Mock private ContactsPreferences mContactsPreferences;
+ private ContactCacheEntry mUnlockedContactInfo;
+ private ContactCacheEntry mLockedContactInfo;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ MockitoAnnotations.initMocks(this);
+
+ Mockito.when(mContactsPreferences.getDisplayOrder())
+ .thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+ // Unlocked all contact info is available
+ mUnlockedContactInfo = new ContactCacheEntry();
+ mUnlockedContactInfo.namePrimary = NAME_PRIMARY;
+ mUnlockedContactInfo.nameAlternative = NAME_ALTERNATIVE;
+ mUnlockedContactInfo.location = LOCATION;
+ mUnlockedContactInfo.number = NUMBER;
+
+ // Locked only number and location are available
+ mLockedContactInfo = new ContactCacheEntry();
+ mLockedContactInfo .location = LOCATION;
+ mLockedContactInfo .number = NUMBER;
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ super.tearDown();
+ ContactsPreferencesFactory.setTestInstance(null);
+ }
+
+ public void testGetContentTitle_ConferenceCall() {
+ ContactsPreferencesFactory.setTestInstance(null);
+ StatusBarNotifier statusBarNotifier = new StatusBarNotifier(mContext, null);
+
+ Mockito.when(mCall.isConferenceCall()).thenReturn(true);
+ Mockito.when(mCall.hasProperty(Mockito.anyInt())).thenReturn(false);
+
+ assertEquals(mContext.getResources().getString(R.string.card_title_conf_call),
+ statusBarNotifier.getContentTitle(null, mCall));
+ }
+
+ public void testGetContentTitle_Unlocked() {
+ ContactsPreferencesFactory.setTestInstance(mContactsPreferences);
+ StatusBarNotifier statusBarNotifier = new StatusBarNotifier(mContext, null);
+ assertEquals(NAME_PRIMARY, statusBarNotifier.getContentTitle(mUnlockedContactInfo, mCall));
+ }
+
+ public void testGetContentTitle_Locked() {
+ ContactsPreferencesFactory.setTestInstance(null);
+ StatusBarNotifier statusBarNotifier = new StatusBarNotifier(mContext, null);
+ assertEquals(NUMBER, statusBarNotifier.getContentTitle(mLockedContactInfo, mCall));
+ }
+
+ public void testGetContentTitle_EmptyPreferredName() {
+ ContactCacheEntry contactCacheEntry = new ContactCacheEntry();
+ contactCacheEntry.number = NUMBER;
+ StatusBarNotifier statusBarNotifier = new StatusBarNotifier(mContext, null);
+ assertEquals(NUMBER, statusBarNotifier.getContentTitle(contactCacheEntry, mCall));
+ }
+}