TelephonyComponentFactory.java revision b8d6fafa17b6be739a61e6fa90cbb186875d0bb0
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; 20871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajanimport android.database.Cursor; 210a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport android.os.Handler; 22ec334adf4017ca172f44612d01456e671f922344Amit Mahajanimport android.os.IDeviceIdleController; 23ec334adf4017ca172f44612d01456e671f922344Amit Mahajanimport android.os.ServiceManager; 240a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 250a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; 260a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.cdma.EriManager; 270a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.dataconnection.DcTracker; 28fec523bdc5d2b6dd90212c8076bf34bcc2ab08b2Tyler Gunnimport com.android.internal.telephony.imsphone.ImsExternalCallTracker; 29ecac744a4e585e3c7af95ffa06fa3e711131200cAmit Mahajanimport com.android.internal.telephony.imsphone.ImsPhone; 30ecac744a4e585e3c7af95ffa06fa3e711131200cAmit Mahajanimport com.android.internal.telephony.imsphone.ImsPhoneCallTracker; 310a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanimport com.android.internal.telephony.uicc.IccCardProxy; 32b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajanimport com.android.internal.telephony.uicc.IccCardStatus; 33b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajanimport com.android.internal.telephony.uicc.UiccCard; 34b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajanimport com.android.internal.telephony.uicc.UiccProfile; 350a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 360a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan/** 370a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * This class has one-line methods to instantiate objects only. The purpose is to make code 380a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * unit-test friendly and use this class as a way to do dependency injection. Instantiating objects 390a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan * this way makes it easier to mock them in tests. 400a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan */ 410a567c9ed954f295df83c753239646c6f6a04128Amit Mahajanpublic class TelephonyComponentFactory { 420a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan private static TelephonyComponentFactory sInstance; 430a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 440a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public static TelephonyComponentFactory getInstance() { 450a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan if (sInstance == null) { 460a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan sInstance = new TelephonyComponentFactory(); 470a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 480a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return sInstance; 490a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 500a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 510a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public GsmCdmaCallTracker makeGsmCdmaCallTracker(GsmCdmaPhone phone) { 520a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new GsmCdmaCallTracker(phone); 530a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 540a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 550a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public SmsStorageMonitor makeSmsStorageMonitor(Phone phone) { 560a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new SmsStorageMonitor(phone); 570a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 580a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 590a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public SmsUsageMonitor makeSmsUsageMonitor(Context context) { 600a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new SmsUsageMonitor(context); 610a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 620a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 630a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public ServiceStateTracker makeServiceStateTracker(GsmCdmaPhone phone, CommandsInterface ci) { 640a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new ServiceStateTracker(phone, ci); 650a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 660a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 676f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller /** 686f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller * Returns a new {@link NitzStateMachine} instance. 696f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller */ 706f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller public NitzStateMachine makeNitzStateMachine(GsmCdmaPhone phone) { 716f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller return new NitzStateMachine(phone); 726f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller } 736f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller 746f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller /** 756f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller * Returns a new {@link TimeServiceHelper} instance. 766f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller */ 776f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller public TimeServiceHelper makeTimeServiceHelper(Context context) { 786f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller return new TimeServiceHelper(context); 796f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller } 806f0f602bcb26fc40776fac346b33c62276b80852Neil Fuller 819af99511111eeb5e9930185dc44259502811e3b6fionaxu public SimActivationTracker makeSimActivationTracker(Phone phone) { 829af99511111eeb5e9930185dc44259502811e3b6fionaxu return new SimActivationTracker(phone); 839af99511111eeb5e9930185dc44259502811e3b6fionaxu } 849af99511111eeb5e9930185dc44259502811e3b6fionaxu 850a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public DcTracker makeDcTracker(Phone phone) { 860a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new DcTracker(phone); 870a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 880a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 896a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu public CarrierSignalAgent makeCarrierSignalAgent(Phone phone) { 906a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu return new CarrierSignalAgent(phone); 916a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu } 926a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu 936a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu public CarrierActionAgent makeCarrierActionAgent(Phone phone) { 946a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu return new CarrierActionAgent(phone); 956a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu } 966a7fb078d1cacba7cf2e83b71242bb5c4c27c975fionaxu 972db47c1626b17a8f2c1f7f7030931a790c38c25ffionaxu public CarrierIdentifier makeCarrierIdentifier(Phone phone) { 982db47c1626b17a8f2c1f7f7030931a790c38c25ffionaxu return new CarrierIdentifier(phone); 992db47c1626b17a8f2c1f7f7030931a790c38c25ffionaxu } 1002db47c1626b17a8f2c1f7f7030931a790c38c25ffionaxu 1010a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public IccPhoneBookInterfaceManager makeIccPhoneBookInterfaceManager(Phone phone) { 1020a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new IccPhoneBookInterfaceManager(phone); 1030a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 1040a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 1050a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public IccSmsInterfaceManager makeIccSmsInterfaceManager(Phone phone) { 1060a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new IccSmsInterfaceManager(phone); 1070a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 1080a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 1090a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public IccCardProxy makeIccCardProxy(Context context, CommandsInterface ci, int phoneId) { 1100a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new IccCardProxy(context, ci, phoneId); 1110a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 1120a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 113b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan /** 114b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan * Create a new UiccProfile object. 115b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan */ 116b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan public UiccProfile makeUiccProfile(Context context, CommandsInterface ci, IccCardStatus ics, 117b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan int phoneId, UiccCard uiccCard) { 118b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan return new UiccProfile(context, ci, ics, phoneId, uiccCard); 119b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan } 120b8d6fafa17b6be739a61e6fa90cbb186875d0bb0Amit Mahajan 1210a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public EriManager makeEriManager(Phone phone, Context context, int eriFileSource) { 1220a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return new EriManager(phone, context, eriFileSource); 1230a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 1240a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan 12560a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan public WspTypeDecoder makeWspTypeDecoder(byte[] pdu) { 12660a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan return new WspTypeDecoder(pdu); 12760a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan } 12860a81bdb47cf64972c8edf5b0c51e8059765e5a0Amit Mahajan 12927f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan /** 13027f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan * Create a tracker for a single-part SMS. 13127f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan */ 13227f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan public InboundSmsTracker makeInboundSmsTracker(byte[] pdu, long timestamp, int destPort, 133af7bc32573007f2ea1185fc5cb4f3980e1ff1304fionaxu boolean is3gpp2, boolean is3gpp2WapPdu, String address, String displayAddr, 134af7bc32573007f2ea1185fc5cb4f3980e1ff1304fionaxu String messageBody) { 1356e4abd849e12860a7459f7ec74496ca02b9d7ee0Amit Mahajan return new InboundSmsTracker(pdu, timestamp, destPort, is3gpp2, is3gpp2WapPdu, address, 136af7bc32573007f2ea1185fc5cb4f3980e1ff1304fionaxu displayAddr, messageBody); 13727f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan } 13827f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan 13927f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan /** 14027f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan * Create a tracker for a multi-part SMS. 14127f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan */ 14227f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan public InboundSmsTracker makeInboundSmsTracker(byte[] pdu, long timestamp, int destPort, 143af7bc32573007f2ea1185fc5cb4f3980e1ff1304fionaxu boolean is3gpp2, String address, String displayAddr, int referenceNumber, int sequenceNumber, 1446e4abd849e12860a7459f7ec74496ca02b9d7ee0Amit Mahajan int messageCount, boolean is3gpp2WapPdu, String messageBody) { 145af7bc32573007f2ea1185fc5cb4f3980e1ff1304fionaxu return new InboundSmsTracker(pdu, timestamp, destPort, is3gpp2, address, displayAddr, 146af7bc32573007f2ea1185fc5cb4f3980e1ff1304fionaxu referenceNumber, sequenceNumber, messageCount, is3gpp2WapPdu, messageBody); 14727f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan } 14827f471647b2da3ff50620a766c048ebef8d45ae1Amit Mahajan 149871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajan /** 150871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajan * Create a tracker from a row of raw table 151871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajan */ 152871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajan public InboundSmsTracker makeInboundSmsTracker(Cursor cursor, boolean isCurrentFormat3gpp2) { 153871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajan return new InboundSmsTracker(cursor, isCurrentFormat3gpp2); 154871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajan } 155871a2ec0bc8e8198aeb1913e7bf6cb22a7ff3604Amit Mahajan 156ecac744a4e585e3c7af95ffa06fa3e711131200cAmit Mahajan public ImsPhoneCallTracker makeImsPhoneCallTracker(ImsPhone imsPhone) { 157ecac744a4e585e3c7af95ffa06fa3e711131200cAmit Mahajan return new ImsPhoneCallTracker(imsPhone); 158ecac744a4e585e3c7af95ffa06fa3e711131200cAmit Mahajan } 159ecac744a4e585e3c7af95ffa06fa3e711131200cAmit Mahajan 16091c714c06cc426b4f1af05a758c4d560b16f6d24Tyler Gunn public ImsExternalCallTracker makeImsExternalCallTracker(ImsPhone imsPhone) { 16193da8529345711fd1a5617f3c8b15c0921eececbTyler Gunn 16291c714c06cc426b4f1af05a758c4d560b16f6d24Tyler Gunn return new ImsExternalCallTracker(imsPhone); 163fec523bdc5d2b6dd90212c8076bf34bcc2ab08b2Tyler Gunn } 164fec523bdc5d2b6dd90212c8076bf34bcc2ab08b2Tyler Gunn 165b4a28109bedc71afa5465247a86473a86d4b31faChad Brubaker /** 166b4a28109bedc71afa5465247a86473a86d4b31faChad Brubaker * Create an AppSmsManager for per-app SMS message. 167b4a28109bedc71afa5465247a86473a86d4b31faChad Brubaker */ 168b4a28109bedc71afa5465247a86473a86d4b31faChad Brubaker public AppSmsManager makeAppSmsManager(Context context) { 169b4a28109bedc71afa5465247a86473a86d4b31faChad Brubaker return new AppSmsManager(context); 170b4a28109bedc71afa5465247a86473a86d4b31faChad Brubaker } 171b4a28109bedc71afa5465247a86473a86d4b31faChad Brubaker 172baecdb610b30a5d4b35345f8fc63fcbc2133c149Jack Yu public DeviceStateMonitor makeDeviceStateMonitor(Phone phone) { 173baecdb610b30a5d4b35345f8fc63fcbc2133c149Jack Yu return new DeviceStateMonitor(phone); 174baecdb610b30a5d4b35345f8fc63fcbc2133c149Jack Yu } 175baecdb610b30a5d4b35345f8fc63fcbc2133c149Jack Yu 1760a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan public CdmaSubscriptionSourceManager 1770a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan getCdmaSubscriptionSourceManagerInstance(Context context, CommandsInterface ci, Handler h, 1780a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan int what, Object obj) { 1790a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan return CdmaSubscriptionSourceManager.getInstance(context, ci, h, what, obj); 1800a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan } 181ec334adf4017ca172f44612d01456e671f922344Amit Mahajan 182ec334adf4017ca172f44612d01456e671f922344Amit Mahajan public IDeviceIdleController getIDeviceIdleController() { 183ec334adf4017ca172f44612d01456e671f922344Amit Mahajan return IDeviceIdleController.Stub.asInterface( 184ec334adf4017ca172f44612d01456e671f922344Amit Mahajan ServiceManager.getService(Context.DEVICE_IDLE_CONTROLLER)); 185ec334adf4017ca172f44612d01456e671f922344Amit Mahajan } 1860a567c9ed954f295df83c753239646c6f6a04128Amit Mahajan} 187