TelephonyComponentFactory.java revision 27f471647b2da3ff50620a766c048ebef8d45ae1
10a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan/*
20a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * Copyright (C) 2015 The Android Open Source Project
30a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan *
40a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * Licensed under the Apache License, Version 2.0 (the "License");
50a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * you may not use this file except in compliance with the License.
60a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * You may obtain a copy of the License at
70a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan *
80a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan *      http://www.apache.org/licenses/LICENSE-2.0
90a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan *
100a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * Unless required by applicable law or agreed to in writing, software
110a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * distributed under the License is distributed on an "AS IS" BASIS,
120a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * See the License for the specific language governing permissions and
140a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * limitations under the License.
150a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan */
160a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
170a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanpackage com.android.internal.telephony;
180a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
190a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport android.content.Context;
200a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport android.os.Handler;
21ec334adf4017ca172f44612d01456e671f922344Amit Mahajanimport android.os.IDeviceIdleController;
220a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport android.os.PowerManager;
23ec334adf4017ca172f44612d01456e671f922344Amit Mahajanimport android.os.ServiceManager;
240a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
250a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.ims.ImsManager;
260a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
270a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.cdma.EriManager;
280a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.dataconnection.DcTracker;
290a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.uicc.IccCardProxy;
300a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
310a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan/**
320a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * This class has one-line methods to instantiate objects only. The purpose is to make code
330a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * unit-test friendly and use this class as a way to do dependency injection. Instantiating objects
340a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * this way makes it easier to mock them in tests.
350a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan */
360a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanpublic class TelephonyComponentFactory {
370a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    private static TelephonyComponentFactory sInstance;
380a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
390a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public static TelephonyComponentFactory getInstance() {
400a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        if (sInstance == null) {
410a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan            sInstance = new TelephonyComponentFactory();
420a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        }
430a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return sInstance;
440a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
450a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
460a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public GsmCdmaCallTracker makeGsmCdmaCallTracker(GsmCdmaPhone phone) {
470a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new GsmCdmaCallTracker(phone);
480a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
490a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
500a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public SmsStorageMonitor makeSmsStorageMonitor(Phone phone) {
510a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new SmsStorageMonitor(phone);
520a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
530a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
540a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public SmsUsageMonitor makeSmsUsageMonitor(Context context) {
550a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new SmsUsageMonitor(context);
560a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
570a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
580a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public ServiceStateTracker makeServiceStateTracker(GsmCdmaPhone phone, CommandsInterface ci) {
590a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new ServiceStateTracker(phone, ci);
600a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
610a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
620a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public DcTracker makeDcTracker(Phone phone) {
630a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new DcTracker(phone);
640a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
650a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
660a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public IccPhoneBookInterfaceManager makeIccPhoneBookInterfaceManager(Phone phone) {
670a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new IccPhoneBookInterfaceManager(phone);
680a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
690a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
700a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public IccSmsInterfaceManager makeIccSmsInterfaceManager(Phone phone) {
710a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new IccSmsInterfaceManager(phone);
720a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
730a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
740a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public IccCardProxy makeIccCardProxy(Context context, CommandsInterface ci, int phoneId) {
750a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new IccCardProxy(context, ci, phoneId);
760a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
770a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
780a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public EriManager makeEriManager(Phone phone, Context context, int eriFileSource) {
790a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return new EriManager(phone, context, eriFileSource);
800a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
810a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan
8260a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan    public WspTypeDecoder makeWspTypeDecoder(byte[] pdu) {
8360a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan        return new WspTypeDecoder(pdu);
8460a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan    }
8560a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan
8627f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan    /**
8727f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan     * Create a tracker for a single-part SMS.
8827f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan     */
8927f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan    public InboundSmsTracker makeInboundSmsTracker(byte[] pdu, long timestamp, int destPort,
9027f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan            boolean is3gpp2, boolean is3gpp2WapPdu, String address) {
9127f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan        return new InboundSmsTracker(pdu, timestamp, destPort, is3gpp2, is3gpp2WapPdu, address);
9227f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan    }
9327f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan
9427f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan    /**
9527f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan     * Create a tracker for a multi-part SMS.
9627f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan     */
9727f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan    public InboundSmsTracker makeInboundSmsTracker(byte[] pdu, long timestamp, int destPort,
9827f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan            boolean is3gpp2, String address, int referenceNumber, int sequenceNumber,
9927f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan            int messageCount, boolean is3gpp2WapPdu) {
10027f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan        return new InboundSmsTracker(pdu, timestamp, destPort, is3gpp2, address, referenceNumber,
10127f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan                sequenceNumber, messageCount, is3gpp2WapPdu);
10227f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan    }
10327f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan
1040a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    public CdmaSubscriptionSourceManager
1050a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    getCdmaSubscriptionSourceManagerInstance(Context context, CommandsInterface ci, Handler h,
1060a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan                                             int what, Object obj) {
1070a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan        return CdmaSubscriptionSourceManager.getInstance(context, ci, h, what, obj);
1080a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan    }
109ec334adf4017ca172f44612d01456e671f922344Amit Mahajan
110ec334adf4017ca172f44612d01456e671f922344Amit Mahajan    public IDeviceIdleController getIDeviceIdleController() {
111ec334adf4017ca172f44612d01456e671f922344Amit Mahajan        return IDeviceIdleController.Stub.asInterface(
112ec334adf4017ca172f44612d01456e671f922344Amit Mahajan                ServiceManager.getService(Context.DEVICE_IDLE_CONTROLLER));
113ec334adf4017ca172f44612d01456e671f922344Amit Mahajan    }
1140a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan}
115