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