1b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu/*
2b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * Copyright (C) 2017 The Android Open Source Project
3b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu *
4b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * Licensed under the Apache License, Version 2.0 (the "License");
5b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * you may not use this file except in compliance with the License.
6b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * You may obtain a copy of the License at
7b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu *
8b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu *      http://www.apache.org/licenses/LICENSE-2.0
9b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu *
10b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * Unless required by applicable law or agreed to in writing, software
11b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * distributed under the License is distributed on an "AS IS" BASIS,
12b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * See the License for the specific language governing permissions and
14b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * limitations under the License.
15b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu */
16b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
17b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxupackage com.android.internal.telephony;
18b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
19cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static com.android.internal.telephony.TelephonyTestUtils.waitForMs;
20cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.junit.Assert.assertEquals;
21cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.junit.Assert.assertNull;
22cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.mockito.Matchers.eq;
23cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.mockito.Mockito.doReturn;
24cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian
25b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.database.Cursor;
26b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.database.MatrixCursor;
27b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.net.Uri;
28b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.os.HandlerThread;
29f24387f54a080dfc6e72c0511b2b3db757585edffionaxuimport android.provider.Telephony.CarrierId;
30b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.provider.Telephony.Carriers;
31b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.test.mock.MockContentProvider;
32b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.test.mock.MockContentResolver;
33b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.test.suitebuilder.annotation.SmallTest;
34cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian
35b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport org.junit.After;
36b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport org.junit.Before;
37b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport org.junit.Test;
38b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
39cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport java.util.Arrays;
40b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
41b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxupublic class CarrierIdentifierTest extends TelephonyTest {
42b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String MCCMNC = "311480";
43b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String NAME = "VZW";
44b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int CID_VZW = 1;
45b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
46b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String SPN_FI = "PROJECT FI";
47b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String NAME_FI = "FI";
48b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int CID_FI = 2;
49b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
50b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String NAME_DOCOMO = "DOCOMO";
51b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String APN_DOCOMO = "mopera.net";
52b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int CID_DOCOMO = 3;
53b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
54b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String NAME_TMO = "TMO";
55b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final String GID1 = "ae";
56b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int CID_TMO = 4;
57b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
58b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int CID_UNKNOWN = -1;
59b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
60b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    // events to trigger carrier identification
61b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int SIM_LOAD_EVENT       = 1;
62b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int SIM_ABSENT_EVENT     = 2;
63b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int SPN_OVERRIDE_EVENT   = 3;
64b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private static final int PREFER_APN_SET_EVENT = 5;
65b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
66b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private CarrierIdentifier mCarrierIdentifier;
67b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private CarrierIdentifierHandler mCarrierIdentifierHandler;
68b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
69b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private class CarrierIdentifierHandler extends HandlerThread {
70b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        private CarrierIdentifierHandler(String name) {
71b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            super(name);
72b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        }
73b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
74b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        @Override
75b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        public void onLooperPrepared() {
76b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            mCarrierIdentifier = new CarrierIdentifier(mPhone);
77b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            setReady(true);
78b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        }
79b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
80b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
81b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @Before
82b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    public void setUp() throws Exception {
83b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        logd("CarrierIdentifierTest +Setup!");
84b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        super.setUp(getClass().getSimpleName());
85b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        ((MockContentResolver) mContext.getContentResolver()).addProvider(
86f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                CarrierId.AUTHORITY, new CarrierIdContentProvider());
87b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // start handler thread
88b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifierHandler = new CarrierIdentifierHandler(getClass().getSimpleName());
89b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifierHandler.start();
90b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitUntilReady();
91b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        logd("CarrierIdentifierTest -Setup!");
92b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
93b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
94b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @After
95b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    public void tearDown() throws Exception {
96b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        logd("CarrierIdentifier -tearDown");
97b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.removeCallbacksAndMessages(null);
98b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier = null;
99b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifierHandler.quit();
100b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        super.tearDown();
101b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
102b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
103b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @Test
104b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @SmallTest
105b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    public void testCarrierMatch() {
106b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        int phoneId = mPhone.getPhoneId();
107b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId));
108b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // trigger sim loading event
109b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT);
110b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
111b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId());
112b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME, mCarrierIdentifier.getCarrierName());
113b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
114b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn(SPN_FI).when(mTelephonyManager).getSimOperatorNameForPhone(eq(phoneId));
115b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT);
116b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
117b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_FI, mCarrierIdentifier.getCarrierId());
118b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME_FI, mCarrierIdentifier.getCarrierName());
119b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
120b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn(GID1).when(mPhone).getGroupIdLevel1();
121b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT);
122b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
123b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_TMO, mCarrierIdentifier.getCarrierId());
124b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME_TMO, mCarrierIdentifier.getCarrierName());
125b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
126b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
127b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @Test
128b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @SmallTest
129b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    public void testCarrierMatchSpnOverride() {
130b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        int phoneId = mPhone.getPhoneId();
131b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId));
132b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // trigger sim loading event
133b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT);
134b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
135b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId());
136b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME, mCarrierIdentifier.getCarrierName());
137b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // spn override
138b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn(SPN_FI).when(mTelephonyManager).getSimOperatorNameForPhone(eq(phoneId));
139b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SPN_OVERRIDE_EVENT);
140b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
141b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_FI, mCarrierIdentifier.getCarrierId());
142b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME_FI, mCarrierIdentifier.getCarrierName());
143b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
144b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
145b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @Test
146b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @SmallTest
147b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    public void testCarrierMatchSimAbsent() {
148b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        int phoneId = mPhone.getPhoneId();
149b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId));
150b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // trigger sim loading event
151b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT);
152b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
153b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId());
154b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME, mCarrierIdentifier.getCarrierName());
155b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // trigger sim absent event
156b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_ABSENT_EVENT);
157b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
158b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_UNKNOWN, mCarrierIdentifier.getCarrierId());
159b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertNull(mCarrierIdentifier.getCarrierName());
160b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
161b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
162b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @Test
163b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @SmallTest
164b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    public void testCarrierNoMatch() {
165b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // un-configured MCCMNC
166b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        int phoneId = mPhone.getPhoneId();
167b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn("12345").when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId));
168b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // trigger sim loading event
169b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT);
170b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
171b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_UNKNOWN, mCarrierIdentifier.getCarrierId());
172b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertNull(mCarrierIdentifier.getCarrierName());
173b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
174b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
175b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @Test
176b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    @SmallTest
177b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    public void testCarrierMatchPreferApnChange() {
178b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        int phoneId = mPhone.getPhoneId();
179b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId));
180b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // trigger sim loading event
181b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT);
182b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
183b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId());
184b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME, mCarrierIdentifier.getCarrierName());
185b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        // mock apn
186b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        ((MockContentResolver) mContext.getContentResolver()).addProvider(
187b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                Carriers.CONTENT_URI.getAuthority(), new CarrierIdContentProvider());
188b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        mCarrierIdentifier.sendEmptyMessage(PREFER_APN_SET_EVENT);
189b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        waitForMs(200);
190b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(CID_DOCOMO, mCarrierIdentifier.getCarrierId());
191b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        assertEquals(NAME_DOCOMO, mCarrierIdentifier.getCarrierName());
192b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
193b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
194b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    private class CarrierIdContentProvider extends MockContentProvider {
195b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        @Override
196b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
197b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                String sortOrder) {
198b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            logd("CarrierIdContentProvider: query");
199b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            logd("   uri = " + uri);
200b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            logd("   projection = " + Arrays.toString(projection));
201b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            logd("   selection = " + selection);
202b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            logd("   selectionArgs = " + Arrays.toString(selectionArgs));
203b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            logd("   sortOrder = " + sortOrder);
204b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
205f24387f54a080dfc6e72c0511b2b3db757585edffionaxu            if (CarrierId.All.CONTENT_URI.getAuthority().equals(
206b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                    uri.getAuthority())) {
207b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                MatrixCursor mc = new MatrixCursor(
208f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                        new String[]{CarrierId._ID,
209f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.MCCMNC,
210f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.GID1,
211f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.GID2,
212f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.PLMN,
213f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.IMSI_PREFIX_XPATTERN,
214f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.ICCID_PREFIX,
215f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.SPN,
216f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.All.APN,
217f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.CARRIER_NAME,
218f24387f54a080dfc6e72c0511b2b3db757585edffionaxu                                CarrierId.CARRIER_ID});
219b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu
220b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                mc.addRow(new Object[] {
221b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        1,                      // id
222b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        MCCMNC,                 // mccmnc
223b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // gid1
224b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // gid2
225b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // plmn
226b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // imsi_prefix
227cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian                        null,                   // iccid_prefix
228b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // spn
229b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // apn
230b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        NAME,                   // carrier name
231b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        CID_VZW,                // cid
232b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                });
233b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                mc.addRow(new Object[] {
234b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        2,                      // id
235b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        MCCMNC,                 // mccmnc
236b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        GID1,                   // gid1
237b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // gid2
238b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // plmn
239b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // imsi_prefix
240cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian                        null,                   // iccid_prefix
241b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // spn
242b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // apn
243b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        NAME_TMO,               // carrier name
244b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        CID_TMO,                // cid
245b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                });
246b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                mc.addRow(new Object[] {
247b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        3,                      // id
248b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        MCCMNC,                 // mccmnc
249b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // gid1
250b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // gid2
251b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // plmn
252b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // imsi_prefix
253cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian                        null,                   // iccid_prefix
254b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        SPN_FI,                 // spn
255b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // apn
256b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        NAME_FI,                // carrier name
257b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        CID_FI,                 // cid
258b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                });
259b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                mc.addRow(new Object[] {
260b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        4,                      // id
261b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        MCCMNC,                 // mccmnc
262b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // gid1
263b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // gid2
264b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // plmn
265b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // imsi_prefix
266cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian                        null,                   // iccid_prefix
267b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        null,                   // spn
268b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        APN_DOCOMO,             // apn
269b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        NAME_DOCOMO,            // carrier name
270b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        CID_DOCOMO,             // cid
271b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                });
272b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                return mc;
273b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            } else if (Carriers.CONTENT_URI.getAuthority().equals(uri.getAuthority())) {
274b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                MatrixCursor mc = new MatrixCursor(new String[]{Carriers._ID, Carriers.APN});
275b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                mc.addRow(new Object[] {
276b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        1,                      // id
277b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                        APN_DOCOMO              // apn
278b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                });
279b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu                return mc;
280b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            }
281b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu            return null;
282b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu        }
283a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu        @Override
284a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu        public int update(android.net.Uri uri, android.content.ContentValues values,
285a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu                java.lang.String selection, java.lang.String[] selectionArgs) {
286a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu            return 0;
287a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu        }
288b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu    }
289b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu}
290