|  | /* | 
|  | * 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; | 
|  |  | 
|  | import android.content.Context; | 
|  | import android.os.Handler; | 
|  | import android.support.test.InstrumentationRegistry; | 
|  |  | 
|  | import com.android.phone.MockitoHelper; | 
|  |  | 
|  | import org.mockito.MockitoAnnotations; | 
|  |  | 
|  | import java.util.concurrent.CountDownLatch; | 
|  | import java.util.concurrent.TimeUnit; | 
|  |  | 
|  | /** | 
|  | * Helper class to load Mockito Resources into a test. | 
|  | */ | 
|  | public class TelephonyTestBase { | 
|  |  | 
|  | protected Context mContext; | 
|  | MockitoHelper mMockitoHelper = new MockitoHelper(); | 
|  |  | 
|  | public void setUp() throws Exception { | 
|  | mContext = InstrumentationRegistry.getTargetContext(); | 
|  | mMockitoHelper.setUp(mContext, getClass()); | 
|  | MockitoAnnotations.initMocks(this); | 
|  | } | 
|  |  | 
|  | public void tearDown() throws Exception { | 
|  | mMockitoHelper.tearDown(); | 
|  | } | 
|  |  | 
|  | protected final void waitForHandlerAction(Handler h, long timeoutMillis) { | 
|  | final CountDownLatch lock = new CountDownLatch(1); | 
|  | h.post(lock::countDown); | 
|  | while (lock.getCount() > 0) { | 
|  | try { | 
|  | lock.await(timeoutMillis, TimeUnit.MILLISECONDS); | 
|  | } catch (InterruptedException e) { | 
|  | // do nothing | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | protected final void waitForHandlerActionDelayed(Handler h, long timeoutMillis, long delayMs) { | 
|  | final CountDownLatch lock = new CountDownLatch(1); | 
|  | h.postDelayed(lock::countDown, delayMs); | 
|  | while (lock.getCount() > 0) { | 
|  | try { | 
|  | lock.await(timeoutMillis, TimeUnit.MILLISECONDS); | 
|  | } catch (InterruptedException e) { | 
|  | // do nothing | 
|  | } | 
|  | } | 
|  | } | 
|  | } |