17640caaf912a7eefacc3e2108c5afd70f7b072a4noda/*
27640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Copyright (C) 2010 The Android Open Source Project
37640caaf912a7eefacc3e2108c5afd70f7b072a4noda *
47640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Licensed under the Apache License, Version 2.0 (the "License");
57640caaf912a7eefacc3e2108c5afd70f7b072a4noda * you may not use this file except in compliance with the License.
67640caaf912a7eefacc3e2108c5afd70f7b072a4noda * You may obtain a copy of the License at
77640caaf912a7eefacc3e2108c5afd70f7b072a4noda *
87640caaf912a7eefacc3e2108c5afd70f7b072a4noda *      http://www.apache.org/licenses/LICENSE-2.0
97640caaf912a7eefacc3e2108c5afd70f7b072a4noda *
107640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Unless required by applicable law or agreed to in writing, software
117640caaf912a7eefacc3e2108c5afd70f7b072a4noda * distributed under the License is distributed on an "AS IS" BASIS,
127640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137640caaf912a7eefacc3e2108c5afd70f7b072a4noda * See the License for the specific language governing permissions and
147640caaf912a7eefacc3e2108c5afd70f7b072a4noda * limitations under the License.
157640caaf912a7eefacc3e2108c5afd70f7b072a4noda */
167640caaf912a7eefacc3e2108c5afd70f7b072a4noda
177640caaf912a7eefacc3e2108c5afd70f7b072a4nodapackage com.android.smspush.unitTests;
187640caaf912a7eefacc3e2108c5afd70f7b072a4noda
197640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.app.Activity;
207640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.content.ComponentName;
217640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.content.Context;
227640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.content.Intent;
237640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.content.ServiceConnection;
247640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.os.IBinder;
257640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.os.RemoteException;
267640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.provider.Telephony.Sms.Intents;
277640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.test.ServiceTestCase;
287640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport android.util.Log;
297640caaf912a7eefacc3e2108c5afd70f7b072a4noda
307640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.internal.telephony.IccUtils;
317640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.internal.telephony.IWapPushManager;
327640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.internal.telephony.WapPushManagerParams;
337640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.internal.telephony.WspTypeDecoder;
347640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.internal.util.HexDump;
357640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.smspush.WapPushManager;
367640caaf912a7eefacc3e2108c5afd70f7b072a4noda
377640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport java.util.Random;
387640caaf912a7eefacc3e2108c5afd70f7b072a4noda
397640caaf912a7eefacc3e2108c5afd70f7b072a4noda/**
407640caaf912a7eefacc3e2108c5afd70f7b072a4noda * This is a simple framework for a test of a Service.  See {@link android.test.ServiceTestCase
417640caaf912a7eefacc3e2108c5afd70f7b072a4noda * ServiceTestCase} for more information on how to write and extend service tests.
427640caaf912a7eefacc3e2108c5afd70f7b072a4noda *
437640caaf912a7eefacc3e2108c5afd70f7b072a4noda * To run this test, you can type:
447640caaf912a7eefacc3e2108c5afd70f7b072a4noda * adb shell am instrument -w \
457640caaf912a7eefacc3e2108c5afd70f7b072a4noda * -e class com.android.smspush.unitTests.WapPushTest \
467640caaf912a7eefacc3e2108c5afd70f7b072a4noda * com.android.smspush.unitTests/android.test.InstrumentationTestRunner
477640caaf912a7eefacc3e2108c5afd70f7b072a4noda */
487640caaf912a7eefacc3e2108c5afd70f7b072a4nodapublic class WapPushTest extends ServiceTestCase<WapPushManager> {
497640caaf912a7eefacc3e2108c5afd70f7b072a4noda    private static final String LOG_TAG = "WAP PUSH";
507640caaf912a7eefacc3e2108c5afd70f7b072a4noda    private static final boolean LOCAL_LOGV = false;
517640caaf912a7eefacc3e2108c5afd70f7b072a4noda    private static final int TIME_WAIT = 100;
527640caaf912a7eefacc3e2108c5afd70f7b072a4noda
537640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected int mAppIdValue = 0x8002;
547640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected String mAppIdName = "x-wap-application:*";
557640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected int mContentTypeValue = 0x030a;
567640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected String mContentTypeName = "application/vnd.wap.sic";
577640caaf912a7eefacc3e2108c5afd70f7b072a4noda
587640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected String mPackageName;
597640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected String mClassName;
607640caaf912a7eefacc3e2108c5afd70f7b072a4noda
617640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected byte[] mGsmHeader = {
627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x00, // sc address
637640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x40, // TP-MTI
647640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x04, // sender address length?
657640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x81, (byte) 0x55, (byte) 0x45, // sender address?
667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x00, // data schema
677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x00, // proto ID
687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x01, (byte) 0x60, (byte) 0x12, (byte) 0x31,
697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x74, (byte) 0x34, (byte) 0x63 // time stamp
707640caaf912a7eefacc3e2108c5afd70f7b072a4noda    };
717640caaf912a7eefacc3e2108c5afd70f7b072a4noda
727640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected byte[] mUserDataHeader = {
737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x07, // UDH len
747640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x06, // header len
757640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x05, // port addressing type?
767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x00, // dummy
777640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x0B, (byte) 0x84, // dest port
787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x23, (byte) 0xF0 // src port
797640caaf912a7eefacc3e2108c5afd70f7b072a4noda    };
807640caaf912a7eefacc3e2108c5afd70f7b072a4noda
817640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected byte[] mWspHeader;
827640caaf912a7eefacc3e2108c5afd70f7b072a4noda
837640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected byte[] mMessageBody = {
847640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x00,
857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x01,
867640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x02,
877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x03,
887640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x04,
897640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x05,
907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x06,
917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x07,
927640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x08,
937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x09,
947640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x0a,
957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x0b,
967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x0c,
977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x0d,
987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x0e,
997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            (byte) 0x0f
1007640caaf912a7eefacc3e2108c5afd70f7b072a4noda    };
1017640caaf912a7eefacc3e2108c5afd70f7b072a4noda
1027640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected int mWspHeaderStart;
1037640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected int mWspHeaderLen;
1047640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected int mWspContentTypeStart;
1057640caaf912a7eefacc3e2108c5afd70f7b072a4noda
1067640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
1077640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * OMA application ID in binary form
1087640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * http://www.openmobilealliance.org/tech/omna/omna-push-app-id.aspx
1097640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
1107640caaf912a7eefacc3e2108c5afd70f7b072a4noda    final int[] OMA_APPLICATION_ID_VALUES = new int[] {
1117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x00,
1127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x01,
1137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x02,
1147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x03,
1157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x04,
1167640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x05,
1177640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x06,
1187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x07,
1197640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x08,
1207640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x09,
1217640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0A,
1227640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8000,
1237640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8001,
1247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8002,
1257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8003,
1267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8004,
1277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8005,
1287640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8006,
1297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8007,
1307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8008,
1317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8009,
1327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x800B,
1337640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x8010
1347640caaf912a7eefacc3e2108c5afd70f7b072a4noda    };
1357640caaf912a7eefacc3e2108c5afd70f7b072a4noda
1367640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
1377640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * OMA application ID in string form
1387640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * http://www.openmobilealliance.org/tech/omna/omna-push-app-id.aspx
1397640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
1407640caaf912a7eefacc3e2108c5afd70f7b072a4noda    final String[] OMA_APPLICATION_ID_NAMES = new String[] {
1417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:*",
1427640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:push.sia",
1437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:wml.ua",
1447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:wta.ua",
1457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:mms.ua",
1467640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:push.syncml",
1477640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:loc.ua",
1487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:syncml.dm",
1497640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:drm.ua",
1507640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:emn.ua",
1517640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-application:wv.ua",
1527640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-microsoft:localcontent.ua",
1537640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-microsoft:IMclient.ua",
1547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-docomo:imode.mail.ua",
1557640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-docomo:imode.mr.ua",
1567640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-docomo:imode.mf.ua",
1577640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-motorola:location.ua",
1587640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-motorola:now.ua",
1597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-motorola:otaprov.ua",
1607640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-motorola:browser.ua",
1617640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-motorola:splash.ua",
1627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-nai:mvsw.command",
1637640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap-openwave:iota.ua"
1647640caaf912a7eefacc3e2108c5afd70f7b072a4noda    };
1657640caaf912a7eefacc3e2108c5afd70f7b072a4noda
1667640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
1677640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * OMA content type in binary form
1687640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * http://www.openmobilealliance.org/tech/omna/omna-wsp-content-type.aspx
1697640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
1707640caaf912a7eefacc3e2108c5afd70f7b072a4noda    final int[] OMA_CONTENT_TYPE_VALUES = new int[] {
1717640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x00,
1727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x01,
1737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x02,
1747640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x03,
1757640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x04,
1767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x05,
1777640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x06,
1787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x07,
1797640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x08,
1807640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x09,
1817640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0A,
1827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0B,
1837640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0C,
1847640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0D,
1857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0E,
1867640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0F,
1877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x10,
1887640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x11,
1897640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x12,
1907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x13,
1917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x14,
1927640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x15,
1937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x16,
1947640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x17,
1957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x18,
1967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x19,
1977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x1A,
1987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x1B,
1997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x1C,
2007640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x1D,
2017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x1E,
2027640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x1F,
2037640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x20,
2047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x21,
2057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x22,
2067640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x23,
2077640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x24,
2087640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x25,
2097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x26,
2107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x27,
2117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x28,
2127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x29,
2137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x2A,
2147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x2B,
2157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x2C,
2167640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x2D,
2177640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x2E,
2187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x2F,
2197640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x30,
2207640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x31,
2217640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x32,
2227640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x33,
2237640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x34,
2247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x35,
2257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x36,
2267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x37,
2277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x38,
2287640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x39,
2297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x3A,
2307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x3B,
2317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x3C,
2327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x3D,
2337640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x3E,
2347640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x3F,
2357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x40,
2367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x41,
2377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x42,
2387640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x43,
2397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x44,
2407640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x45,
2417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x46,
2427640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x47,
2437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x48,
2447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x49,
2457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x4A,
2467640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x4B,
2477640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x4C,
2487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x4D,
2497640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x4E,
2507640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x4F,
2517640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x50,
2527640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x51,
2537640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x52,
2547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x53,
2557640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x54,
2567640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            0x55,
2577640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            0x56,
2587640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            0x57,
2597640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            0x58,
2607640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0201,
2617640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0202,
2627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0203,
2637640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0204,
2647640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0205,
2657640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0206,
2667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0207,
2677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0208,
2687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0209,
2697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x020A,
2707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x020B,
2717640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x020C,
2727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0300,
2737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0301,
2747640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0302,
2757640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0303,
2767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0304,
2777640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0305,
2787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0306,
2797640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0307,
2807640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0308,
2817640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0309,
2827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x030A,
2837640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x030B,
2847640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x030C,
2857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x030D,
2867640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x030E,
2877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x030F,
2887640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0310,
2897640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0311,
2907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0312,
2917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0313,
2927640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0314,
2937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0315,
2947640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0316,
2957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0317,
2967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0318,
2977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x0319,
2987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x031A,
2997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            0x031B
3007640caaf912a7eefacc3e2108c5afd70f7b072a4noda            /*0x031C,
3017640caaf912a7eefacc3e2108c5afd70f7b072a4noda              0x031D*/
3027640caaf912a7eefacc3e2108c5afd70f7b072a4noda    };
3037640caaf912a7eefacc3e2108c5afd70f7b072a4noda
3047640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
3057640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * OMA content type in string form
3067640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * http://www.openmobilealliance.org/tech/omna/omna-wsp-content-type.aspx
3077640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
3087640caaf912a7eefacc3e2108c5afd70f7b072a4noda    final String[] OMA_CONTENT_TYPE_NAMES = new String[] {
3097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "*/*",
3107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/*",
3117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/html",
3127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/plain",
3137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/x-hdml",
3147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/x-ttml",
3157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/x-vCalendar",
3167640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/x-vCard",
3177640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.wml",
3187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.wmlscript",
3197640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.wta-event",
3207640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "multipart/*",
3217640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "multipart/mixed",
3227640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "multipart/form-data",
3237640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "multipart/byterantes",
3247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "multipart/alternative",
3257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/*",
3267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/java-vm",
3277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/x-www-form-urlencoded",
3287640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/x-hdmlc",
3297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.wmlc",
3307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.wmlscriptc",
3317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.wta-eventc",
3327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.uaprof",
3337640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.wtls-ca-certificate",
3347640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.wtls-user-certificate",
3357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/x-x509-ca-cert",
3367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/x-x509-user-cert",
3377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "image/*",
3387640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "image/gif",
3397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "image/jpeg",
3407640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "image/tiff",
3417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "image/png",
3427640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "image/vnd.wap.wbmp",
3437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.multipart.*",
3447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.multipart.mixed",
3457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.multipart.form-data",
3467640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.multipart.byteranges",
3477640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.multipart.alternative",
3487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/xml",
3497640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/xml",
3507640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.wbxml",
3517640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/x-x968-cross-cert",
3527640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/x-x968-ca-cert",
3537640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/x-x968-user-cert",
3547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.si",
3557640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.sic",
3567640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.sl",
3577640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.slc",
3587640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.co",
3597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.coc",
3607640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.multipart.related",
3617640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.sia",
3627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.connectivity-xml",
3637640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.connectivity-wbxml",
3647640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/pkcs7-mime",
3657640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.hashed-certificate",
3667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.signed-certificate",
3677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.cert-response",
3687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/xhtml+xml",
3697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/wml+xml",
3707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/css",
3717640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.mms-message",
3727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.rollover-certificate",
3737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.locc+wbxml",
3747640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.loc+xml",
3757640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.syncml.dm+wbxml",
3767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.syncml.dm+xml",
3777640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.syncml.notification",
3787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.xhtml+xml",
3797640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wv.csp.cir",
3807640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.dd+xml",
3817640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.drm.message",
3827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.drm.content",
3837640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.drm.rights+xml",
3847640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.drm.rights+wbxml",
3857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wv.csp+xml",
3867640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wv.csp+wbxml",
3877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.syncml.ds.notification",
3887640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "audio/*",
3897640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "video/*",
3907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.dd2+xml",
3917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/mikey",
3927640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.dcd",
3937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.dcdc",
3947640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            "text/x-vMessage",
3957640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            "application/vnd.omads-email+wbxml",
3967640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            "text/x-vBookmark",
3977640caaf912a7eefacc3e2108c5afd70f7b072a4noda//            "application/vnd.syncml.dm.notification",
3987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.cacheop-wbxml",
3997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.signal",
4007640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.alert-wbxml",
4017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.list-wbxml",
4027640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.listcmd-wbxml",
4037640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.channel-wbxml",
4047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.provisioning-status-uri",
4057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "x-wap.multipart/vnd.uplanet.header-set",
4067640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.uplanet.bearer-choice-wbxml",
4077640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.phonecom.mmc-wbxml",
4087640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.nokia.syncset+wbxml",
4097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "image/x-up-wpng",
4107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/iota.mmc-wbxml",
4117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/iota.mmc-xml",
4127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.syncml+xml",
4137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.syncml+wbxml",
4147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/vnd.wap.emn+xml",
4157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/calendar",
4167640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.omads-email+xml",
4177640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.omads-file+xml",
4187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.omads-folder+xml",
4197640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "text/directory;profile=vCard",
4207640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wap.emn+wbxml",
4217640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.nokia.ipdc-purchase-response",
4227640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.motorola.screen3+xml",
4237640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.motorola.screen3+gzip",
4247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.cmcc.setting+wbxml",
4257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.cmcc.bombing+wbxml",
4267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.docomo.pf",
4277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.docomo.ub",
4287640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.omaloc-supl-init",
4297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.group-usage-list+xml",
4307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/oma-directory+xml",
4317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.docomo.pf2",
4327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.drm.roap-trigger+wbxml",
4337640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.sbm.mid2",
4347640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.wmf.bootstrap",
4357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnc.cmcc.dcd+xml",
4367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.sbm.cid",
4377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            "application/vnd.oma.bcast.provisioningtrigger",
4387640caaf912a7eefacc3e2108c5afd70f7b072a4noda            /*"application/vnd.docomo.dm",
4397640caaf912a7eefacc3e2108c5afd70f7b072a4noda              "application/vnd.oma.scidm.messages+xml"*/
4407640caaf912a7eefacc3e2108c5afd70f7b072a4noda    };
4417640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4427640caaf912a7eefacc3e2108c5afd70f7b072a4noda    private IDataVerify mIVerify = null;
4437640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4447640caaf912a7eefacc3e2108c5afd70f7b072a4noda    ServiceConnection mConn = new ServiceConnection() {
4457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            public void onServiceConnected(ComponentName name, IBinder service) {
4467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Log.v(LOG_TAG, "data verify interface connected.");
4477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mIVerify = IDataVerify.Stub.asInterface(service);
4487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
4497640caaf912a7eefacc3e2108c5afd70f7b072a4noda            public void onServiceDisconnected(ComponentName name) {
4507640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
4517640caaf912a7eefacc3e2108c5afd70f7b072a4noda        };
4527640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4537640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
4547640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Main WapPushManager test module constructor
4557640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
4567640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public WapPushTest() {
4577640caaf912a7eefacc3e2108c5afd70f7b072a4noda        super(WapPushManager.class);
4587640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = this.getClass().getName();
4597640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mPackageName = this.getClass().getPackage().getName();
4607640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
4617640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4627640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
4637640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Initialize the verifier
4647640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
4657640caaf912a7eefacc3e2108c5afd70f7b072a4noda    @Override
4667640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void setUp() {
4677640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
4687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            super.setUp();
4697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // get verifier
4707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            getContext().bindService(new Intent(IDataVerify.class.getName()),
4717640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mConn, Context.BIND_AUTO_CREATE);
4727640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (Exception e) {
4737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.w(LOG_TAG, "super exception");
4747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
4757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // Log.d(LOG_TAG, "test setup");
4767640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
4777640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4787640caaf912a7eefacc3e2108c5afd70f7b072a4noda    private IWapPushManager mWapPush = null;
4797640caaf912a7eefacc3e2108c5afd70f7b072a4noda    IWapPushManager getInterface() {
4807640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if (mWapPush != null) return mWapPush;
4817640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Intent startIntent = new Intent();
4827640caaf912a7eefacc3e2108c5afd70f7b072a4noda        startIntent.setClass(getContext(), WapPushManager.class);
4837640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IBinder service = bindService(startIntent);
4847640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4857640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mWapPush = IWapPushManager.Stub.asInterface(service);
4867640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return mWapPush;
4877640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
4887640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4897640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /*
4907640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * All methods need to start with 'test'.
4917640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Use various assert methods to pass/fail the test case.
4927640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
4937640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected void utAddPackage(boolean need_sig, boolean more_proc) {
4947640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IWapPushManager iwapman = getInterface();
4957640caaf912a7eefacc3e2108c5afd70f7b072a4noda
4967640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // insert new data
4977640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
4987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(iwapman.addPackage(
4997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
5007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
5017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mPackageName, mClassName,
5027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_SERVICE, need_sig, more_proc));
5037640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
5047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
5057640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
5067640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5077640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // verify the data
5087640caaf912a7eefacc3e2108c5afd70f7b072a4noda        WapPushManager wpman = getService();
5097640caaf912a7eefacc3e2108c5afd70f7b072a4noda        assertTrue(wpman.verifyData(Integer.toString(mAppIdValue),
5107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Integer.toString(mContentTypeValue),
5117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mPackageName, mClassName,
5127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                WapPushManagerParams.APP_TYPE_SERVICE, need_sig, more_proc));
5137640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
5147640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5157640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
5167640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Add package test
5177640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
5187640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testAddPackage1() {
5197640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
5207640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
5217640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5227640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utAddPackage(true, true);
5237640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue += 10;
5247640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utAddPackage(true, false);
5257640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue += 20;
5267640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utAddPackage(false, true);
5277640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue += 20;
5287640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utAddPackage(false, false);
5297640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5307640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
5317640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
5327640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // clean up data
5347640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
5357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
5367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
5377640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
5387640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue += 10;
5397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
5407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
5417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
5427640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
5437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
5447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
5457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
5467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
5477640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
5487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
5497640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
5507640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
5517640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
5527640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
5537640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5547640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
5557640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Add duprecated package test.
5567640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
5577640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testAddPackage2() {
5587640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
5597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
5607640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5617640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
5627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
5637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName, 0,
5647640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    false, false);
5657640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue + 10),
5667640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName, 0,
5677640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    false, false);
5687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
5697640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue + 10), mPackageName, mClassName, 0,
5707640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    false, false);
5717640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.addPackage(Integer.toString(mAppIdValue),
5737640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName, 0,
5747640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    false, false));
5757640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.addPackage(Integer.toString(mAppIdValue + 10),
5767640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName, 0,
5777640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    false, false));
5787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.addPackage(Integer.toString(mAppIdValue),
5797640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue + 10), mPackageName, mClassName, 0,
5807640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    false, false));
5817640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
5837640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
5847640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
5857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue + 10),
5867640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
5877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
5887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue + 10), mPackageName, mClassName);
5897640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
5907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
5917640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
5927640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
5937640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5947640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected void utUpdatePackage(boolean need_sig, boolean more_proc) {
5957640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IWapPushManager iwapman = getInterface();
5967640caaf912a7eefacc3e2108c5afd70f7b072a4noda
5977640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // insert new data
5987640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
5997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(iwapman.updatePackage(
6007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
6017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
6027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mPackageName, mClassName,
6037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_SERVICE, need_sig, more_proc));
6047640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
6057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
6067640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
6077640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6087640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // verify the data
6097640caaf912a7eefacc3e2108c5afd70f7b072a4noda        WapPushManager wpman = getService();
6107640caaf912a7eefacc3e2108c5afd70f7b072a4noda        assertTrue(wpman.verifyData(
6117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Integer.toString(mAppIdValue),
6127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Integer.toString(mContentTypeValue),
6137640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mPackageName, mClassName,
6147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                WapPushManagerParams.APP_TYPE_SERVICE, need_sig, more_proc));
6157640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
6167640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6177640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
6187640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Updating package test
6197640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
6207640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testUpdatePackage1() {
6217640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
6227640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
6237640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6247640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // set up data
6257640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
6267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
6277640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6287640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
6297640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
6307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
6317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue += 10;
6327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
6337640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
6347640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
6357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
6367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
6377640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
6387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
6397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
6407640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
6417640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
6427640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
6437640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
6447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
6457640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
6467640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6477640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
6487640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
6497640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utUpdatePackage(false, false);
6507640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue += 10;
6517640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utUpdatePackage(false, true);
6527640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue += 20;
6537640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utUpdatePackage(true, false);
6547640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue += 20;
6557640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utUpdatePackage(true, true);
6567640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6577640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
6587640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
6597640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6607640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // clean up data
6617640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
6627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
6637640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6647640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
6657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
6667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue += 10;
6677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
6687640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
6697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
6707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
6717640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
6727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
6737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
6747640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
6757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
6767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
6777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
6787640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
6797640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
6807640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
6817640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6827640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
6837640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Updating invalid package test
6847640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
6857640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testUpdatePackage2() {
6867640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
6877640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
6887640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6897640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
6907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
6917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
6927640caaf912a7eefacc3e2108c5afd70f7b072a4noda
6937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
6947640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
6957640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
6967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.updatePackage(
6977640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue + 10),
6987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
6997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mPackageName, mClassName, 0, false, false));
7007640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.updatePackage(
7017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
7027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue + 10),
7037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mPackageName, mClassName, 0, false, false));
7047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(iwapman.updatePackage(
7057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
7067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
7077640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mPackageName + "dummy_data", mClassName, 0, false, false));
7087640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(iwapman.updatePackage(
7097640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
7107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
7117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mPackageName, mClassName + "dummy_data", 0, false, false));
7127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
7137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
7147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
7157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
7167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName,
7177640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mClassName + "dummy_data");
7187640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
7197640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
7207640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
7217640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
7227640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7237640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected void utDeletePackage() {
7247640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IWapPushManager iwapman = getInterface();
7257640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7267640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
7277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(iwapman.deletePackage(
7287640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
7297640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
7307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mPackageName, mClassName));
7317640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
7327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
7337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
7347640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7357640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // verify the data
7367640caaf912a7eefacc3e2108c5afd70f7b072a4noda        WapPushManager wpman = getService();
7377640caaf912a7eefacc3e2108c5afd70f7b072a4noda        assertTrue(!wpman.isDataExist(
7387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Integer.toString(mAppIdValue),
7397640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Integer.toString(mContentTypeValue),
7407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mPackageName, mClassName));
7417640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
7427640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7437640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
7447640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Deleting package test
7457640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
7467640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDeletePackage1() {
7477640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
7487640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
7497640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7507640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // set up data
7517640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
7527640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
7537640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
7557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
7567640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
7577640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue += 10;
7587640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
7597640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
7607640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
7617640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
7627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
7637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
7647640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
7657640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue += 20;
7667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
7677640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
7687640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
7697640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
7707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
7717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
7727640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
7747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
7757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utDeletePackage();
7767640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue += 10;
7777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utDeletePackage();
7787640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue += 20;
7797640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utDeletePackage();
7807640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue += 20;
7817640caaf912a7eefacc3e2108c5afd70f7b072a4noda        utDeletePackage();
7827640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7837640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
7847640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
7857640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
7867640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7877640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
7887640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Deleting invalid package test
7897640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
7907640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDeletePackage2() {
7917640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
7927640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
7937640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7947640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
7957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
7967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
7977640caaf912a7eefacc3e2108c5afd70f7b072a4noda
7987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
7997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
8007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    0, false, false);
8017640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8027640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.deletePackage(Integer.toString(mAppIdValue + 10),
8037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName));
8047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.deletePackage(Integer.toString(mAppIdValue),
8057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue + 20), mPackageName, mClassName));
8067640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(iwapman.deletePackage(Integer.toString(mAppIdValue + 10),
8077640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue + 20), mPackageName, mClassName));
8087640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
8107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
8117640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8127640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
8137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
8147640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
8157640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
8167640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8177640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8187640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected int encodeUint32(int uint32Val, byte[] arr, int start) {
8197640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int bit = 1;
8207640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int topbit = 0;
8217640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int encodeLen;
8227640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int tmpVal;
8237640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8247640caaf912a7eefacc3e2108c5afd70f7b072a4noda        assertTrue(uint32Val >= 0);
8257640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < 31; i++) {
8267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            if ((bit & uint32Val) > 0) topbit = i;
8277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            bit = (bit << 1);
8287640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
8297640caaf912a7eefacc3e2108c5afd70f7b072a4noda        encodeLen = topbit/7 + 1;
8307640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if (arr == null) return encodeLen;
8317640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8327640caaf912a7eefacc3e2108c5afd70f7b072a4noda        //Log.d(LOG_TAG, "uint32Val = " + Integer.toHexString(uint32Val) + ", topbit = "
8337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        //      + topbit + ", encodeLen = " + encodeLen);
8347640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8357640caaf912a7eefacc3e2108c5afd70f7b072a4noda        tmpVal = uint32Val;
8367640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = encodeLen - 1; i >= 0; i--) {
8377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            long val = 0;
8387640caaf912a7eefacc3e2108c5afd70f7b072a4noda            if (i < encodeLen - 1) val = 0x80;
8397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            val |= tmpVal & 0x7f;
8407640caaf912a7eefacc3e2108c5afd70f7b072a4noda            arr[start + i] = (byte) (val & 0xFF);
8417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            tmpVal = (tmpVal >> 7);
8427640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
8437640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return encodeLen;
8447640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
8457640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8467640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected int encodeShortInt(int sintVal, byte[] arr, int start) {
8477640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int encodeLen = 0;
8487640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8497640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if (sintVal >= 0x80) return encodeLen;
8507640caaf912a7eefacc3e2108c5afd70f7b072a4noda        encodeLen = 1;
8517640caaf912a7eefacc3e2108c5afd70f7b072a4noda        arr[start] = (byte) (sintVal | 0x80);
8527640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return encodeLen;
8537640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
8547640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8557640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8567640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
8577640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Generate Random WSP header with integer application ID
8587640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
8597640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected void createRandomWspHeader(byte[] arr, Random rd, int headerStart,
8607640caaf912a7eefacc3e2108c5afd70f7b072a4noda            boolean noAppId) {
8617640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8627640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean appIdAdded = false;
8637640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8647640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Log.d(LOG_TAG, "headerStart = " + headerStart + ", appId = " + mAppIdValue
8657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                + "(" + Integer.toHexString(mAppIdValue) + ")");
8667640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Log.d(LOG_TAG, "random arr length:" + arr.length);
8677640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String typename[] = new String[] { "short int", "long int", "string", "uint32"};
8687640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8697640caaf912a7eefacc3e2108c5afd70f7b072a4noda        while (!appIdAdded) {
8707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int type;
8717640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int index = headerStart;
8727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int len = arr.length;
8737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int i;
8747640caaf912a7eefacc3e2108c5afd70f7b072a4noda            boolean addAppid = false;
8757640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int tmpVal = 0;
8767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int tmpVal2 = 0;
8777640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            while (true) {
8797640caaf912a7eefacc3e2108c5afd70f7b072a4noda                int add;
8807640caaf912a7eefacc3e2108c5afd70f7b072a4noda
8817640caaf912a7eefacc3e2108c5afd70f7b072a4noda                /*
8827640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * field name
8837640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 0: short int
8847640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 1: long int
8857640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 2: text
8867640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * (no uint for param value)
8877640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 */
8887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                type = rd.nextInt(3);
8897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
8907640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short integer
8917640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (index > 100 && !appIdAdded) addAppid = true;
8927640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1;
8937640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
8947640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
8957640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1 + rd.nextInt(29);
8967640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
8977640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // header string
8987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 2 + rd.nextInt(10);
8997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
9007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
9017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (index + add >= len) break;
9027640caaf912a7eefacc3e2108c5afd70f7b072a4noda
9037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // fill header name
9047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
9057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short integer
9067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (!addAppid) {
9077640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        do {
9087640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            arr[index] = (byte) (0x80 | rd.nextInt(128));
9097640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        } while (arr[index] == (byte) 0xaf);
9107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
9117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        Log.d(LOG_TAG, "appId added.");
9127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index] = (byte) 0xaf;
9137640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        // if noAppId case, appId fld must be decieved.
9147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        if (noAppId) arr[index]++;
9157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
9167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
9177640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
9187640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index] = (byte) (add - 1);
9197640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    tmpVal2 = 0;
9207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    for (i = 1; i < add; i++) {
9217640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal = rd.nextInt(255);
9227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal2 = (tmpVal2 << 8) | tmpVal;
9237640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index + i] = (byte) tmpVal;
9247640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
9257640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    // don't set application id
9267640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (tmpVal2 == 0x2f) arr[index + 1]++;
9277640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
9287640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // header string
9297640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    for (i = 0; i < add - 1; i++) {
9307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal = rd.nextInt(127);
9317640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        if (tmpVal < 32) tmpVal= (32 + tmpVal);
9327640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index + i] = (byte) tmpVal;
9337640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
9347640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index + i] = (byte) 0x0;
9357640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
9367640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
9377640caaf912a7eefacc3e2108c5afd70f7b072a4noda
9387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (LOCAL_LOGV) {
9397640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "field name index:" + index);
9407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add);
9417640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (type != 2) {
9427640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = index; i< index + add; i++) {
9437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(Integer.toHexString(0xff & arr[i]));
9447640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
9457640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
9467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
9477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(Integer.toHexString(0xff & arr[index]));
9487640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(' ');
9497640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        String str = new String(arr, index + 1, add - 2);
9507640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 0; i < str.length(); i++) {
9517640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(str.charAt(i));
9527640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
9537640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
9547640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
9557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    System.out.print('\n');
9567640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
9577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                index += add;
9587640caaf912a7eefacc3e2108c5afd70f7b072a4noda
9597640caaf912a7eefacc3e2108c5afd70f7b072a4noda
9607640caaf912a7eefacc3e2108c5afd70f7b072a4noda                /*
9617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * field value
9627640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 0: short int
9637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 1: long int
9647640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 2: text
9657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 3: uint
9667640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 */
9677640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (addAppid) {
9687640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    type = 1;
9697640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
9707640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    type = rd.nextInt(4);
9717640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
9727640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
9737640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short integer
9747640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1;
9757640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
9767640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
9777640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (addAppid) {
9787640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        int bit = 1;
9797640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        int topBit = 0;
9807640caaf912a7eefacc3e2108c5afd70f7b072a4noda
9817640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 0; i < 31; i++) {
9827640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            if ((mAppIdValue & bit) > 0) topBit = i;
9837640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            bit = (bit << 1);
9847640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
9857640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        add = 2 + topBit/8;
9867640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
9877640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        add = 1 + rd.nextInt(29);
9887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
9897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
9907640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 2: // header string
9917640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 2 + rd.nextInt(10);
9927640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
9937640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // uint32
9947640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 6;
9957640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
9967640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (index + add >= len) break;
9977640caaf912a7eefacc3e2108c5afd70f7b072a4noda
9987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // fill field value
9997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
10007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short int
10017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index] = (byte) (0x80 | rd.nextInt(128));
10027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
10037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
10047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (addAppid) {
10057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        addAppid = false;
10067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        appIdAdded = true;
10077640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10087640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index] = (byte) (add - 1);
10097640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal = mAppIdValue;
10107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = add; i > 1; i--) {
10117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            arr[index + i - 1] = (byte) (tmpVal & 0xff);
10127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            tmpVal = (tmpVal >> 8);
10137640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
10147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
10157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index] = (byte) (add - 1);
10167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 1; i < add; i++) {
10177640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            arr[index + i] = (byte) rd.nextInt(255);
10187640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
10197640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
10207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
10217640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 2:// header string
10227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    for (i = 0; i < add - 1; i++) {
10237640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal = rd.nextInt(127);
10247640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        if (tmpVal < 32) tmpVal= (32 + tmpVal);
10257640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index + i] = (byte) tmpVal;
10267640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
10277640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index + i] = (byte) 0x0;
10287640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
10297640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // header uvarint
10307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index] = (byte) 31;
10317640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    tmpVal = rd.nextInt(0x0FFFFFFF);
10327640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1 + encodeUint32(tmpVal, null, index + 1);
10337640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    encodeUint32(tmpVal, arr, index + 1);
10347640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
10357640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10367640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
10377640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (LOCAL_LOGV) {
10397640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "field value index:" + index);
10407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add);
10417640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (type != 2) {
10427640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = index; i< index + add; i++) {
10437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(Integer.toHexString(0xff & arr[i]));
10447640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
10457640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
10467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
10477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(Integer.toHexString(0xff & arr[index]));
10487640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(' ');
10497640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        String str = new String(arr, index + 1, add - 2);
10507640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 0; i < str.length(); i++) {
10517640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(str.charAt(i));
10527640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
10537640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
10547640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
10557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    System.out.print('\n');
10567640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
10577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                index += add;
10587640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
10597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            if (noAppId) break;
10607640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
10617640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10627640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Log.d(LOG_TAG, HexDump.dumpHexString(arr));
10637640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
10647640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10657640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
10667640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Generate Random WSP header with string application ID
10677640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
10687640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected void createRandomWspHeaderStrAppId(byte[] arr, Random rd, int headerStart,
10697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            boolean randomStr) {
10707640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean appIdAdded = false;
10727640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Log.d(LOG_TAG, "random arr length:" + arr.length);
10747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String typename[] = new String[] { "short int", "long int", "string", "uint32"};
10757640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10767640caaf912a7eefacc3e2108c5afd70f7b072a4noda        while (!appIdAdded) {
10777640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int type;
10787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int index = headerStart;
10797640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int len = arr.length;
10807640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int i;
10817640caaf912a7eefacc3e2108c5afd70f7b072a4noda            boolean addAppid = false;
10827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int tmpVal = 0;
10837640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int tmpVal2 = 0;
10847640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            while (true) {
10867640caaf912a7eefacc3e2108c5afd70f7b072a4noda                int add;
10877640caaf912a7eefacc3e2108c5afd70f7b072a4noda
10887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                /*
10897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * field name
10907640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 0: short int
10917640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 1: long int
10927640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 2: text
10937640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * (no uint for param value)
10947640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 */
10957640caaf912a7eefacc3e2108c5afd70f7b072a4noda                type = rd.nextInt(3);
10967640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
10977640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short integer
10987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (index > 100 && !appIdAdded) addAppid = true;
10997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1;
11007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
11027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1 + rd.nextInt(29);
11037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // header string
11057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 2 + rd.nextInt(10);
11067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11077640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
11087640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (index + add >= len) break;
11097640caaf912a7eefacc3e2108c5afd70f7b072a4noda
11107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // fill header name
11117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
11127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short integer
11137640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (!addAppid) {
11147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        do {
11157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            arr[index] = (byte) (0x80 | rd.nextInt(128));
11167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        } while (arr[index] == (byte) 0xaf);
11177640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
11187640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        Log.d(LOG_TAG, "appId added.");
11197640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index] = (byte) 0xaf;
11207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
11217640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
11237640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index] = (byte) (add - 1);
11247640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    tmpVal2 = 0;
11257640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    for (i = 1; i < add; i++) {
11267640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal = rd.nextInt(255);
11277640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal2 = (tmpVal2 << 8) | tmpVal;
11287640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index + i] = (byte) tmpVal;
11297640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
11307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    // don't set application id
11317640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (tmpVal2 == 0x2f) arr[index + 1]++;
11327640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11337640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // header string
11347640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    for (i = 0; i < add - 1; i++) {
11357640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        tmpVal = rd.nextInt(127);
11367640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        if (tmpVal < 32) tmpVal= (32 + tmpVal);
11377640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index + i] = (byte) tmpVal;
11387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
11397640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index + i] = (byte) 0x0;
11407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11417640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
11427640caaf912a7eefacc3e2108c5afd70f7b072a4noda
11437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (LOCAL_LOGV) {
11447640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "field name index:" + index);
11457640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add);
11467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (type != 2) {
11477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = index; i < index + add; i++) {
11487640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(Integer.toHexString(0xff & arr[i]));
11497640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
11507640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
11517640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
11527640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(Integer.toHexString(0xff & arr[index]));
11537640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(' ');
11547640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        String str = new String(arr, index + 1, add - 2);
11557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 0; i < str.length(); i++) {
11567640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(str.charAt(i));
11577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
11587640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
11597640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
11607640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    System.out.print('\n');
11617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
11627640caaf912a7eefacc3e2108c5afd70f7b072a4noda                index += add;
11637640caaf912a7eefacc3e2108c5afd70f7b072a4noda
11647640caaf912a7eefacc3e2108c5afd70f7b072a4noda
11657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                /*
11667640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * field value
11677640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 0: short int
11687640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 1: long int
11697640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 2: text
11707640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 * 3: uint
11717640caaf912a7eefacc3e2108c5afd70f7b072a4noda                 */
11727640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (addAppid) {
11737640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    type = 2;
11747640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
11757640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    type = rd.nextInt(4);
11767640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
11777640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
11787640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short integer
11797640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1;
11807640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11817640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
11827640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1 + rd.nextInt(29);
11837640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
11847640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 2: // header string
11857640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (addAppid) {
11867640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        if (randomStr) {
11877640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            add = 1 + rd.nextInt(10);
11887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            byte[] randStr= new byte[add];
11897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            for (i = 0; i < add; i++) {
11907640caaf912a7eefacc3e2108c5afd70f7b072a4noda                                tmpVal = rd.nextInt(127);
11917640caaf912a7eefacc3e2108c5afd70f7b072a4noda                                if (tmpVal < 32) tmpVal= (32 + tmpVal);
11927640caaf912a7eefacc3e2108c5afd70f7b072a4noda                                randStr[i] = (byte) tmpVal;
11937640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            }
11947640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            mAppIdName = new String(randStr);
11957640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
11967640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        add = mAppIdName.length() + 1;
11977640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
11987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        add = 2 + rd.nextInt(10);
11997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
12007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
12017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // uint32
12027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 6;
12037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
12047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (index + add >= len) break;
12057640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // fill field value
12077640caaf912a7eefacc3e2108c5afd70f7b072a4noda                switch (type) {
12087640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 0: // header short int
12097640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index] = (byte) (0x80 | rd.nextInt(128));
12107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
12117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 1: // header long int
12127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index] = (byte) (add - 1);
12137640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    for (i = 1; i < add; i++)
12147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        arr[index + i] = (byte) rd.nextInt(255);
12157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
12167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                case 2:// header string
12177640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (addAppid) {
12187640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        addAppid = false;
12197640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        appIdAdded = true;
12207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 0; i < add - 1; i++) {
12217640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            arr[index + i] = (byte) (mAppIdName.charAt(i));
12227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
12237640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        Log.d(LOG_TAG, "mAppIdName added [" + mAppIdName + "]");
12247640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
12257640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 0; i < add - 1; i++) {
12267640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            tmpVal = rd.nextInt(127);
12277640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            if (tmpVal < 32) tmpVal= (32 + tmpVal);
12287640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            arr[index + i] = (byte) tmpVal;
12297640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
12307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
12317640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index + i] = (byte) 0x0;
12327640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
12337640caaf912a7eefacc3e2108c5afd70f7b072a4noda                default: // header uvarint
12347640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    arr[index] = (byte) 31;
12357640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    tmpVal = rd.nextInt(0x0FFFFFFF);
12367640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    add = 1 + encodeUint32(tmpVal, null, index + 1);
12377640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    encodeUint32(tmpVal, arr, index + 1);
12387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    break;
12397640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
12417640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12427640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (LOCAL_LOGV) {
12437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "field value index:" + index);
12447640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add);
12457640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if (type != 2) {
12467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = index; i < index + add; i++) {
12477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(Integer.toHexString(0xff & arr[i]));
12487640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
12497640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
12507640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    } else {
12517640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(Integer.toHexString(0xff & arr[index]));
12527640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        System.out.print(' ');
12537640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        String str = new String(arr, index + 1, add - 2);
12547640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        for (i = 0; i < str.length(); i++) {
12557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(str.charAt(i));
12567640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            System.out.print(' ');
12577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        }
12587640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
12597640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    System.out.print('\n');
12607640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
12617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                index += add;
12627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
12637640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
12647640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12657640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Log.d(LOG_TAG, "headerStart = " + headerStart + ", mAppIdName = " + mAppIdName);
12667640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Log.d(LOG_TAG, HexDump.dumpHexString(arr));
12677640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
12687640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12697640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected byte[] createPDU(int testNum) {
12707640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] array = null;
12717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // byte[] wsp = null;
12727640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        switch (testNum) {
12747640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // sample pdu
12757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 1:
12767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] array1 = {
12777640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x00, // TID
12787640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x06, // Type = wap push
12797640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x00, // Length to be set later.
12807640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12817640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    // Content-Type
12827640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x03, (byte) 0x02,
12837640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) ((mContentTypeValue >> 8) & 0xff),
12847640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) (mContentTypeValue & 0xff),
12857640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12867640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    // Application-id
12877640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xaf, (byte) 0x02,
12887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) ((mAppIdValue >> 8) & 0xff),
12897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) (mAppIdValue& 0xff)
12907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            };
12917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array1[2] = (byte) (array1.length - 3);
12927640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array1;
12937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + 7;
12947640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array1.length;
12957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
12967640caaf912a7eefacc3e2108c5afd70f7b072a4noda
12977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // invalid wsp header
12987640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 2:
12997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] array2 = {
13007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x00, // invalid data
13017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            };
13027640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array2;
13037640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length;
13047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array2.length;
13057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
13067640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13077640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // random wsp header
13087640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 3:
13097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Random rd = new Random();
13107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int arrSize = 150 + rd.nextInt(100);
13117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] array3 = new byte[arrSize];
13127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int hdrEncodeLen;
13137640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[0] = (byte) 0x0;
13157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[1] = (byte) 0x6;
13167640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length, null, 2);
13177640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2);
13187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 2] = (byte) 0x3;
13197640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 3] = (byte) 0x2;
13207640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff);
13217640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff);
13227640caaf912a7eefacc3e2108c5afd70f7b072a4noda            createRandomWspHeader(array3, rd, hdrEncodeLen + 6, false);
13237640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6;
13247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array3.length;
13257640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue
13277640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + "(" + Integer.toHexString(mContentTypeValue) + ")");
13287640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array3;
13307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
13317640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // random wsp header w/o appid
13337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 4:
13347640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd = new Random();
13357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            arrSize = 150 + rd.nextInt(100);
13367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3 = new byte[arrSize];
13377640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13387640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[0] = (byte) 0x0;
13397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[1] = (byte) 0x6;
13407640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length, null, 2);
13417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2);
13427640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 2] = (byte) 0x3;
13437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 3] = (byte) 0x2;
13447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff);
13457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff);
13467640caaf912a7eefacc3e2108c5afd70f7b072a4noda            createRandomWspHeader(array3, rd, hdrEncodeLen + 6, true);
13477640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6;
13487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array3.length;
13497640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13507640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue
13517640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + "(" + Integer.toHexString(mContentTypeValue) + ")");
13527640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13537640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array3;
13547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
13557640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13567640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // random wsp header w/ random appid string
13577640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 5:
13587640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd = new Random();
13597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            arrSize = 150 + rd.nextInt(100);
13607640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3 = new byte[arrSize];
13617640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[0] = (byte) 0x0;
13637640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[1] = (byte) 0x6;
13647640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length, null, 2);
13657640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2);
13667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 2] = (byte) 0x3;
13677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 3] = (byte) 0x2;
13687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff);
13697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff);
13707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            createRandomWspHeaderStrAppId(array3, rd, hdrEncodeLen + 6, true);
13717640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6;
13727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array3.length;
13737640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13747640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue
13757640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + "(" + Integer.toHexString(mContentTypeValue) + ")");
13767640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13777640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array3;
13787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
13797640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13807640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // random wsp header w/ OMA appid string
13817640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 6:
13827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd = new Random();
13837640caaf912a7eefacc3e2108c5afd70f7b072a4noda            arrSize = 150 + rd.nextInt(100);
13847640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3 = new byte[arrSize];
13857640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13867640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[0] = (byte) 0x0;
13877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[1] = (byte) 0x6;
13887640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length, null, 2);
13897640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2);
13907640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 2] = (byte) 0x3;
13917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 3] = (byte) 0x2;
13927640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff);
13937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff);
13947640caaf912a7eefacc3e2108c5afd70f7b072a4noda            createRandomWspHeaderStrAppId(array3, rd, hdrEncodeLen + 6, false);
13957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6;
13967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array3.length;
13977640caaf912a7eefacc3e2108c5afd70f7b072a4noda
13987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue
13997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + "(" + Integer.toHexString(mContentTypeValue) + ")");
14007640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array3;
14027640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
14037640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // random wsp header w/ OMA content type
14057640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 7:
14067640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd = new Random();
14077640caaf912a7eefacc3e2108c5afd70f7b072a4noda            arrSize = 150 + rd.nextInt(100);
14087640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3 = new byte[arrSize];
14097640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[0] = (byte) 0x0;
14117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[1] = (byte) 0x6;
14127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length, null, 2);
14137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2);
14147640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // encode content type
14167640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int contentLen = mContentTypeName.length();
14177640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int next = 2 + hdrEncodeLen;
14187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspContentTypeStart = mGsmHeader.length + mUserDataHeader.length + next;
14197640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // next += encodeUint32(contentLen, array3, next);
14207640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int i;
14217640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mContentTypeName = " + mContentTypeName
14227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + ", contentLen = " + contentLen);
14237640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            for (i = 0; i < contentLen; i++) {
14257640caaf912a7eefacc3e2108c5afd70f7b072a4noda                array3[next + i] = (byte) mContentTypeName.charAt(i);
14267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
14277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[next + i] = (byte) 0x0;
14287640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            createRandomWspHeader(array3, rd, next + contentLen + 1, false);
14307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length
14317640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + next + contentLen + 1;
14327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array3.length;
14337640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14347640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array3;
14357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
14367640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // random wsp header w/ OMA content type, OMA app ID
14387640caaf912a7eefacc3e2108c5afd70f7b072a4noda        case 8:
14397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd = new Random();
14407640caaf912a7eefacc3e2108c5afd70f7b072a4noda            arrSize = 150 + rd.nextInt(100);
14417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3 = new byte[arrSize];
14427640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[0] = (byte) 0x0;
14447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[1] = (byte) 0x6;
14457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length, null, 2);
14467640caaf912a7eefacc3e2108c5afd70f7b072a4noda            hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2);
14477640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // encode content type
14497640caaf912a7eefacc3e2108c5afd70f7b072a4noda            contentLen = mContentTypeName.length();
14507640caaf912a7eefacc3e2108c5afd70f7b072a4noda            next = 2 + hdrEncodeLen;
14517640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspContentTypeStart = mGsmHeader.length + mUserDataHeader.length + next;
14527640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // next += encodeUint32(contentLen, array3, next);
14537640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mContentTypeName = " + mContentTypeName
14547640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + ", contentLen = " + contentLen);
14557640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14567640caaf912a7eefacc3e2108c5afd70f7b072a4noda            for (i = 0; i < contentLen; i++) {
14577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                array3[next + i] = (byte) mContentTypeName.charAt(i);
14587640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
14597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            array3[next + i] = (byte) 0x0;
14607640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14617640caaf912a7eefacc3e2108c5afd70f7b072a4noda            createRandomWspHeaderStrAppId(array3, rd, next + contentLen + 1, false);
14627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length
14637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + next + contentLen + 1;
14647640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeaderLen = array3.length;
14657640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mWspHeader = array3;
14677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            break;
14687640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14697640caaf912a7eefacc3e2108c5afd70f7b072a4noda        default:
14707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            return null;
14717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
14727640caaf912a7eefacc3e2108c5afd70f7b072a4noda        array = new byte[mGsmHeader.length + mUserDataHeader.length + mWspHeader.length
14737640caaf912a7eefacc3e2108c5afd70f7b072a4noda                + mMessageBody.length];
14747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        System.arraycopy(mGsmHeader, 0, array, 0, mGsmHeader.length);
14757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        System.arraycopy(mUserDataHeader, 0, array,
14767640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mGsmHeader.length, mUserDataHeader.length);
14777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        System.arraycopy(mWspHeader, 0, array,
14787640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mGsmHeader.length + mUserDataHeader.length, mWspHeader.length);
14797640caaf912a7eefacc3e2108c5afd70f7b072a4noda        System.arraycopy(mMessageBody, 0, array,
14807640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mGsmHeader.length + mUserDataHeader.length + mWspHeader.length,
14817640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mMessageBody.length);
14827640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return array;
14837640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14847640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
14857640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14867640caaf912a7eefacc3e2108c5afd70f7b072a4noda    Intent createIntent(int pduType, int tranId) {
14877640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Intent intent = new Intent();
14887640caaf912a7eefacc3e2108c5afd70f7b072a4noda        intent.putExtra("transactionId", tranId);
14897640caaf912a7eefacc3e2108c5afd70f7b072a4noda        intent.putExtra("pduType", pduType);
14907640caaf912a7eefacc3e2108c5afd70f7b072a4noda        intent.putExtra("header", mGsmHeader);
14917640caaf912a7eefacc3e2108c5afd70f7b072a4noda        intent.putExtra("data", mMessageBody);
14927640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // intent.putExtra("contentTypeParameters", null);
14937640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return intent;
14947640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
14957640caaf912a7eefacc3e2108c5afd70f7b072a4noda
14967640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
14977640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Message processing test, start activity
14987640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
14997640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testProcessMsg1() {
15007640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(1);
15017640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerLen = pdu.length -
15027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length);
15037640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int pduType = 6;
15047640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int tranId = 0;
15057640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalPackageName = mPackageName;
15067640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
15077640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15087640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
15097640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mClassName = "com.android.smspush.unitTests.ReceiverActivity";
15117640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
15137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
15147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
15157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
15167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_ACTIVITY, false, false);
15177640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue((iwapman.processMessage(
15197640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
15207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
15217640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId))
15227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    & WapPushManagerParams.MESSAGE_HANDLED) ==
15237640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.MESSAGE_HANDLED);
15247640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
15267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
15277640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
15287640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15297640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
15307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
15317640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
15327640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mPackageName = originalPackageName;
15347640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
15357640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
15367640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15377640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
15387640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Message processing test, start service
15397640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
15407640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testProcessMsg2() {
15417640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(1);
15427640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerLen = pdu.length - (mGsmHeader.length +
15437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mUserDataHeader.length + mMessageBody.length);
15447640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int pduType = 6;
15457640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int tranId = 0;
15467640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalPackageName = mPackageName;
15477640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
15487640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15497640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
15507640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15517640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mClassName = "com.android.smspush.unitTests.ReceiverService";
15527640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15537640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
15547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
15557640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15567640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
15577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
15587640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_SERVICE, false, false);
15597640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15607640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue((iwapman.processMessage(
15617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
15627640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
15637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId))
15647640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    & WapPushManagerParams.MESSAGE_HANDLED) ==
15657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.MESSAGE_HANDLED);
15667640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
15687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
15697640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
15707640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
15727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
15737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
15747640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mPackageName = originalPackageName;
15767640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
15777640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
15787640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15797640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
15807640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Message processing test, no signature
15817640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
15827640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testProcessMsg3() {
15837640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(1);
15847640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerLen = pdu.length -
15857640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length);
15867640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int pduType = 6;
15877640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int tranId = 0;
15887640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalPackageName = mPackageName;
15897640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
15907640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15917640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
15927640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mPackageName = "com.android.development";
15947640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mClassName = "com.android.development.Development";
15957640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
15977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
15987640caaf912a7eefacc3e2108c5afd70f7b072a4noda
15997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
16007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
16017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_SERVICE, true, false);
16027640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16037640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse((iwapman.processMessage(
16047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
16057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
16067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId))
16077640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    & WapPushManagerParams.MESSAGE_HANDLED) ==
16087640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.MESSAGE_HANDLED);
16097640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
16117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
16127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
16137640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16147640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
16157640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
16167640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
16177640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16187640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mPackageName = originalPackageName;
16197640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
16207640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
16217640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16227640caaf912a7eefacc3e2108c5afd70f7b072a4noda    IDataVerify getVerifyInterface() {
16237640caaf912a7eefacc3e2108c5afd70f7b072a4noda        while (mIVerify == null) {
16247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // wait for the activity receive data.
16257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            try {
16267640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Thread.sleep(TIME_WAIT);
16277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            } catch (InterruptedException e) {}
16287640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
16297640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return mIVerify;
16307640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
16317640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16327640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16337640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
16347640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Message processing test, received body data verification test
16357640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
16367640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testProcessMsg4() {
16377640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] originalMessageBody = mMessageBody;
16387640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = new byte[] {
16397640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xee,
16407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xff,
16417640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xee,
16427640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xff,
16437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xee,
16447640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xff,
16457640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xee,
16467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xff,
16477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xee,
16487640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xff,
16497640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xee,
16507640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (byte) 0xff,
16517640caaf912a7eefacc3e2108c5afd70f7b072a4noda        };
16527640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16537640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(1);
16547640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerLen = pdu.length -
16557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length);
16567640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int pduType = 6;
16577640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int tranId = 0;
16587640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalPackageName = mPackageName;
16597640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
16607640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16617640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
16627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
16637640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IDataVerify dataverify = getVerifyInterface();
16647640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16657640caaf912a7eefacc3e2108c5afd70f7b072a4noda            dataverify.resetData();
16667640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
16687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mClassName = "com.android.smspush.unitTests.ReceiverActivity";
16697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
16707640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
16717640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_ACTIVITY, false, false);
16727640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.processMessage(
16747640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
16757640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
16767640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId));
16777640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
16797640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
16807640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
16817640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(dataverify.verifyData(mMessageBody));
16837640caaf912a7eefacc3e2108c5afd70f7b072a4noda
16847640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
16857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            dataverify.resetData();
16867640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mClassName = "com.android.smspush.unitTests.ReceiverService";
16877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mMessageBody = new byte[] {
16887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xaa,
16897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xbb,
16907640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x11,
16917640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x22,
16927640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xaa,
16937640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xbb,
16947640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x11,
16957640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x22,
16967640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xaa,
16977640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xbb,
16987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x11,
16997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x22,
17007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xaa,
17017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xbb,
17027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x11,
17037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x22,
17047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xaa,
17057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xbb,
17067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x11,
17077640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x22,
17087640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xaa,
17097640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0xbb,
17107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x11,
17117640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    (byte) 0x22,
17127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            };
17137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            pdu = createPDU(1);
17147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
17157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
17167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_SERVICE, false, false);
17177640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17187640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.processMessage(
17197640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
17207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
17217640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId));
17227640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17237640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
17247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
17257640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
17267640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // Log.d(LOG_TAG, HexDump.dumpHexString(mMessageBody));
17287640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(dataverify.verifyData(mMessageBody));
17297640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
17307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
17317640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
17327640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mPackageName = originalPackageName;
17347640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
17357640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = originalMessageBody;
17367640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
17377640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17387640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
17397640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Message processing test, send invalid sms data
17407640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
17417640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testProcessMsg5() {
17427640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(2);
17437640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerLen = pdu.length -
17447640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length);
17457640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int pduType = 6;
17467640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int tranId = 0;
17477640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalPackageName = mPackageName;
17487640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
17497640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17507640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
17517640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17527640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mClassName = "com.android.smspush.unitTests.ReceiverActivity";
17537640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
17557640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
17567640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
17577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
17587640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_ACTIVITY, false, false);
17597640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17607640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue((iwapman.processMessage(
17617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
17627640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
17637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId))
17647640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    & WapPushManagerParams.MESSAGE_HANDLED) ==
17657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.MESSAGE_HANDLED);
17667640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
17687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
17697640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
17707640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
17727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
17737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
17747640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mPackageName = originalPackageName;
17767640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
17777640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
17787640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17797640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
17807640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Message processing test, no receiver application
17817640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
17827640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testProcessMsg6() {
17837640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(1);
17847640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerLen = pdu.length -
17857640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length);
17867640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int pduType = 6;
17877640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int tranId = 0;
17887640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalPackageName = mPackageName;
17897640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
17907640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17917640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
17927640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17937640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mClassName = "com.android.smspush.unitTests.NoReceiver";
17947640caaf912a7eefacc3e2108c5afd70f7b072a4noda
17957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
17967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
17977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
17987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
17997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_ACTIVITY, false, false);
18007640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse((iwapman.processMessage(
18027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
18037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
18047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId))
18057640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    & WapPushManagerParams.MESSAGE_HANDLED) ==
18067640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.MESSAGE_HANDLED);
18077640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18087640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
18097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
18107640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
18117640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
18137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
18147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName,
18157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_SERVICE, false, false);
18167640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18177640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse((iwapman.processMessage(
18187640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mAppIdValue),
18197640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue),
18207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    createIntent(pduType, tranId))
18217640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    & WapPushManagerParams.MESSAGE_HANDLED) ==
18227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.MESSAGE_HANDLED);
18237640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
18257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
18267640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Integer.toString(mContentTypeValue), mPackageName, mClassName);
18277640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18287640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
18297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(false);
18307640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
18317640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18327640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mPackageName = originalPackageName;
18337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
18347640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
18357640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18367640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
18377640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * WspTypeDecoder test, normal pdu
18387640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
18397640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDecoder1() {
18407640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
18417640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
18427640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
18437640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18447640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < 10; i++) {
18457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue = rd.nextInt(0xFFFF);
18467640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(1);
18477640caaf912a7eefacc3e2108c5afd70f7b072a4noda            WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
18487640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18497640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.seekXWapApplicationId(mWspHeaderStart,
18507640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mWspHeaderStart + mWspHeaderLen - 1);
18517640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
18527640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18537640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int index = (int) pduDecoder.getValue32();
18547640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.decodeXWapApplicationId(index);
18557640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
18567640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18577640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mAppIdValue: " + mAppIdValue
18587640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + ", val: " + pduDecoder.getValue32());
18597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(mAppIdValue == (int) pduDecoder.getValue32());
18607640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
18617640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18627640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
18637640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
18647640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18657640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
18667640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * WspTypeDecoder test, no header
18677640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
18687640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDecoder2() {
18697640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
18707640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
18717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
18727640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = rd.nextInt(0xFFFF);
18747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(2);
18757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
18767640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        res = pduDecoder.seekXWapApplicationId(mWspHeaderStart,
18787640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mWspHeaderStart + mWspHeaderLen - 1);
18797640caaf912a7eefacc3e2108c5afd70f7b072a4noda        assertFalse(res);
18807640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18817640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
18827640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
18837640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18847640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
18857640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * WspTypeDecoder test, decode appid test
18867640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
18877640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDecoder3() {
18887640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
18897640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
18907640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
18917640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
18927640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18937640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < 100; i++) {
18947640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue = rd.nextInt(0x0FFFFFFF);
18957640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue = rd.nextInt(0x0FFF);
18967640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(3);
18977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
18987640caaf912a7eefacc3e2108c5afd70f7b072a4noda
18997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.seekXWapApplicationId(mWspHeaderStart,
19007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mWspHeaderStart + mWspHeaderLen - 1);
19017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
19027640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19037640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int index = (int) pduDecoder.getValue32();
19047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.decodeXWapApplicationId(index);
19057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
19067640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19077640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mAppIdValue: " + mAppIdValue
19087640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + ", val: " + pduDecoder.getValue32());
19097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(mAppIdValue == (int) pduDecoder.getValue32());
19107640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
19117640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19127640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
19137640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
19147640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
19157640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19167640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /*
19177640caaf912a7eefacc3e2108c5afd70f7b072a4noda      public void testEnc() {
19187640caaf912a7eefacc3e2108c5afd70f7b072a4noda      byte[] arr = new byte[20];
19197640caaf912a7eefacc3e2108c5afd70f7b072a4noda      int index = 0;
19207640caaf912a7eefacc3e2108c5afd70f7b072a4noda      index += encodeUint32(0x87a5, arr, index);
19217640caaf912a7eefacc3e2108c5afd70f7b072a4noda      index += encodeUint32(0x1, arr, index);
19227640caaf912a7eefacc3e2108c5afd70f7b072a4noda      index += encodeUint32(0x9b, arr, index);
19237640caaf912a7eefacc3e2108c5afd70f7b072a4noda      index += encodeUint32(0x10, arr, index);
19247640caaf912a7eefacc3e2108c5afd70f7b072a4noda      index += encodeUint32(0xe0887, arr, index);
19257640caaf912a7eefacc3e2108c5afd70f7b072a4noda      index += encodeUint32(0x791a23d0, arr, index);
19267640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19277640caaf912a7eefacc3e2108c5afd70f7b072a4noda      Log.d(LOG_TAG, HexDump.dumpHexString(arr));
19287640caaf912a7eefacc3e2108c5afd70f7b072a4noda      }
19297640caaf912a7eefacc3e2108c5afd70f7b072a4noda    */
19307640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19317640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
19327640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * WspTypeDecoder test, no appid test
19337640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
19347640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDecoder4() {
19357640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
19367640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
19377640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
19387640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
19397640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19407640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < 100; i++) {
19417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue = rd.nextInt(0x0FFFFFFF);
19427640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue = rd.nextInt(0x0FFF);
19437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(4);
19447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
19457640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19467640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.seekXWapApplicationId(mWspHeaderStart,
19477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mWspHeaderStart + mWspHeaderLen - 1);
19487640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertFalse(res);
19497640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19507640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
19517640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19527640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
19537640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
19547640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
19557640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19567640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
19577640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * WspTypeDecoder test, decode string appid test
19587640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
19597640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDecoder5() {
19607640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
19617640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
19627640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
19637640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
19647640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19657640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < 10; i++) {
19667640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue = rd.nextInt(0x0FFFFFFF);
19677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue = rd.nextInt(0x0FFF);
19687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(5);
19697640caaf912a7eefacc3e2108c5afd70f7b072a4noda            WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
19707640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19717640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.seekXWapApplicationId(mWspHeaderStart,
19727640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mWspHeaderStart + mWspHeaderLen - 1);
19737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
19747640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19757640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int index = (int) pduDecoder.getValue32();
19767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.decodeXWapApplicationId(index);
19777640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
19787640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19797640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mAppIdValue: [" + mAppIdName + "], val: ["
19807640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + pduDecoder.getValueString() + "]");
19817640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(mAppIdName.equals(pduDecoder.getValueString()));
19827640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
19837640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19847640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
19857640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
19867640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
19877640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19887640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
19897640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * WspTypeDecoder test, decode string appid test
19907640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
19917640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDecoder6() {
19927640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
19937640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
19947640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
19957640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
19967640caaf912a7eefacc3e2108c5afd70f7b072a4noda
19977640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < OMA_APPLICATION_ID_NAMES.length; i++) {
19987640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdName = OMA_APPLICATION_ID_NAMES[i];
19997640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue = rd.nextInt(0x0FFF);
20007640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(6);
20017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
20027640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20037640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.seekXWapApplicationId(mWspHeaderStart,
20047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mWspHeaderStart + mWspHeaderLen - 1);
20057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
20067640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20077640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int index = (int) pduDecoder.getValue32();
20087640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.decodeXWapApplicationId(index);
20097640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
20107640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mAppIdValue: [" + mAppIdName + "], val: ["
20127640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + pduDecoder.getValueString() + "]");
20137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(mAppIdName.equals(pduDecoder.getValueString()));
20147640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
20157640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20167640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
20177640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
20187640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
20197640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20207640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
20217640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * WspTypeDecoder test, decode OMA content type
20227640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
20237640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testDecoder7() {
20247640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
20257640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
20267640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
20277640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
20287640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20297640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < OMA_CONTENT_TYPE_NAMES.length; i++) {
20307640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeName = OMA_CONTENT_TYPE_NAMES[i];
20317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(7);
20327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
20337640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20347640caaf912a7eefacc3e2108c5afd70f7b072a4noda            res = pduDecoder.decodeContentType(mWspContentTypeStart);
20357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(res);
20367640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            Log.d(LOG_TAG, "mContentTypeName: [" + mContentTypeName + "], val: ["
20387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    + pduDecoder.getValueString() + "]");
20397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(mContentTypeName.equals(pduDecoder.getValueString()));
20407640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
20417640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20427640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
20437640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
20447640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
20457640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20467640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20477640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
20487640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Copied from WapPushOverSms.
20497640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * The code flow is not changed from the original.
20507640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
20517640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public int dispatchWapPdu(byte[] pdu, IWapPushManager wapPushMan) {
20527640caaf912a7eefacc3e2108c5afd70f7b072a4noda
205343a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato        if (false) Log.d(LOG_TAG, "Rx: " + IccUtils.bytesToHexString(pdu));
20547640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20557640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int index = 0;
20567640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int transactionId = pdu[index++] & 0xFF;
20577640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int pduType = pdu[index++] & 0xFF;
20587640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerLength = 0;
20597640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20607640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if ((pduType != WspTypeDecoder.PDU_TYPE_PUSH) &&
20617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                (pduType != WspTypeDecoder.PDU_TYPE_CONFIRMED_PUSH)) {
206243a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato            if (false) Log.w(LOG_TAG, "Received non-PUSH WAP PDU. Type = " + pduType);
20637640caaf912a7eefacc3e2108c5afd70f7b072a4noda            return Intents.RESULT_SMS_HANDLED;
20647640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
20657640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20667640caaf912a7eefacc3e2108c5afd70f7b072a4noda        WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu);
20677640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20687640caaf912a7eefacc3e2108c5afd70f7b072a4noda        /**
20697640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Parse HeaderLen(unsigned integer).
20707640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * From wap-230-wsp-20010705-a section 8.1.2
20717640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * The maximum size of a uintvar is 32 bits.
20727640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * So it will be encoded in no more than 5 octets.
20737640caaf912a7eefacc3e2108c5afd70f7b072a4noda         */
20747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if (pduDecoder.decodeUintvarInteger(index) == false) {
207543a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato            if (false) Log.w(LOG_TAG, "Received PDU. Header Length error.");
20767640caaf912a7eefacc3e2108c5afd70f7b072a4noda            return Intents.RESULT_SMS_GENERIC_ERROR;
20777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
20787640caaf912a7eefacc3e2108c5afd70f7b072a4noda        headerLength = (int) pduDecoder.getValue32();
20797640caaf912a7eefacc3e2108c5afd70f7b072a4noda        index += pduDecoder.getDecodedDataLength();
20807640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20817640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int headerStartIndex = index;
20827640caaf912a7eefacc3e2108c5afd70f7b072a4noda
20837640caaf912a7eefacc3e2108c5afd70f7b072a4noda        /**
20847640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Parse Content-Type.
20857640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * From wap-230-wsp-20010705-a section 8.4.2.24
20867640caaf912a7eefacc3e2108c5afd70f7b072a4noda         *
20877640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Content-type-value = Constrained-media | Content-general-form
20887640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Content-general-form = Value-length Media-type
20897640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Media-type = (Well-known-media | Extension-Media) *(Parameter)
20907640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Value-length = Short-length | (Length-quote Length)
20917640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Short-length = <Any octet 0-30>   (octet <= WAP_PDU_SHORT_LENGTH_MAX)
20927640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Length-quote = <Octet 31>         (WAP_PDU_LENGTH_QUOTE)
20937640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Length = Uintvar-integer
20947640caaf912a7eefacc3e2108c5afd70f7b072a4noda         */
20957640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if (pduDecoder.decodeContentType(index) == false) {
209643a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato            if (false) Log.w(LOG_TAG, "Received PDU. Header Content-Type error.");
20977640caaf912a7eefacc3e2108c5afd70f7b072a4noda            return Intents.RESULT_SMS_GENERIC_ERROR;
20987640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
20997640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21007640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String mimeType = pduDecoder.getValueString();
21017640caaf912a7eefacc3e2108c5afd70f7b072a4noda        long binaryContentType = pduDecoder.getValue32();
21027640caaf912a7eefacc3e2108c5afd70f7b072a4noda        index += pduDecoder.getDecodedDataLength();
21037640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21047640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] header = new byte[headerLength];
21057640caaf912a7eefacc3e2108c5afd70f7b072a4noda        System.arraycopy(pdu, headerStartIndex, header, 0, header.length);
21067640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21077640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] intentData;
21087640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21097640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if (mimeType != null && mimeType.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) {
21107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            intentData = pdu;
21117640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } else {
21127640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int dataIndex = headerStartIndex + headerLength;
21137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            intentData = new byte[pdu.length - dataIndex];
21147640caaf912a7eefacc3e2108c5afd70f7b072a4noda            System.arraycopy(pdu, dataIndex, intentData, 0, intentData.length);
21157640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
21167640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21177640caaf912a7eefacc3e2108c5afd70f7b072a4noda        /**
21187640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * Seek for application ID field in WSP header.
21197640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * If application ID is found, WapPushManager substitute the message
21207640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * processing. Since WapPushManager is optional module, if WapPushManager
21217640caaf912a7eefacc3e2108c5afd70f7b072a4noda         * is not found, legacy message processing will be continued.
21227640caaf912a7eefacc3e2108c5afd70f7b072a4noda         */
21237640caaf912a7eefacc3e2108c5afd70f7b072a4noda        if (pduDecoder.seekXWapApplicationId(index, index + headerLength - 1)) {
21247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            index = (int) pduDecoder.getValue32();
21257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            pduDecoder.decodeXWapApplicationId(index);
21267640caaf912a7eefacc3e2108c5afd70f7b072a4noda            String wapAppId = pduDecoder.getValueString();
21277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            if (wapAppId == null) {
21287640caaf912a7eefacc3e2108c5afd70f7b072a4noda                wapAppId = Integer.toString((int) pduDecoder.getValue32());
21297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
21307640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            String contentType = ((mimeType == null) ?
21327640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Long.toString(binaryContentType) : mimeType);
213343a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato            if (false) Log.v(LOG_TAG, "appid found: " + wapAppId + ":" + contentType);
21347640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21357640caaf912a7eefacc3e2108c5afd70f7b072a4noda            try {
21367640caaf912a7eefacc3e2108c5afd70f7b072a4noda                boolean processFurther = true;
21377640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // IWapPushManager wapPushMan = mWapConn.getWapPushManager();
21387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (wapPushMan == null) {
213943a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato                    if (false) Log.w(LOG_TAG, "wap push manager not found!");
21407640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
21417640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Intent intent = new Intent();
21427640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    intent.putExtra("transactionId", transactionId);
21437640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    intent.putExtra("pduType", pduType);
21447640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    intent.putExtra("header", header);
21457640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    intent.putExtra("data", intentData);
21467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    intent.putExtra("contentTypeParameters",
21477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            pduDecoder.getContentParameters());
21487640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21497640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    int procRet = wapPushMan.processMessage(wapAppId, contentType, intent);
215043a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato                    if (false) Log.v(LOG_TAG, "procRet:" + procRet);
21517640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    if ((procRet & WapPushManagerParams.MESSAGE_HANDLED) > 0
21527640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            && (procRet & WapPushManagerParams.FURTHER_PROCESSING) == 0) {
21537640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        processFurther = false;
21547640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    }
21557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
21567640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (!processFurther) {
21577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    return Intents.RESULT_SMS_HANDLED;
21587640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
21597640caaf912a7eefacc3e2108c5afd70f7b072a4noda            } catch (RemoteException e) {
216043a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato                if (false) Log.w(LOG_TAG, "remote func failed...");
21617640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
21627640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
216343a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato        if (false) Log.v(LOG_TAG, "fall back to existing handler");
21647640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21657640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return Activity.RESULT_OK;
21667640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
21677640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21687640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected byte[] retrieveWspBody() {
21697640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] array = new byte[mWspHeader.length + mMessageBody.length];
21707640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        System.arraycopy(mWspHeader, 0, array, 0, mWspHeader.length);
21727640caaf912a7eefacc3e2108c5afd70f7b072a4noda        System.arraycopy(mMessageBody, 0, array, mWspHeader.length, mMessageBody.length);
21737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return array;
21747640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
21757640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21767640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected String getContentTypeName(int ctypeVal) {
21777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int i;
21787640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21797640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (i = 0; i < OMA_CONTENT_TYPE_VALUES.length; i++) {
21807640caaf912a7eefacc3e2108c5afd70f7b072a4noda            if (ctypeVal == OMA_CONTENT_TYPE_VALUES[i]) {
21817640caaf912a7eefacc3e2108c5afd70f7b072a4noda                return OMA_CONTENT_TYPE_NAMES[i];
21827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
21837640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
21847640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return null;
21857640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
21867640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21877640caaf912a7eefacc3e2108c5afd70f7b072a4noda    protected boolean isContentTypeMapped(int ctypeVal) {
21887640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int i;
21897640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21907640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (i = 0; i < OMA_CONTENT_TYPE_VALUES.length; i++) {
21917640caaf912a7eefacc3e2108c5afd70f7b072a4noda            if (ctypeVal == OMA_CONTENT_TYPE_VALUES[i]) return true;
21927640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
21937640caaf912a7eefacc3e2108c5afd70f7b072a4noda        return false;
21947640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
21957640caaf912a7eefacc3e2108c5afd70f7b072a4noda
21967640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
21977640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Integration test 1, simple case
21987640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
21997640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testIntegration1() {
22007640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
22017640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
22027640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
22037640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
22047640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalContentTypeName = mContentTypeName;
22057640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
22067640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] originalMessageBody = mMessageBody;
22077640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
22087640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22097640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = new byte[100 + rd.nextInt(100)];
22107640caaf912a7eefacc3e2108c5afd70f7b072a4noda        rd.nextBytes(mMessageBody);
22117640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22127640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] pdu = createPDU(1);
22137640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] wappushPdu = retrieveWspBody();
22147640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22157640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22167640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = "com.android.smspush.unitTests.ReceiverActivity";
22177640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // Phone dummy = new DummyPhone(getContext());
22187640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // Phone gsm = PhoneFactory.getGsmPhone();
22197640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // GSMPhone gsm = new GSMPhone(getContext(), new SimulatedCommands(), null, true);
22207640caaf912a7eefacc3e2108c5afd70f7b072a4noda        // WapPushOverSms dispatcher = new WapPushOverSms(dummy, null);
22217640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22227640caaf912a7eefacc3e2108c5afd70f7b072a4noda        try {
22237640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // set up data
22247640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IWapPushManager iwapman = getInterface();
22257640caaf912a7eefacc3e2108c5afd70f7b072a4noda            IDataVerify dataverify = getVerifyInterface();
22267640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22277640caaf912a7eefacc3e2108c5afd70f7b072a4noda            dataverify.resetData();
22287640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22297640caaf912a7eefacc3e2108c5afd70f7b072a4noda            if (isContentTypeMapped(mContentTypeValue)) {
22307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // content type is mapped
22317640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mContentTypeName = getContentTypeName(mContentTypeValue);
22327640caaf912a7eefacc3e2108c5afd70f7b072a4noda                Log.d(LOG_TAG, "mContentTypeValue mapping "
22337640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        + mContentTypeName + ":" + mContentTypeValue);
22347640caaf912a7eefacc3e2108c5afd70f7b072a4noda            } else {
22357640caaf912a7eefacc3e2108c5afd70f7b072a4noda                mContentTypeName = Integer.toString(mContentTypeValue);
22367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
22377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.addPackage(Integer.toString(mAppIdValue),
22387640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mContentTypeName, mPackageName, mClassName,
22397640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    WapPushManagerParams.APP_TYPE_ACTIVITY, false, false);
22407640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22417640caaf912a7eefacc3e2108c5afd70f7b072a4noda            dispatchWapPdu(wappushPdu, iwapman);
22427640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            // clean up data
22447640caaf912a7eefacc3e2108c5afd70f7b072a4noda            iwapman.deletePackage(Integer.toString(mAppIdValue),
22457640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mContentTypeName, mPackageName, mClassName);
22467640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22477640caaf912a7eefacc3e2108c5afd70f7b072a4noda            assertTrue(dataverify.verifyData(mMessageBody));
22487640caaf912a7eefacc3e2108c5afd70f7b072a4noda        } catch (RemoteException e) {
22497640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
22507640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22517640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22527640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
22537640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
22547640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeName = originalContentTypeName;
22557640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
22567640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
22577640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = originalMessageBody;
22587640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
22597640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22607640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
22617640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Integration test 2, random mAppIdValue(int), all OMA content type
22627640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
22637640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testIntegration2() {
22647640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
22657640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
22667640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
22677640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
22687640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalContentTypeName = mContentTypeName;
22697640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
22707640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] originalMessageBody = mMessageBody;
22717640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
22727640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22737640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IWapPushManager iwapman = getInterface();
22747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IDataVerify dataverify = getVerifyInterface();
22757640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = "com.android.smspush.unitTests.ReceiverActivity";
22767640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < OMA_CONTENT_TYPE_NAMES.length; i++) {
22787640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeName = OMA_CONTENT_TYPE_NAMES[i];
22797640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue = rd.nextInt(0x0FFFFFFF);
22807640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22817640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mMessageBody = new byte[100 + rd.nextInt(100)];
22827640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd.nextBytes(mMessageBody);
22837640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22847640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(7);
22857640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] wappushPdu = retrieveWspBody();
22867640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22877640caaf912a7eefacc3e2108c5afd70f7b072a4noda            try {
22887640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dataverify.resetData();
22897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // set up data
22907640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.addPackage(Integer.toString(mAppIdValue),
22917640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName,
22927640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        WapPushManagerParams.APP_TYPE_ACTIVITY, false, false);
22937640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22947640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dispatchWapPdu(wappushPdu, iwapman);
22957640caaf912a7eefacc3e2108c5afd70f7b072a4noda
22967640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // clean up data
22977640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.deletePackage(Integer.toString(mAppIdValue),
22987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName);
22997640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23007640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) {
23017640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(wappushPdu));
23027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
23037640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(mMessageBody));
23047640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
23057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            } catch (RemoteException e) {
23067640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
23077640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
23087640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23097640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23107640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
23117640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
23127640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeName = originalContentTypeName;
23137640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
23147640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
23157640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = originalMessageBody;
23167640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
23177640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23187640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
23197640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Integration test 3, iterate OmaApplication ID, random binary content type
23207640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
23217640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testIntegration3() {
23227640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
23237640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
23247640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
23257640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
23267640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalContentTypeName = mContentTypeName;
23277640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
23287640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] originalMessageBody = mMessageBody;
23297640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
23307640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23317640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IWapPushManager iwapman = getInterface();
23327640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IDataVerify dataverify = getVerifyInterface();
23337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = "com.android.smspush.unitTests.ReceiverService";
23347640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23357640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < OMA_APPLICATION_ID_NAMES.length; i++) {
23367640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdName = OMA_APPLICATION_ID_NAMES[i];
23377640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue = rd.nextInt(0x0FFF);
23387640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23397640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mMessageBody = new byte[100 + rd.nextInt(100)];
23407640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd.nextBytes(mMessageBody);
23417640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23427640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(6);
23437640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] wappushPdu = retrieveWspBody();
23447640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23457640caaf912a7eefacc3e2108c5afd70f7b072a4noda            try {
23467640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dataverify.resetData();
23477640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // set up data
23487640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (isContentTypeMapped(mContentTypeValue)) {
23497640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    // content type is mapped to integer value
23507640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mContentTypeName = getContentTypeName(mContentTypeValue);
23517640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "mContentTypeValue mapping "
23527640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            + mContentTypeValue + ":" + mContentTypeName);
23537640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
23547640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mContentTypeName = Integer.toString(mContentTypeValue);
23557640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
23567640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23577640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.addPackage(mAppIdName,
23587640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName,
23597640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        WapPushManagerParams.APP_TYPE_SERVICE, false, false);
23607640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dispatchWapPdu(wappushPdu, iwapman);
23627640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // clean up data
23647640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.deletePackage(mAppIdName,
23657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName);
23667640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23677640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) {
23687640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(wappushPdu));
23697640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
23707640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(mMessageBody));
23717640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
23727640caaf912a7eefacc3e2108c5afd70f7b072a4noda            } catch (RemoteException e) {
23737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
23747640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
23757640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23767640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
23777640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
23787640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeName = originalContentTypeName;
23797640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
23807640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
23817640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = originalMessageBody;
23827640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
23837640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23847640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
23857640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Integration test 4, iterate OmaApplication ID, Oma content type
23867640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
23877640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testIntegration4() {
23887640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
23897640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
23907640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
23917640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
23927640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalContentTypeName = mContentTypeName;
23937640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
23947640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] originalMessageBody = mMessageBody;
23957640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
23967640caaf912a7eefacc3e2108c5afd70f7b072a4noda
23977640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IWapPushManager iwapman = getInterface();
23987640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IDataVerify dataverify = getVerifyInterface();
23997640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = "com.android.smspush.unitTests.ReceiverService";
24007640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24017640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < OMA_APPLICATION_ID_NAMES.length
24027640caaf912a7eefacc3e2108c5afd70f7b072a4noda                + OMA_CONTENT_TYPE_NAMES.length; i++) {
24037640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdName = OMA_APPLICATION_ID_NAMES[rd.nextInt(OMA_APPLICATION_ID_NAMES.length)];
24047640caaf912a7eefacc3e2108c5afd70f7b072a4noda            int contIndex = rd.nextInt(OMA_CONTENT_TYPE_NAMES.length);
24057640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeName = OMA_CONTENT_TYPE_NAMES[contIndex];
24067640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24077640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mMessageBody = new byte[100 + rd.nextInt(100)];
24087640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd.nextBytes(mMessageBody);
24097640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24107640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(8);
24117640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] wappushPdu = retrieveWspBody();
24127640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24137640caaf912a7eefacc3e2108c5afd70f7b072a4noda            try {
24147640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dataverify.resetData();
24157640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // set up data
24167640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.addPackage(mAppIdName,
24177640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName,
24187640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        WapPushManagerParams.APP_TYPE_SERVICE, false, false);
24197640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24207640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dispatchWapPdu(wappushPdu, iwapman);
24217640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24227640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // clean up data
24237640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.deletePackage(mAppIdName,
24247640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName);
24257640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24267640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) {
24277640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(wappushPdu));
24287640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
24297640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(mMessageBody));
24307640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
24317640caaf912a7eefacc3e2108c5afd70f7b072a4noda            } catch (RemoteException e) {
24327640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
24337640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
24347640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24357640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
24367640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
24377640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeName = originalContentTypeName;
24387640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
24397640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
24407640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = originalMessageBody;
24417640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
24427640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24437640caaf912a7eefacc3e2108c5afd70f7b072a4noda    /**
24447640caaf912a7eefacc3e2108c5afd70f7b072a4noda     * Integration test 5, iterate binary OmaApplication ID, Oma binary content type
24457640caaf912a7eefacc3e2108c5afd70f7b072a4noda     */
24467640caaf912a7eefacc3e2108c5afd70f7b072a4noda    public void testIntegration5() {
24477640caaf912a7eefacc3e2108c5afd70f7b072a4noda        boolean res;
24487640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalAppIdValue = mAppIdValue;
24497640caaf912a7eefacc3e2108c5afd70f7b072a4noda        int originalContentTypeValue  = mContentTypeValue;
24507640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalAppIdName = mAppIdName;
24517640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalContentTypeName = mContentTypeName;
24527640caaf912a7eefacc3e2108c5afd70f7b072a4noda        String originalClassName = mClassName;
24537640caaf912a7eefacc3e2108c5afd70f7b072a4noda        byte[] originalMessageBody = mMessageBody;
24547640caaf912a7eefacc3e2108c5afd70f7b072a4noda        Random rd = new Random();
24557640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24567640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IWapPushManager iwapman = getInterface();
24577640caaf912a7eefacc3e2108c5afd70f7b072a4noda        IDataVerify dataverify = getVerifyInterface();
24587640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = "com.android.smspush.unitTests.ReceiverService";
24597640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24607640caaf912a7eefacc3e2108c5afd70f7b072a4noda        for (int i = 0; i < OMA_APPLICATION_ID_VALUES.length +
24617640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    OMA_CONTENT_TYPE_VALUES.length; i++) {
24627640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mAppIdValue = OMA_APPLICATION_ID_VALUES[rd.nextInt(
24637640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    OMA_APPLICATION_ID_VALUES.length)];
24647640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mContentTypeValue =
24657640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    OMA_CONTENT_TYPE_VALUES[rd.nextInt(OMA_CONTENT_TYPE_VALUES.length)];
24667640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24677640caaf912a7eefacc3e2108c5afd70f7b072a4noda            mMessageBody = new byte[100 + rd.nextInt(100)];
24687640caaf912a7eefacc3e2108c5afd70f7b072a4noda            rd.nextBytes(mMessageBody);
24697640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24707640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] pdu = createPDU(3);
24717640caaf912a7eefacc3e2108c5afd70f7b072a4noda            byte[] wappushPdu = retrieveWspBody();
24727640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24737640caaf912a7eefacc3e2108c5afd70f7b072a4noda            try {
24747640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dataverify.resetData();
24757640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // set up data
24767640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (isContentTypeMapped(mContentTypeValue)) {
24777640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    // content type is mapped to integer value
24787640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mContentTypeName = getContentTypeName(mContentTypeValue);
24797640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    Log.d(LOG_TAG, "mContentTypeValue mapping "
24807640caaf912a7eefacc3e2108c5afd70f7b072a4noda                            + mContentTypeValue + ":" + mContentTypeName);
24817640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
24827640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    mContentTypeName = Integer.toString(mContentTypeValue);
24837640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
24847640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24857640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.addPackage(Integer.toString(mAppIdValue),
24867640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName,
24877640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        WapPushManagerParams.APP_TYPE_SERVICE, false, false);
24887640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24897640caaf912a7eefacc3e2108c5afd70f7b072a4noda                dispatchWapPdu(wappushPdu, iwapman);
24907640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24917640caaf912a7eefacc3e2108c5afd70f7b072a4noda                // clean up data
24927640caaf912a7eefacc3e2108c5afd70f7b072a4noda                iwapman.deletePackage(Integer.toString(mAppIdValue),
24937640caaf912a7eefacc3e2108c5afd70f7b072a4noda                        mContentTypeName, mPackageName, mClassName);
24947640caaf912a7eefacc3e2108c5afd70f7b072a4noda
24957640caaf912a7eefacc3e2108c5afd70f7b072a4noda                if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) {
24967640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(wappushPdu));
24977640caaf912a7eefacc3e2108c5afd70f7b072a4noda                } else {
24987640caaf912a7eefacc3e2108c5afd70f7b072a4noda                    assertTrue(dataverify.verifyData(mMessageBody));
24997640caaf912a7eefacc3e2108c5afd70f7b072a4noda                }
25007640caaf912a7eefacc3e2108c5afd70f7b072a4noda            } catch (RemoteException e) {
25017640caaf912a7eefacc3e2108c5afd70f7b072a4noda            }
25027640caaf912a7eefacc3e2108c5afd70f7b072a4noda        }
25037640caaf912a7eefacc3e2108c5afd70f7b072a4noda
25047640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mClassName = originalClassName;
25057640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdName = originalAppIdName;
25067640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeName = originalContentTypeName;
25077640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mAppIdValue = originalAppIdValue;
25087640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mContentTypeValue = originalContentTypeValue;
25097640caaf912a7eefacc3e2108c5afd70f7b072a4noda        mMessageBody = originalMessageBody;
25107640caaf912a7eefacc3e2108c5afd70f7b072a4noda    }
25117640caaf912a7eefacc3e2108c5afd70f7b072a4noda
25127640caaf912a7eefacc3e2108c5afd70f7b072a4noda}
2513