135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang/* 235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Copyright (C) 2017 The Android Open Source Project 335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * 435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * you may not use this file except in compliance with the License. 635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * You may obtain a copy of the License at 735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * 835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * 1035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Unless required by applicable law or agreed to in writing, software 1135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 1235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * See the License for the specific language governing permissions and 1435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * limitations under the License. 1535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang */ 1635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 1735692cf439fe1067ea742174033f5748a08a5d66Fan Zhangpackage com.android.settings.applications.defaultapps; 1835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 1935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 2035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.app.Activity; 2135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.content.Context; 2235692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.os.UserManager; 2335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 249f1e911759dc6fedaac9fa65afb79f6a93022bf4Andrew Sappersteinimport com.android.settings.testutils.SettingsRobolectricTestRunner; 2535692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.settings.TestConfig; 2635692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.settings.applications.PackageManagerWrapper; 2735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 2835692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.junit.Before; 2935692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.junit.Test; 3035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.junit.runner.RunWith; 3135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.mockito.Answers; 3235692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.mockito.Mock; 3335692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.mockito.MockitoAnnotations; 3435692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.robolectric.RuntimeEnvironment; 3535692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.robolectric.annotation.Config; 3635692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.robolectric.util.ReflectionHelpers; 3735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 3835692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Matchers.any; 3935692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Matchers.anyInt; 4035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Matchers.eq; 4135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.doReturn; 4235692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.spy; 4335692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.verify; 4435692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.when; 4535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 4635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang@RunWith(SettingsRobolectricTestRunner.class) 4735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 4835692cf439fe1067ea742174033f5748a08a5d66Fan Zhangpublic class DefaultPhonePickerTest { 4935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 5035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang private static final String TEST_APP_KEY = "com.android.settings/PickerTest"; 5135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 5235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Mock(answer = Answers.RETURNS_DEEP_STUBS) 5335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang private Activity mActivity; 5435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Mock 5535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang private UserManager mUserManager; 5635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Mock 5735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang private DefaultPhonePicker.DefaultKeyUpdater mDefaultKeyUpdater; 5835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Mock 5935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang private PackageManagerWrapper mPackageManager; 6035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 6135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang private DefaultPhonePicker mPicker; 6235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 6335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Before 6435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang public void setUp() { 6535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang MockitoAnnotations.initMocks(this); 6635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); 6735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang when(mActivity.getSystemService(Context.TELECOM_SERVICE)).thenReturn(null); 6835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang mPicker = spy(new DefaultPhonePicker()); 6935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang mPicker.onAttach((Context) mActivity); 7035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 7135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang ReflectionHelpers.setField(mPicker, "mPm", mPackageManager); 7235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang ReflectionHelpers.setField(mPicker, "mDefaultKeyUpdater", mDefaultKeyUpdater); 7335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang doReturn(RuntimeEnvironment.application).when(mPicker).getContext(); 7435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 7535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 7635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Test 7735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang public void getSystemDefaultPackage_shouldAskDefaultKeyUpdater() { 78a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang mPicker.getSystemDefaultKey(); 7935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 8035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang verify(mDefaultKeyUpdater).getSystemDialerPackage(); 8135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 8235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 8335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Test 8435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang public void setDefaultAppKey_shouldUpdateDefault() { 85a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang mPicker.setDefaultKey(TEST_APP_KEY); 8635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 8735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang verify(mDefaultKeyUpdater).setDefaultDialerApplication( 8835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang any(Context.class), eq(TEST_APP_KEY), anyInt()); 8935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 9035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 9135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Test 9235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang public void getDefaultAppKey_shouldReturnDefault() { 93a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang mPicker.getDefaultKey(); 9435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang verify(mDefaultKeyUpdater).getDefaultDialerApplication(any(Context.class), anyInt()); 9535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 9635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang} 97