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.IWapPushManager; 317640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.internal.telephony.WapPushManagerParams; 327640caaf912a7eefacc3e2108c5afd70f7b072a4nodaimport com.android.internal.telephony.WspTypeDecoder; 335d35fcfc32a2c137282e768a6acd7eac27ac0d91Alex Yakavenkaimport com.android.internal.telephony.uicc.IccUtils; 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 /** 555790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor * Add sqlite injection test 556790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor */ 557790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor public void testAddPackage0() { 558790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor String inject = "' union select 0,'com.android.settings','com.android.settings.Settings',0,0,0--"; 559790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor 560790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor // insert new data 561790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor IWapPushManager iwapman = getInterface(); 562790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor try { 563790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor assertFalse(iwapman.addPackage( 564790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor inject, 565790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor Integer.toString(mContentTypeValue), 566790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor mPackageName, mClassName, 567790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor WapPushManagerParams.APP_TYPE_SERVICE, true, true)); 568790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor } catch (RemoteException e) { 569790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor assertTrue(false); 570790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor } 571790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor } 572790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor 573790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor /** 5747640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Add duprecated package test. 5757640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 5767640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testAddPackage2() { 5777640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 5787640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 5797640caaf912a7eefacc3e2108c5afd70f7b072a4noda 5807640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 5817640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 5827640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 0, 5837640caaf912a7eefacc3e2108c5afd70f7b072a4noda false, false); 5847640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue + 10), 5857640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 0, 5867640caaf912a7eefacc3e2108c5afd70f7b072a4noda false, false); 5877640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 5887640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue + 10), mPackageName, mClassName, 0, 5897640caaf912a7eefacc3e2108c5afd70f7b072a4noda false, false); 5907640caaf912a7eefacc3e2108c5afd70f7b072a4noda 5917640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.addPackage(Integer.toString(mAppIdValue), 5927640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 0, 5937640caaf912a7eefacc3e2108c5afd70f7b072a4noda false, false)); 5947640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.addPackage(Integer.toString(mAppIdValue + 10), 5957640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 0, 5967640caaf912a7eefacc3e2108c5afd70f7b072a4noda false, false)); 5977640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.addPackage(Integer.toString(mAppIdValue), 5987640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue + 10), mPackageName, mClassName, 0, 5997640caaf912a7eefacc3e2108c5afd70f7b072a4noda false, false)); 6007640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6017640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 6027640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 6037640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 6047640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue + 10), 6057640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 6067640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 6077640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue + 10), mPackageName, mClassName); 6087640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 6097640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 6107640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 6117640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 6127640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6137640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected void utUpdatePackage(boolean need_sig, boolean more_proc) { 6147640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 6157640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6167640caaf912a7eefacc3e2108c5afd70f7b072a4noda // insert new data 6177640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 6187640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(iwapman.updatePackage( 6197640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 6207640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 6217640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName, mClassName, 6227640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, need_sig, more_proc)); 6237640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 6247640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 6257640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 6267640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6277640caaf912a7eefacc3e2108c5afd70f7b072a4noda // verify the data 6287640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManager wpman = getService(); 6297640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(wpman.verifyData( 6307640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 6317640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 6327640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName, mClassName, 6337640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, need_sig, more_proc)); 6347640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 6357640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6367640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 6377640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Updating package test 6387640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 6397640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testUpdatePackage1() { 6407640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 6417640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 6427640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6437640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 6447640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 6457640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 6467640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6477640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 6487640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 6497640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 6507640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue += 10; 6517640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 6527640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 6537640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 6547640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 6557640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 6567640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 6577640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 6587640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 6597640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 6607640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 6617640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 6627640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 6637640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 6647640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 6657640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6667640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 6677640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 6687640caaf912a7eefacc3e2108c5afd70f7b072a4noda utUpdatePackage(false, false); 6697640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue += 10; 6707640caaf912a7eefacc3e2108c5afd70f7b072a4noda utUpdatePackage(false, true); 6717640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 6727640caaf912a7eefacc3e2108c5afd70f7b072a4noda utUpdatePackage(true, false); 6737640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 6747640caaf912a7eefacc3e2108c5afd70f7b072a4noda utUpdatePackage(true, true); 6757640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6767640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 6777640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 6787640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6797640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 6807640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 6817640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 6827640caaf912a7eefacc3e2108c5afd70f7b072a4noda 6837640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 6847640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 6857640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue += 10; 6867640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 6877640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 6887640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 6897640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 6907640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 6917640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 6927640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 6937640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 6947640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 6957640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 6967640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 6977640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 6987640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 6997640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 7007640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7017640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 7027640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Updating invalid package test 7037640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 7047640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testUpdatePackage2() { 7057640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 7067640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 7077640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7087640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 7097640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 7107640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 7117640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7127640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 7137640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 7147640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 7157640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.updatePackage( 7167640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue + 10), 7177640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 7187640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName, mClassName, 0, false, false)); 7197640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.updatePackage( 7207640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 7217640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue + 10), 7227640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName, mClassName, 0, false, false)); 7237640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(iwapman.updatePackage( 7247640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 7257640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 7267640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName + "dummy_data", mClassName, 0, false, false)); 7277640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(iwapman.updatePackage( 7287640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 7297640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 7307640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName, mClassName + "dummy_data", 0, false, false)); 7317640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 7327640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 7337640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 7347640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 7357640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, 7367640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName + "dummy_data"); 7377640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 7387640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 7397640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 7407640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 7417640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7427640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected void utDeletePackage() { 7437640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 7447640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7457640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 7467640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(iwapman.deletePackage( 7477640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 7487640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 7497640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName, mClassName)); 7507640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 7517640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 7527640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 7537640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7547640caaf912a7eefacc3e2108c5afd70f7b072a4noda // verify the data 7557640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManager wpman = getService(); 7567640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(!wpman.isDataExist( 7577640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 7587640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 7597640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName, mClassName)); 7607640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 7617640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7627640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 7637640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Deleting package test 7647640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 7657640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDeletePackage1() { 7667640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 7677640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 7687640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7697640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 7707640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 7717640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 7727640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7737640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 7747640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 7757640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 7767640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue += 10; 7777640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 7787640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 7797640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 7807640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 7817640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 7827640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 7837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 7847640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 7857640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 7867640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 7877640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 7887640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 7897640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 7907640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 7917640caaf912a7eefacc3e2108c5afd70f7b072a4noda 7927640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 7937640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 7947640caaf912a7eefacc3e2108c5afd70f7b072a4noda utDeletePackage(); 7957640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue += 10; 7967640caaf912a7eefacc3e2108c5afd70f7b072a4noda utDeletePackage(); 7977640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 7987640caaf912a7eefacc3e2108c5afd70f7b072a4noda utDeletePackage(); 7997640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue += 20; 8007640caaf912a7eefacc3e2108c5afd70f7b072a4noda utDeletePackage(); 8017640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8027640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 8037640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 8047640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 8057640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8067640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 8077640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Deleting invalid package test 8087640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 8097640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDeletePackage2() { 8107640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 8117640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 8127640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8137640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 8147640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 8157640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 8167640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8177640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 8187640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 8197640caaf912a7eefacc3e2108c5afd70f7b072a4noda 0, false, false); 8207640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8217640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.deletePackage(Integer.toString(mAppIdValue + 10), 8227640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName)); 8237640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.deletePackage(Integer.toString(mAppIdValue), 8247640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue + 20), mPackageName, mClassName)); 8257640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(iwapman.deletePackage(Integer.toString(mAppIdValue + 10), 8267640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue + 20), mPackageName, mClassName)); 8277640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8287640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 8297640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 8307640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8317640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 8327640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 8337640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 8347640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 8357640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8367640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8377640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected int encodeUint32(int uint32Val, byte[] arr, int start) { 8387640caaf912a7eefacc3e2108c5afd70f7b072a4noda int bit = 1; 8397640caaf912a7eefacc3e2108c5afd70f7b072a4noda int topbit = 0; 8407640caaf912a7eefacc3e2108c5afd70f7b072a4noda int encodeLen; 8417640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tmpVal; 8427640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8437640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(uint32Val >= 0); 8447640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < 31; i++) { 8457640caaf912a7eefacc3e2108c5afd70f7b072a4noda if ((bit & uint32Val) > 0) topbit = i; 8467640caaf912a7eefacc3e2108c5afd70f7b072a4noda bit = (bit << 1); 8477640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 8487640caaf912a7eefacc3e2108c5afd70f7b072a4noda encodeLen = topbit/7 + 1; 8497640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (arr == null) return encodeLen; 8507640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8517640caaf912a7eefacc3e2108c5afd70f7b072a4noda //Log.d(LOG_TAG, "uint32Val = " + Integer.toHexString(uint32Val) + ", topbit = " 8527640caaf912a7eefacc3e2108c5afd70f7b072a4noda // + topbit + ", encodeLen = " + encodeLen); 8537640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8547640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = uint32Val; 8557640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = encodeLen - 1; i >= 0; i--) { 8567640caaf912a7eefacc3e2108c5afd70f7b072a4noda long val = 0; 8577640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (i < encodeLen - 1) val = 0x80; 8587640caaf912a7eefacc3e2108c5afd70f7b072a4noda val |= tmpVal & 0x7f; 8597640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[start + i] = (byte) (val & 0xFF); 8607640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = (tmpVal >> 7); 8617640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 8627640caaf912a7eefacc3e2108c5afd70f7b072a4noda return encodeLen; 8637640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 8647640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8657640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected int encodeShortInt(int sintVal, byte[] arr, int start) { 8667640caaf912a7eefacc3e2108c5afd70f7b072a4noda int encodeLen = 0; 8677640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8687640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (sintVal >= 0x80) return encodeLen; 8697640caaf912a7eefacc3e2108c5afd70f7b072a4noda encodeLen = 1; 8707640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[start] = (byte) (sintVal | 0x80); 8717640caaf912a7eefacc3e2108c5afd70f7b072a4noda return encodeLen; 8727640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 8737640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8747640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8757640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 8767640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Generate Random WSP header with integer application ID 8777640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 8787640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected void createRandomWspHeader(byte[] arr, Random rd, int headerStart, 8797640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean noAppId) { 8807640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8817640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean appIdAdded = false; 8827640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8837640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "headerStart = " + headerStart + ", appId = " + mAppIdValue 8847640caaf912a7eefacc3e2108c5afd70f7b072a4noda + "(" + Integer.toHexString(mAppIdValue) + ")"); 8857640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "random arr length:" + arr.length); 8867640caaf912a7eefacc3e2108c5afd70f7b072a4noda String typename[] = new String[] { "short int", "long int", "string", "uint32"}; 8877640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8887640caaf912a7eefacc3e2108c5afd70f7b072a4noda while (!appIdAdded) { 8897640caaf912a7eefacc3e2108c5afd70f7b072a4noda int type; 8907640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = headerStart; 8917640caaf912a7eefacc3e2108c5afd70f7b072a4noda int len = arr.length; 8927640caaf912a7eefacc3e2108c5afd70f7b072a4noda int i; 8937640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean addAppid = false; 8947640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tmpVal = 0; 8957640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tmpVal2 = 0; 8967640caaf912a7eefacc3e2108c5afd70f7b072a4noda 8977640caaf912a7eefacc3e2108c5afd70f7b072a4noda while (true) { 8987640caaf912a7eefacc3e2108c5afd70f7b072a4noda int add; 8997640caaf912a7eefacc3e2108c5afd70f7b072a4noda 9007640caaf912a7eefacc3e2108c5afd70f7b072a4noda /* 9017640caaf912a7eefacc3e2108c5afd70f7b072a4noda * field name 9027640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 0: short int 9037640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 1: long int 9047640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 2: text 9057640caaf912a7eefacc3e2108c5afd70f7b072a4noda * (no uint for param value) 9067640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 9077640caaf912a7eefacc3e2108c5afd70f7b072a4noda type = rd.nextInt(3); 9087640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 9097640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short integer 9107640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (index > 100 && !appIdAdded) addAppid = true; 9117640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1; 9127640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 9137640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 9147640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1 + rd.nextInt(29); 9157640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 9167640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // header string 9177640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 2 + rd.nextInt(10); 9187640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 9197640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9207640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (index + add >= len) break; 9217640caaf912a7eefacc3e2108c5afd70f7b072a4noda 9227640caaf912a7eefacc3e2108c5afd70f7b072a4noda // fill header name 9237640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 9247640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short integer 9257640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (!addAppid) { 9267640caaf912a7eefacc3e2108c5afd70f7b072a4noda do { 9277640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (0x80 | rd.nextInt(128)); 9287640caaf912a7eefacc3e2108c5afd70f7b072a4noda } while (arr[index] == (byte) 0xaf); 9297640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 9307640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "appId added."); 9317640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) 0xaf; 9327640caaf912a7eefacc3e2108c5afd70f7b072a4noda // if noAppId case, appId fld must be decieved. 9337640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (noAppId) arr[index]++; 9347640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9357640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 9367640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 9377640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (add - 1); 9387640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal2 = 0; 9397640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 1; i < add; i++) { 9407640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(255); 9417640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal2 = (tmpVal2 << 8) | tmpVal; 9427640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) tmpVal; 9437640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9447640caaf912a7eefacc3e2108c5afd70f7b072a4noda // don't set application id 9457640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (tmpVal2 == 0x2f) arr[index + 1]++; 9467640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 9477640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // header string 9487640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < add - 1; i++) { 9497640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(127); 9507640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (tmpVal < 32) tmpVal= (32 + tmpVal); 9517640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) tmpVal; 9527640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9537640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) 0x0; 9547640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 9557640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9567640caaf912a7eefacc3e2108c5afd70f7b072a4noda 9577640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (LOCAL_LOGV) { 9587640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "field name index:" + index); 9597640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add); 9607640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (type != 2) { 9617640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = index; i< index + add; i++) { 9627640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[i])); 9637640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 9647640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9657640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 9667640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[index])); 9677640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 9687640caaf912a7eefacc3e2108c5afd70f7b072a4noda String str = new String(arr, index + 1, add - 2); 9697640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < str.length(); i++) { 9707640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(str.charAt(i)); 9717640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 9727640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9737640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9747640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print('\n'); 9757640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9767640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += add; 9777640caaf912a7eefacc3e2108c5afd70f7b072a4noda 9787640caaf912a7eefacc3e2108c5afd70f7b072a4noda 9797640caaf912a7eefacc3e2108c5afd70f7b072a4noda /* 9807640caaf912a7eefacc3e2108c5afd70f7b072a4noda * field value 9817640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 0: short int 9827640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 1: long int 9837640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 2: text 9847640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 3: uint 9857640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 9867640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (addAppid) { 9877640caaf912a7eefacc3e2108c5afd70f7b072a4noda type = 1; 9887640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 9897640caaf912a7eefacc3e2108c5afd70f7b072a4noda type = rd.nextInt(4); 9907640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 9917640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 9927640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short integer 9937640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1; 9947640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 9957640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 9967640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (addAppid) { 9977640caaf912a7eefacc3e2108c5afd70f7b072a4noda int bit = 1; 9987640caaf912a7eefacc3e2108c5afd70f7b072a4noda int topBit = 0; 9997640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10007640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < 31; i++) { 10017640caaf912a7eefacc3e2108c5afd70f7b072a4noda if ((mAppIdValue & bit) > 0) topBit = i; 10027640caaf912a7eefacc3e2108c5afd70f7b072a4noda bit = (bit << 1); 10037640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10047640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 2 + topBit/8; 10057640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 10067640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1 + rd.nextInt(29); 10077640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10087640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 10097640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 2: // header string 10107640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 2 + rd.nextInt(10); 10117640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 10127640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // uint32 10137640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 6; 10147640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10157640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (index + add >= len) break; 10167640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10177640caaf912a7eefacc3e2108c5afd70f7b072a4noda // fill field value 10187640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 10197640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short int 10207640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (0x80 | rd.nextInt(128)); 10217640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 10227640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 10237640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (addAppid) { 10247640caaf912a7eefacc3e2108c5afd70f7b072a4noda addAppid = false; 10257640caaf912a7eefacc3e2108c5afd70f7b072a4noda appIdAdded = true; 10267640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10277640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (add - 1); 10287640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = mAppIdValue; 10297640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = add; i > 1; i--) { 10307640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i - 1] = (byte) (tmpVal & 0xff); 10317640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = (tmpVal >> 8); 10327640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10337640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 10347640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (add - 1); 10357640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 1; i < add; i++) { 10367640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) rd.nextInt(255); 10377640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10387640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10397640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 10407640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 2:// header string 10417640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < add - 1; i++) { 10427640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(127); 10437640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (tmpVal < 32) tmpVal= (32 + tmpVal); 10447640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) tmpVal; 10457640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10467640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) 0x0; 10477640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 10487640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // header uvarint 10497640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) 31; 10507640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(0x0FFFFFFF); 10517640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1 + encodeUint32(tmpVal, null, index + 1); 10527640caaf912a7eefacc3e2108c5afd70f7b072a4noda encodeUint32(tmpVal, arr, index + 1); 10537640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 10547640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10557640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10567640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10577640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (LOCAL_LOGV) { 10587640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "field value index:" + index); 10597640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add); 10607640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (type != 2) { 10617640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = index; i< index + add; i++) { 10627640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[i])); 10637640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 10647640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10657640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 10667640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[index])); 10677640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 10687640caaf912a7eefacc3e2108c5afd70f7b072a4noda String str = new String(arr, index + 1, add - 2); 10697640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < str.length(); i++) { 10707640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(str.charAt(i)); 10717640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 10727640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10737640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10747640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print('\n'); 10757640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10767640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += add; 10777640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10787640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (noAppId) break; 10797640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10807640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10817640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, HexDump.dumpHexString(arr)); 10827640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 10837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10847640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 10857640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Generate Random WSP header with string application ID 10867640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 10877640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected void createRandomWspHeaderStrAppId(byte[] arr, Random rd, int headerStart, 10887640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean randomStr) { 10897640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10907640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean appIdAdded = false; 10917640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10927640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "random arr length:" + arr.length); 10937640caaf912a7eefacc3e2108c5afd70f7b072a4noda String typename[] = new String[] { "short int", "long int", "string", "uint32"}; 10947640caaf912a7eefacc3e2108c5afd70f7b072a4noda 10957640caaf912a7eefacc3e2108c5afd70f7b072a4noda while (!appIdAdded) { 10967640caaf912a7eefacc3e2108c5afd70f7b072a4noda int type; 10977640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = headerStart; 10987640caaf912a7eefacc3e2108c5afd70f7b072a4noda int len = arr.length; 10997640caaf912a7eefacc3e2108c5afd70f7b072a4noda int i; 11007640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean addAppid = false; 11017640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tmpVal = 0; 11027640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tmpVal2 = 0; 11037640caaf912a7eefacc3e2108c5afd70f7b072a4noda 11047640caaf912a7eefacc3e2108c5afd70f7b072a4noda while (true) { 11057640caaf912a7eefacc3e2108c5afd70f7b072a4noda int add; 11067640caaf912a7eefacc3e2108c5afd70f7b072a4noda 11077640caaf912a7eefacc3e2108c5afd70f7b072a4noda /* 11087640caaf912a7eefacc3e2108c5afd70f7b072a4noda * field name 11097640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 0: short int 11107640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 1: long int 11117640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 2: text 11127640caaf912a7eefacc3e2108c5afd70f7b072a4noda * (no uint for param value) 11137640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 11147640caaf912a7eefacc3e2108c5afd70f7b072a4noda type = rd.nextInt(3); 11157640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 11167640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short integer 11177640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (index > 100 && !appIdAdded) addAppid = true; 11187640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1; 11197640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 11207640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 11217640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1 + rd.nextInt(29); 11227640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 11237640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // header string 11247640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 2 + rd.nextInt(10); 11257640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 11267640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11277640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (index + add >= len) break; 11287640caaf912a7eefacc3e2108c5afd70f7b072a4noda 11297640caaf912a7eefacc3e2108c5afd70f7b072a4noda // fill header name 11307640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 11317640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short integer 11327640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (!addAppid) { 11337640caaf912a7eefacc3e2108c5afd70f7b072a4noda do { 11347640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (0x80 | rd.nextInt(128)); 11357640caaf912a7eefacc3e2108c5afd70f7b072a4noda } while (arr[index] == (byte) 0xaf); 11367640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 11377640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "appId added."); 11387640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) 0xaf; 11397640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11407640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 11417640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 11427640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (add - 1); 11437640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal2 = 0; 11447640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 1; i < add; i++) { 11457640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(255); 11467640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal2 = (tmpVal2 << 8) | tmpVal; 11477640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) tmpVal; 11487640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11497640caaf912a7eefacc3e2108c5afd70f7b072a4noda // don't set application id 11507640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (tmpVal2 == 0x2f) arr[index + 1]++; 11517640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 11527640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // header string 11537640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < add - 1; i++) { 11547640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(127); 11557640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (tmpVal < 32) tmpVal= (32 + tmpVal); 11567640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) tmpVal; 11577640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11587640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) 0x0; 11597640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 11607640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11617640caaf912a7eefacc3e2108c5afd70f7b072a4noda 11627640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (LOCAL_LOGV) { 11637640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "field name index:" + index); 11647640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add); 11657640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (type != 2) { 11667640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = index; i < index + add; i++) { 11677640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[i])); 11687640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 11697640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11707640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 11717640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[index])); 11727640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 11737640caaf912a7eefacc3e2108c5afd70f7b072a4noda String str = new String(arr, index + 1, add - 2); 11747640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < str.length(); i++) { 11757640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(str.charAt(i)); 11767640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 11777640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11787640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11797640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print('\n'); 11807640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11817640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += add; 11827640caaf912a7eefacc3e2108c5afd70f7b072a4noda 11837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 11847640caaf912a7eefacc3e2108c5afd70f7b072a4noda /* 11857640caaf912a7eefacc3e2108c5afd70f7b072a4noda * field value 11867640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 0: short int 11877640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 1: long int 11887640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 2: text 11897640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 3: uint 11907640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 11917640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (addAppid) { 11927640caaf912a7eefacc3e2108c5afd70f7b072a4noda type = 2; 11937640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 11947640caaf912a7eefacc3e2108c5afd70f7b072a4noda type = rd.nextInt(4); 11957640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 11967640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 11977640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short integer 11987640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1; 11997640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 12007640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 12017640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1 + rd.nextInt(29); 12027640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 12037640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 2: // header string 12047640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (addAppid) { 12057640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (randomStr) { 12067640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1 + rd.nextInt(10); 12077640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] randStr= new byte[add]; 12087640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < add; i++) { 12097640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(127); 12107640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (tmpVal < 32) tmpVal= (32 + tmpVal); 12117640caaf912a7eefacc3e2108c5afd70f7b072a4noda randStr[i] = (byte) tmpVal; 12127640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12137640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = new String(randStr); 12147640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12157640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = mAppIdName.length() + 1; 12167640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 12177640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 2 + rd.nextInt(10); 12187640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12197640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 12207640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // uint32 12217640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 6; 12227640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12237640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (index + add >= len) break; 12247640caaf912a7eefacc3e2108c5afd70f7b072a4noda 12257640caaf912a7eefacc3e2108c5afd70f7b072a4noda // fill field value 12267640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (type) { 12277640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 0: // header short int 12287640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (0x80 | rd.nextInt(128)); 12297640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 12307640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: // header long int 12317640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) (add - 1); 12327640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 1; i < add; i++) 12337640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) rd.nextInt(255); 12347640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 12357640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 2:// header string 12367640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (addAppid) { 12377640caaf912a7eefacc3e2108c5afd70f7b072a4noda addAppid = false; 12387640caaf912a7eefacc3e2108c5afd70f7b072a4noda appIdAdded = true; 12397640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < add - 1; i++) { 12407640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) (mAppIdName.charAt(i)); 12417640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12427640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mAppIdName added [" + mAppIdName + "]"); 12437640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 12447640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < add - 1; i++) { 12457640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(127); 12467640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (tmpVal < 32) tmpVal= (32 + tmpVal); 12477640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) tmpVal; 12487640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12497640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12507640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index + i] = (byte) 0x0; 12517640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 12527640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: // header uvarint 12537640caaf912a7eefacc3e2108c5afd70f7b072a4noda arr[index] = (byte) 31; 12547640caaf912a7eefacc3e2108c5afd70f7b072a4noda tmpVal = rd.nextInt(0x0FFFFFFF); 12557640caaf912a7eefacc3e2108c5afd70f7b072a4noda add = 1 + encodeUint32(tmpVal, null, index + 1); 12567640caaf912a7eefacc3e2108c5afd70f7b072a4noda encodeUint32(tmpVal, arr, index + 1); 12577640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 12587640caaf912a7eefacc3e2108c5afd70f7b072a4noda 12597640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12607640caaf912a7eefacc3e2108c5afd70f7b072a4noda 12617640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (LOCAL_LOGV) { 12627640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "field value index:" + index); 12637640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "type:" + typename[type] + ", add:" + add); 12647640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (type != 2) { 12657640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = index; i < index + add; i++) { 12667640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[i])); 12677640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 12687640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12697640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 12707640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(Integer.toHexString(0xff & arr[index])); 12717640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 12727640caaf912a7eefacc3e2108c5afd70f7b072a4noda String str = new String(arr, index + 1, add - 2); 12737640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < str.length(); i++) { 12747640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(str.charAt(i)); 12757640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print(' '); 12767640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12777640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12787640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.out.print('\n'); 12797640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12807640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += add; 12817640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12827640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 12847640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "headerStart = " + headerStart + ", mAppIdName = " + mAppIdName); 12857640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, HexDump.dumpHexString(arr)); 12867640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 12877640caaf912a7eefacc3e2108c5afd70f7b072a4noda 12887640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected byte[] createPDU(int testNum) { 12897640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] array = null; 12907640caaf912a7eefacc3e2108c5afd70f7b072a4noda // byte[] wsp = null; 12917640caaf912a7eefacc3e2108c5afd70f7b072a4noda 12927640caaf912a7eefacc3e2108c5afd70f7b072a4noda switch (testNum) { 12937640caaf912a7eefacc3e2108c5afd70f7b072a4noda // sample pdu 12947640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 1: 12957640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] array1 = { 12967640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x00, // TID 12977640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x06, // Type = wap push 12987640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x00, // Length to be set later. 12997640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13007640caaf912a7eefacc3e2108c5afd70f7b072a4noda // Content-Type 13017640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x03, (byte) 0x02, 13027640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) ((mContentTypeValue >> 8) & 0xff), 13037640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) (mContentTypeValue & 0xff), 13047640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13057640caaf912a7eefacc3e2108c5afd70f7b072a4noda // Application-id 13067640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xaf, (byte) 0x02, 13077640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) ((mAppIdValue >> 8) & 0xff), 13087640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) (mAppIdValue& 0xff) 13097640caaf912a7eefacc3e2108c5afd70f7b072a4noda }; 13107640caaf912a7eefacc3e2108c5afd70f7b072a4noda array1[2] = (byte) (array1.length - 3); 13117640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array1; 13127640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + 7; 13137640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array1.length; 13147640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 13157640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13167640caaf912a7eefacc3e2108c5afd70f7b072a4noda // invalid wsp header 13177640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 2: 13187640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] array2 = { 13197640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x00, // invalid data 13207640caaf912a7eefacc3e2108c5afd70f7b072a4noda }; 13217640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array2; 13227640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length; 13237640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array2.length; 13247640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 13257640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13267640caaf912a7eefacc3e2108c5afd70f7b072a4noda // random wsp header 13277640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 3: 13287640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 13297640caaf912a7eefacc3e2108c5afd70f7b072a4noda int arrSize = 150 + rd.nextInt(100); 13307640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] array3 = new byte[arrSize]; 13317640caaf912a7eefacc3e2108c5afd70f7b072a4noda int hdrEncodeLen; 13327640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13337640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[0] = (byte) 0x0; 13347640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[1] = (byte) 0x6; 13357640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length, null, 2); 13367640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2); 13377640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 2] = (byte) 0x3; 13387640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 3] = (byte) 0x2; 13397640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff); 13407640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff); 13417640caaf912a7eefacc3e2108c5afd70f7b072a4noda createRandomWspHeader(array3, rd, hdrEncodeLen + 6, false); 13427640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6; 13437640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array3.length; 13447640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13457640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue 13467640caaf912a7eefacc3e2108c5afd70f7b072a4noda + "(" + Integer.toHexString(mContentTypeValue) + ")"); 13477640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13487640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array3; 13497640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 13507640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13517640caaf912a7eefacc3e2108c5afd70f7b072a4noda // random wsp header w/o appid 13527640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 4: 13537640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd = new Random(); 13547640caaf912a7eefacc3e2108c5afd70f7b072a4noda arrSize = 150 + rd.nextInt(100); 13557640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3 = new byte[arrSize]; 13567640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13577640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[0] = (byte) 0x0; 13587640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[1] = (byte) 0x6; 13597640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length, null, 2); 13607640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2); 13617640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 2] = (byte) 0x3; 13627640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 3] = (byte) 0x2; 13637640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff); 13647640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff); 13657640caaf912a7eefacc3e2108c5afd70f7b072a4noda createRandomWspHeader(array3, rd, hdrEncodeLen + 6, true); 13667640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6; 13677640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array3.length; 13687640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13697640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue 13707640caaf912a7eefacc3e2108c5afd70f7b072a4noda + "(" + Integer.toHexString(mContentTypeValue) + ")"); 13717640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13727640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array3; 13737640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 13747640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13757640caaf912a7eefacc3e2108c5afd70f7b072a4noda // random wsp header w/ random appid string 13767640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 5: 13777640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd = new Random(); 13787640caaf912a7eefacc3e2108c5afd70f7b072a4noda arrSize = 150 + rd.nextInt(100); 13797640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3 = new byte[arrSize]; 13807640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13817640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[0] = (byte) 0x0; 13827640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[1] = (byte) 0x6; 13837640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length, null, 2); 13847640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2); 13857640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 2] = (byte) 0x3; 13867640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 3] = (byte) 0x2; 13877640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff); 13887640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff); 13897640caaf912a7eefacc3e2108c5afd70f7b072a4noda createRandomWspHeaderStrAppId(array3, rd, hdrEncodeLen + 6, true); 13907640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6; 13917640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array3.length; 13927640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13937640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue 13947640caaf912a7eefacc3e2108c5afd70f7b072a4noda + "(" + Integer.toHexString(mContentTypeValue) + ")"); 13957640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13967640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array3; 13977640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 13987640caaf912a7eefacc3e2108c5afd70f7b072a4noda 13997640caaf912a7eefacc3e2108c5afd70f7b072a4noda // random wsp header w/ OMA appid string 14007640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 6: 14017640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd = new Random(); 14027640caaf912a7eefacc3e2108c5afd70f7b072a4noda arrSize = 150 + rd.nextInt(100); 14037640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3 = new byte[arrSize]; 14047640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14057640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[0] = (byte) 0x0; 14067640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[1] = (byte) 0x6; 14077640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length, null, 2); 14087640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2); 14097640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 2] = (byte) 0x3; 14107640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 3] = (byte) 0x2; 14117640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 4] = (byte) ((mContentTypeValue >> 8) & 0xff); 14127640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[hdrEncodeLen + 5] = (byte) (mContentTypeValue & 0xff); 14137640caaf912a7eefacc3e2108c5afd70f7b072a4noda createRandomWspHeaderStrAppId(array3, rd, hdrEncodeLen + 6, false); 14147640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length + hdrEncodeLen + 6; 14157640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array3.length; 14167640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14177640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeValue = " + mContentTypeValue 14187640caaf912a7eefacc3e2108c5afd70f7b072a4noda + "(" + Integer.toHexString(mContentTypeValue) + ")"); 14197640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14207640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array3; 14217640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 14227640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14237640caaf912a7eefacc3e2108c5afd70f7b072a4noda // random wsp header w/ OMA content type 14247640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 7: 14257640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd = new Random(); 14267640caaf912a7eefacc3e2108c5afd70f7b072a4noda arrSize = 150 + rd.nextInt(100); 14277640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3 = new byte[arrSize]; 14287640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14297640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[0] = (byte) 0x0; 14307640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[1] = (byte) 0x6; 14317640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length, null, 2); 14327640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2); 14337640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14347640caaf912a7eefacc3e2108c5afd70f7b072a4noda // encode content type 14357640caaf912a7eefacc3e2108c5afd70f7b072a4noda int contentLen = mContentTypeName.length(); 14367640caaf912a7eefacc3e2108c5afd70f7b072a4noda int next = 2 + hdrEncodeLen; 14377640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspContentTypeStart = mGsmHeader.length + mUserDataHeader.length + next; 14387640caaf912a7eefacc3e2108c5afd70f7b072a4noda // next += encodeUint32(contentLen, array3, next); 14397640caaf912a7eefacc3e2108c5afd70f7b072a4noda int i; 14407640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeName = " + mContentTypeName 14417640caaf912a7eefacc3e2108c5afd70f7b072a4noda + ", contentLen = " + contentLen); 14427640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14437640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < contentLen; i++) { 14447640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[next + i] = (byte) mContentTypeName.charAt(i); 14457640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 14467640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[next + i] = (byte) 0x0; 14477640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14487640caaf912a7eefacc3e2108c5afd70f7b072a4noda createRandomWspHeader(array3, rd, next + contentLen + 1, false); 14497640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length 14507640caaf912a7eefacc3e2108c5afd70f7b072a4noda + next + contentLen + 1; 14517640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array3.length; 14527640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14537640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array3; 14547640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 14557640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14567640caaf912a7eefacc3e2108c5afd70f7b072a4noda // random wsp header w/ OMA content type, OMA app ID 14577640caaf912a7eefacc3e2108c5afd70f7b072a4noda case 8: 14587640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd = new Random(); 14597640caaf912a7eefacc3e2108c5afd70f7b072a4noda arrSize = 150 + rd.nextInt(100); 14607640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3 = new byte[arrSize]; 14617640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14627640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[0] = (byte) 0x0; 14637640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[1] = (byte) 0x6; 14647640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length, null, 2); 14657640caaf912a7eefacc3e2108c5afd70f7b072a4noda hdrEncodeLen = encodeUint32(array3.length - hdrEncodeLen - 2, array3, 2); 14667640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14677640caaf912a7eefacc3e2108c5afd70f7b072a4noda // encode content type 14687640caaf912a7eefacc3e2108c5afd70f7b072a4noda contentLen = mContentTypeName.length(); 14697640caaf912a7eefacc3e2108c5afd70f7b072a4noda next = 2 + hdrEncodeLen; 14707640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspContentTypeStart = mGsmHeader.length + mUserDataHeader.length + next; 14717640caaf912a7eefacc3e2108c5afd70f7b072a4noda // next += encodeUint32(contentLen, array3, next); 14727640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeName = " + mContentTypeName 14737640caaf912a7eefacc3e2108c5afd70f7b072a4noda + ", contentLen = " + contentLen); 14747640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14757640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < contentLen; i++) { 14767640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[next + i] = (byte) mContentTypeName.charAt(i); 14777640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 14787640caaf912a7eefacc3e2108c5afd70f7b072a4noda array3[next + i] = (byte) 0x0; 14797640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14807640caaf912a7eefacc3e2108c5afd70f7b072a4noda createRandomWspHeaderStrAppId(array3, rd, next + contentLen + 1, false); 14817640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart = mGsmHeader.length + mUserDataHeader.length 14827640caaf912a7eefacc3e2108c5afd70f7b072a4noda + next + contentLen + 1; 14837640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderLen = array3.length; 14847640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14857640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeader = array3; 14867640caaf912a7eefacc3e2108c5afd70f7b072a4noda break; 14877640caaf912a7eefacc3e2108c5afd70f7b072a4noda 14887640caaf912a7eefacc3e2108c5afd70f7b072a4noda default: 14897640caaf912a7eefacc3e2108c5afd70f7b072a4noda return null; 14907640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 14917640caaf912a7eefacc3e2108c5afd70f7b072a4noda array = new byte[mGsmHeader.length + mUserDataHeader.length + mWspHeader.length 14927640caaf912a7eefacc3e2108c5afd70f7b072a4noda + mMessageBody.length]; 14937640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(mGsmHeader, 0, array, 0, mGsmHeader.length); 14947640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(mUserDataHeader, 0, array, 14957640caaf912a7eefacc3e2108c5afd70f7b072a4noda mGsmHeader.length, mUserDataHeader.length); 14967640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(mWspHeader, 0, array, 14977640caaf912a7eefacc3e2108c5afd70f7b072a4noda mGsmHeader.length + mUserDataHeader.length, mWspHeader.length); 14987640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(mMessageBody, 0, array, 1499790ac852b365ab77a895da9b48f925caf8fde729Tom Taylor mGsmHeader.length + mUserDataHeader.length + mWspHeader.length, 15007640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody.length); 15017640caaf912a7eefacc3e2108c5afd70f7b072a4noda return array; 15027640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15037640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 15047640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15057640caaf912a7eefacc3e2108c5afd70f7b072a4noda Intent createIntent(int pduType, int tranId) { 15067640caaf912a7eefacc3e2108c5afd70f7b072a4noda Intent intent = new Intent(); 15077640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("transactionId", tranId); 15087640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("pduType", pduType); 15097640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("header", mGsmHeader); 15107640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("data", mMessageBody); 15117640caaf912a7eefacc3e2108c5afd70f7b072a4noda // intent.putExtra("contentTypeParameters", null); 15127640caaf912a7eefacc3e2108c5afd70f7b072a4noda return intent; 15137640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 15147640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15157640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 15167640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Message processing test, start activity 15177640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 15187640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testProcessMsg1() { 15197640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(1); 15207640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerLen = pdu.length - 15217640caaf912a7eefacc3e2108c5afd70f7b072a4noda (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length); 15227640caaf912a7eefacc3e2108c5afd70f7b072a4noda int pduType = 6; 15237640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tranId = 0; 15247640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalPackageName = mPackageName; 15257640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 15267640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15277640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 15287640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15297640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverActivity"; 15307640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15317640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 15327640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 15337640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 15347640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 15357640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_ACTIVITY, false, false); 15367640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15377640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue((iwapman.processMessage( 15387640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 15397640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 15407640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)) 15417640caaf912a7eefacc3e2108c5afd70f7b072a4noda & WapPushManagerParams.MESSAGE_HANDLED) == 15427640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.MESSAGE_HANDLED); 15437640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15447640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 15457640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 15467640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 15477640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15487640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 15497640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 15507640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 15517640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15527640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName = originalPackageName; 15537640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 15547640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 15557640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15567640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 15577640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Message processing test, start service 15587640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 15597640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testProcessMsg2() { 15607640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(1); 15617640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerLen = pdu.length - (mGsmHeader.length + 15627640caaf912a7eefacc3e2108c5afd70f7b072a4noda mUserDataHeader.length + mMessageBody.length); 15637640caaf912a7eefacc3e2108c5afd70f7b072a4noda int pduType = 6; 15647640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tranId = 0; 15657640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalPackageName = mPackageName; 15667640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 15677640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15687640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 15697640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15707640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverService"; 15717640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15727640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 15737640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 15747640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15757640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 15767640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 15777640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, false, false); 15787640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15797640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue((iwapman.processMessage( 15807640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 15817640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 15827640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)) 15837640caaf912a7eefacc3e2108c5afd70f7b072a4noda & WapPushManagerParams.MESSAGE_HANDLED) == 15847640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.MESSAGE_HANDLED); 15857640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15867640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 15877640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 15887640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 15897640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15907640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 15917640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 15927640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 15937640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15947640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName = originalPackageName; 15957640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 15967640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 15977640caaf912a7eefacc3e2108c5afd70f7b072a4noda 15987640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 15997640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Message processing test, no signature 16007640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 16017640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testProcessMsg3() { 16027640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(1); 16037640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerLen = pdu.length - 16047640caaf912a7eefacc3e2108c5afd70f7b072a4noda (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length); 16057640caaf912a7eefacc3e2108c5afd70f7b072a4noda int pduType = 6; 16067640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tranId = 0; 16077640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalPackageName = mPackageName; 16087640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 16097640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16107640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 16117640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16127640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName = "com.android.development"; 16137640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.development.Development"; 16147640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16157640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 16167640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 16177640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16187640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 16197640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 16207640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, true, false); 16217640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16227640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse((iwapman.processMessage( 16237640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 16247640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 16257640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)) 16267640caaf912a7eefacc3e2108c5afd70f7b072a4noda & WapPushManagerParams.MESSAGE_HANDLED) == 16277640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.MESSAGE_HANDLED); 16287640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16297640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 16307640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 16317640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 16327640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16337640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 16347640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 16357640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 16367640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16377640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName = originalPackageName; 16387640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 16397640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 16407640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16417640caaf912a7eefacc3e2108c5afd70f7b072a4noda IDataVerify getVerifyInterface() { 16427640caaf912a7eefacc3e2108c5afd70f7b072a4noda while (mIVerify == null) { 16437640caaf912a7eefacc3e2108c5afd70f7b072a4noda // wait for the activity receive data. 16447640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 16457640caaf912a7eefacc3e2108c5afd70f7b072a4noda Thread.sleep(TIME_WAIT); 16467640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (InterruptedException e) {} 16477640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 16487640caaf912a7eefacc3e2108c5afd70f7b072a4noda return mIVerify; 16497640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 16507640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16517640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16527640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 16537640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Message processing test, received body data verification test 16547640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 16557640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testProcessMsg4() { 16567640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] originalMessageBody = mMessageBody; 16577640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = new byte[] { 16587640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xee, 16597640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xff, 16607640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xee, 16617640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xff, 16627640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xee, 16637640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xff, 16647640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xee, 16657640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xff, 16667640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xee, 16677640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xff, 16687640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xee, 16697640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xff, 16707640caaf912a7eefacc3e2108c5afd70f7b072a4noda }; 16717640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16727640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(1); 16737640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerLen = pdu.length - 16747640caaf912a7eefacc3e2108c5afd70f7b072a4noda (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length); 16757640caaf912a7eefacc3e2108c5afd70f7b072a4noda int pduType = 6; 16767640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tranId = 0; 16777640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalPackageName = mPackageName; 16787640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 16797640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16807640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 16817640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 16827640caaf912a7eefacc3e2108c5afd70f7b072a4noda IDataVerify dataverify = getVerifyInterface(); 16837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16847640caaf912a7eefacc3e2108c5afd70f7b072a4noda dataverify.resetData(); 16857640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16867640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 16877640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverActivity"; 16887640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 16897640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 16907640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_ACTIVITY, false, false); 16917640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16927640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.processMessage( 16937640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 16947640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 16957640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)); 16967640caaf912a7eefacc3e2108c5afd70f7b072a4noda 16977640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 16987640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 16997640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 17007640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17017640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(mMessageBody)); 17027640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17037640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 17047640caaf912a7eefacc3e2108c5afd70f7b072a4noda dataverify.resetData(); 17057640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverService"; 17067640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = new byte[] { 17077640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xaa, 17087640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xbb, 17097640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x11, 17107640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x22, 17117640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xaa, 17127640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xbb, 17137640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x11, 17147640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x22, 17157640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xaa, 17167640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xbb, 17177640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x11, 17187640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x22, 17197640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xaa, 17207640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xbb, 17217640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x11, 17227640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x22, 17237640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xaa, 17247640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xbb, 17257640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x11, 17267640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x22, 17277640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xaa, 17287640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0xbb, 17297640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x11, 17307640caaf912a7eefacc3e2108c5afd70f7b072a4noda (byte) 0x22, 17317640caaf912a7eefacc3e2108c5afd70f7b072a4noda }; 17327640caaf912a7eefacc3e2108c5afd70f7b072a4noda pdu = createPDU(1); 17337640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 17347640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 17357640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, false, false); 17367640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17377640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.processMessage( 17387640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 17397640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 17407640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)); 17417640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17427640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 17437640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 17447640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 17457640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17467640caaf912a7eefacc3e2108c5afd70f7b072a4noda // Log.d(LOG_TAG, HexDump.dumpHexString(mMessageBody)); 17477640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(mMessageBody)); 17487640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 17497640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 17507640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 17517640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17527640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName = originalPackageName; 17537640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 17547640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = originalMessageBody; 17557640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 17567640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17577640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 17587640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Message processing test, send invalid sms data 17597640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 17607640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testProcessMsg5() { 17617640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(2); 17627640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerLen = pdu.length - 17637640caaf912a7eefacc3e2108c5afd70f7b072a4noda (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length); 17647640caaf912a7eefacc3e2108c5afd70f7b072a4noda int pduType = 6; 17657640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tranId = 0; 17667640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalPackageName = mPackageName; 17677640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 17687640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17697640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 17707640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17717640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverActivity"; 17727640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17737640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 17747640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 17757640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 17767640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 17777640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_ACTIVITY, false, false); 17787640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17797640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue((iwapman.processMessage( 17807640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 17817640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 17827640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)) 17837640caaf912a7eefacc3e2108c5afd70f7b072a4noda & WapPushManagerParams.MESSAGE_HANDLED) == 17847640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.MESSAGE_HANDLED); 17857640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17867640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 17877640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 17887640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 17897640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17907640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 17917640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 17927640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 17937640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17947640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName = originalPackageName; 17957640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 17967640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 17977640caaf912a7eefacc3e2108c5afd70f7b072a4noda 17987640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 17997640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Message processing test, no receiver application 18007640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 18017640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testProcessMsg6() { 18027640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(1); 18037640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerLen = pdu.length - 18047640caaf912a7eefacc3e2108c5afd70f7b072a4noda (mGsmHeader.length + mUserDataHeader.length + mMessageBody.length); 18057640caaf912a7eefacc3e2108c5afd70f7b072a4noda int pduType = 6; 18067640caaf912a7eefacc3e2108c5afd70f7b072a4noda int tranId = 0; 18077640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalPackageName = mPackageName; 18087640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 18097640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18107640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 18117640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18127640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.NoReceiver"; 18137640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18147640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 18157640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 18167640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 18177640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 18187640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_ACTIVITY, false, false); 18197640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18207640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse((iwapman.processMessage( 18217640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 18227640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 18237640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)) 18247640caaf912a7eefacc3e2108c5afd70f7b072a4noda & WapPushManagerParams.MESSAGE_HANDLED) == 18257640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.MESSAGE_HANDLED); 18267640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18277640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 18287640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 18297640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 18307640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18317640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 18327640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 18337640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName, 18347640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, false, false); 18357640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18367640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse((iwapman.processMessage( 18377640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mAppIdValue), 18387640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), 18397640caaf912a7eefacc3e2108c5afd70f7b072a4noda createIntent(pduType, tranId)) 18407640caaf912a7eefacc3e2108c5afd70f7b072a4noda & WapPushManagerParams.MESSAGE_HANDLED) == 18417640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.MESSAGE_HANDLED); 18427640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18437640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 18447640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 18457640caaf912a7eefacc3e2108c5afd70f7b072a4noda Integer.toString(mContentTypeValue), mPackageName, mClassName); 18467640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18477640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 18487640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(false); 18497640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 18507640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18517640caaf912a7eefacc3e2108c5afd70f7b072a4noda mPackageName = originalPackageName; 18527640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 18537640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 18547640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18557640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 18567640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WspTypeDecoder test, normal pdu 18577640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 18587640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDecoder1() { 18597640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 18607640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 18617640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 18627640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18637640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < 10; i++) { 18647640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = rd.nextInt(0xFFFF); 18657640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(1); 18667640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 18677640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18687640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.seekXWapApplicationId(mWspHeaderStart, 18697640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart + mWspHeaderLen - 1); 18707640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 18717640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18727640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = (int) pduDecoder.getValue32(); 18737640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.decodeXWapApplicationId(index); 18747640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 18757640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18767640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mAppIdValue: " + mAppIdValue 18777640caaf912a7eefacc3e2108c5afd70f7b072a4noda + ", val: " + pduDecoder.getValue32()); 18787640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(mAppIdValue == (int) pduDecoder.getValue32()); 18797640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 18807640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18817640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 18827640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 18837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18847640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 18857640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WspTypeDecoder test, no header 18867640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 18877640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDecoder2() { 18887640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 18897640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 18907640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 18917640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18927640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = rd.nextInt(0xFFFF); 18937640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(2); 18947640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 18957640caaf912a7eefacc3e2108c5afd70f7b072a4noda 18967640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.seekXWapApplicationId(mWspHeaderStart, 18977640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart + mWspHeaderLen - 1); 18987640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(res); 18997640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19007640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 19017640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 19027640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19037640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 19047640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WspTypeDecoder test, decode appid test 19057640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 19067640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDecoder3() { 19077640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 19087640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 19097640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 19107640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 19117640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19127640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < 100; i++) { 19137640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = rd.nextInt(0x0FFFFFFF); 19147640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = rd.nextInt(0x0FFF); 19157640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(3); 19167640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 19177640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19187640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.seekXWapApplicationId(mWspHeaderStart, 19197640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart + mWspHeaderLen - 1); 19207640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 19217640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19227640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = (int) pduDecoder.getValue32(); 19237640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.decodeXWapApplicationId(index); 19247640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 19257640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19267640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mAppIdValue: " + mAppIdValue 19277640caaf912a7eefacc3e2108c5afd70f7b072a4noda + ", val: " + pduDecoder.getValue32()); 19287640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(mAppIdValue == (int) pduDecoder.getValue32()); 19297640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 19307640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19317640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 19327640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 19337640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 19347640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19357640caaf912a7eefacc3e2108c5afd70f7b072a4noda /* 19367640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testEnc() { 19377640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] arr = new byte[20]; 19387640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = 0; 19397640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += encodeUint32(0x87a5, arr, index); 19407640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += encodeUint32(0x1, arr, index); 19417640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += encodeUint32(0x9b, arr, index); 19427640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += encodeUint32(0x10, arr, index); 19437640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += encodeUint32(0xe0887, arr, index); 19447640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += encodeUint32(0x791a23d0, arr, index); 19457640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19467640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, HexDump.dumpHexString(arr)); 19477640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 19487640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 19497640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19507640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 19517640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WspTypeDecoder test, no appid test 19527640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 19537640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDecoder4() { 19547640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 19557640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 19567640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 19577640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 19587640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19597640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < 100; i++) { 19607640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = rd.nextInt(0x0FFFFFFF); 19617640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = rd.nextInt(0x0FFF); 19627640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(4); 19637640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 19647640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19657640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.seekXWapApplicationId(mWspHeaderStart, 19667640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart + mWspHeaderLen - 1); 19677640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertFalse(res); 19687640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19697640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 19707640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19717640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 19727640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 19737640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 19747640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19757640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 19767640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WspTypeDecoder test, decode string appid test 19777640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 19787640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDecoder5() { 19797640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 19807640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 19817640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 19827640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 19837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19847640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < 10; i++) { 19857640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = rd.nextInt(0x0FFFFFFF); 19867640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = rd.nextInt(0x0FFF); 19877640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(5); 19887640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 19897640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19907640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.seekXWapApplicationId(mWspHeaderStart, 19917640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart + mWspHeaderLen - 1); 19927640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 19937640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19947640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = (int) pduDecoder.getValue32(); 19957640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.decodeXWapApplicationId(index); 19967640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 19977640caaf912a7eefacc3e2108c5afd70f7b072a4noda 19987640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mAppIdValue: [" + mAppIdName + "], val: [" 19997640caaf912a7eefacc3e2108c5afd70f7b072a4noda + pduDecoder.getValueString() + "]"); 20007640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(mAppIdName.equals(pduDecoder.getValueString())); 20017640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20027640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20037640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 20047640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 20057640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20067640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20077640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 20087640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WspTypeDecoder test, decode string appid test 20097640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 20107640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDecoder6() { 20117640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 20127640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 20137640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 20147640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 20157640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20167640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < OMA_APPLICATION_ID_NAMES.length; i++) { 20177640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = OMA_APPLICATION_ID_NAMES[i]; 20187640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = rd.nextInt(0x0FFF); 20197640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(6); 20207640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 20217640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20227640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.seekXWapApplicationId(mWspHeaderStart, 20237640caaf912a7eefacc3e2108c5afd70f7b072a4noda mWspHeaderStart + mWspHeaderLen - 1); 20247640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 20257640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20267640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = (int) pduDecoder.getValue32(); 20277640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.decodeXWapApplicationId(index); 20287640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 20297640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20307640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mAppIdValue: [" + mAppIdName + "], val: [" 20317640caaf912a7eefacc3e2108c5afd70f7b072a4noda + pduDecoder.getValueString() + "]"); 20327640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(mAppIdName.equals(pduDecoder.getValueString())); 20337640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20347640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20357640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 20367640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 20377640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20387640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20397640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 20407640caaf912a7eefacc3e2108c5afd70f7b072a4noda * WspTypeDecoder test, decode OMA content type 20417640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 20427640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testDecoder7() { 20437640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 20447640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 20457640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 20467640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 20477640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20487640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < OMA_CONTENT_TYPE_NAMES.length; i++) { 20497640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = OMA_CONTENT_TYPE_NAMES[i]; 20507640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(7); 20517640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 20527640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20537640caaf912a7eefacc3e2108c5afd70f7b072a4noda res = pduDecoder.decodeContentType(mWspContentTypeStart); 20547640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(res); 20557640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20567640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeName: [" + mContentTypeName + "], val: [" 20577640caaf912a7eefacc3e2108c5afd70f7b072a4noda + pduDecoder.getValueString() + "]"); 20587640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(mContentTypeName.equals(pduDecoder.getValueString())); 20597640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20607640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20617640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 20627640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 20637640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20647640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20657640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20667640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 20677640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Copied from WapPushOverSms. 20687640caaf912a7eefacc3e2108c5afd70f7b072a4noda * The code flow is not changed from the original. 20697640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 20707640caaf912a7eefacc3e2108c5afd70f7b072a4noda public int dispatchWapPdu(byte[] pdu, IWapPushManager wapPushMan) { 20717640caaf912a7eefacc3e2108c5afd70f7b072a4noda 207243a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.d(LOG_TAG, "Rx: " + IccUtils.bytesToHexString(pdu)); 20737640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20747640caaf912a7eefacc3e2108c5afd70f7b072a4noda int index = 0; 20757640caaf912a7eefacc3e2108c5afd70f7b072a4noda int transactionId = pdu[index++] & 0xFF; 20767640caaf912a7eefacc3e2108c5afd70f7b072a4noda int pduType = pdu[index++] & 0xFF; 20777640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerLength = 0; 20787640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20797640caaf912a7eefacc3e2108c5afd70f7b072a4noda if ((pduType != WspTypeDecoder.PDU_TYPE_PUSH) && 20807640caaf912a7eefacc3e2108c5afd70f7b072a4noda (pduType != WspTypeDecoder.PDU_TYPE_CONFIRMED_PUSH)) { 208143a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.w(LOG_TAG, "Received non-PUSH WAP PDU. Type = " + pduType); 20827640caaf912a7eefacc3e2108c5afd70f7b072a4noda return Intents.RESULT_SMS_HANDLED; 20837640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20847640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20857640caaf912a7eefacc3e2108c5afd70f7b072a4noda WspTypeDecoder pduDecoder = new WspTypeDecoder(pdu); 20867640caaf912a7eefacc3e2108c5afd70f7b072a4noda 20877640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 20887640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Parse HeaderLen(unsigned integer). 20897640caaf912a7eefacc3e2108c5afd70f7b072a4noda * From wap-230-wsp-20010705-a section 8.1.2 20907640caaf912a7eefacc3e2108c5afd70f7b072a4noda * The maximum size of a uintvar is 32 bits. 20917640caaf912a7eefacc3e2108c5afd70f7b072a4noda * So it will be encoded in no more than 5 octets. 20927640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 20937640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (pduDecoder.decodeUintvarInteger(index) == false) { 209443a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.w(LOG_TAG, "Received PDU. Header Length error."); 20957640caaf912a7eefacc3e2108c5afd70f7b072a4noda return Intents.RESULT_SMS_GENERIC_ERROR; 20967640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 20977640caaf912a7eefacc3e2108c5afd70f7b072a4noda headerLength = (int) pduDecoder.getValue32(); 20987640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += pduDecoder.getDecodedDataLength(); 20997640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21007640caaf912a7eefacc3e2108c5afd70f7b072a4noda int headerStartIndex = index; 21017640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21027640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 21037640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Parse Content-Type. 21047640caaf912a7eefacc3e2108c5afd70f7b072a4noda * From wap-230-wsp-20010705-a section 8.4.2.24 21057640caaf912a7eefacc3e2108c5afd70f7b072a4noda * 21067640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Content-type-value = Constrained-media | Content-general-form 21077640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Content-general-form = Value-length Media-type 21087640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Media-type = (Well-known-media | Extension-Media) *(Parameter) 21097640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Value-length = Short-length | (Length-quote Length) 21107640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Short-length = <Any octet 0-30> (octet <= WAP_PDU_SHORT_LENGTH_MAX) 21117640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Length-quote = <Octet 31> (WAP_PDU_LENGTH_QUOTE) 21127640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Length = Uintvar-integer 21137640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 21147640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (pduDecoder.decodeContentType(index) == false) { 211543a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.w(LOG_TAG, "Received PDU. Header Content-Type error."); 21167640caaf912a7eefacc3e2108c5afd70f7b072a4noda return Intents.RESULT_SMS_GENERIC_ERROR; 21177640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21187640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21197640caaf912a7eefacc3e2108c5afd70f7b072a4noda String mimeType = pduDecoder.getValueString(); 21207640caaf912a7eefacc3e2108c5afd70f7b072a4noda long binaryContentType = pduDecoder.getValue32(); 21217640caaf912a7eefacc3e2108c5afd70f7b072a4noda index += pduDecoder.getDecodedDataLength(); 21227640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21237640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] header = new byte[headerLength]; 21247640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(pdu, headerStartIndex, header, 0, header.length); 21257640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21267640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] intentData; 21277640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21287640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (mimeType != null && mimeType.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) { 21297640caaf912a7eefacc3e2108c5afd70f7b072a4noda intentData = pdu; 21307640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 21317640caaf912a7eefacc3e2108c5afd70f7b072a4noda int dataIndex = headerStartIndex + headerLength; 21327640caaf912a7eefacc3e2108c5afd70f7b072a4noda intentData = new byte[pdu.length - dataIndex]; 21337640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(pdu, dataIndex, intentData, 0, intentData.length); 21347640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21357640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21367640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 21377640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Seek for application ID field in WSP header. 21387640caaf912a7eefacc3e2108c5afd70f7b072a4noda * If application ID is found, WapPushManager substitute the message 21397640caaf912a7eefacc3e2108c5afd70f7b072a4noda * processing. Since WapPushManager is optional module, if WapPushManager 21407640caaf912a7eefacc3e2108c5afd70f7b072a4noda * is not found, legacy message processing will be continued. 21417640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 21427640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (pduDecoder.seekXWapApplicationId(index, index + headerLength - 1)) { 21437640caaf912a7eefacc3e2108c5afd70f7b072a4noda index = (int) pduDecoder.getValue32(); 21447640caaf912a7eefacc3e2108c5afd70f7b072a4noda pduDecoder.decodeXWapApplicationId(index); 21457640caaf912a7eefacc3e2108c5afd70f7b072a4noda String wapAppId = pduDecoder.getValueString(); 21467640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (wapAppId == null) { 21477640caaf912a7eefacc3e2108c5afd70f7b072a4noda wapAppId = Integer.toString((int) pduDecoder.getValue32()); 21487640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21497640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21507640caaf912a7eefacc3e2108c5afd70f7b072a4noda String contentType = ((mimeType == null) ? 21517640caaf912a7eefacc3e2108c5afd70f7b072a4noda Long.toString(binaryContentType) : mimeType); 215243a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.v(LOG_TAG, "appid found: " + wapAppId + ":" + contentType); 21537640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21547640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 21557640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean processFurther = true; 21567640caaf912a7eefacc3e2108c5afd70f7b072a4noda // IWapPushManager wapPushMan = mWapConn.getWapPushManager(); 21577640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (wapPushMan == null) { 215843a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.w(LOG_TAG, "wap push manager not found!"); 21597640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 21607640caaf912a7eefacc3e2108c5afd70f7b072a4noda Intent intent = new Intent(); 21617640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("transactionId", transactionId); 21627640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("pduType", pduType); 21637640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("header", header); 21647640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("data", intentData); 21657640caaf912a7eefacc3e2108c5afd70f7b072a4noda intent.putExtra("contentTypeParameters", 21667640caaf912a7eefacc3e2108c5afd70f7b072a4noda pduDecoder.getContentParameters()); 21677640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21687640caaf912a7eefacc3e2108c5afd70f7b072a4noda int procRet = wapPushMan.processMessage(wapAppId, contentType, intent); 216943a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.v(LOG_TAG, "procRet:" + procRet); 21707640caaf912a7eefacc3e2108c5afd70f7b072a4noda if ((procRet & WapPushManagerParams.MESSAGE_HANDLED) > 0 21717640caaf912a7eefacc3e2108c5afd70f7b072a4noda && (procRet & WapPushManagerParams.FURTHER_PROCESSING) == 0) { 21727640caaf912a7eefacc3e2108c5afd70f7b072a4noda processFurther = false; 21737640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21747640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21757640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (!processFurther) { 21767640caaf912a7eefacc3e2108c5afd70f7b072a4noda return Intents.RESULT_SMS_HANDLED; 21777640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21787640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 217943a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.w(LOG_TAG, "remote func failed..."); 21807640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21817640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 218243a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) Log.v(LOG_TAG, "fall back to existing handler"); 21837640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21847640caaf912a7eefacc3e2108c5afd70f7b072a4noda return Activity.RESULT_OK; 21857640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21867640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21877640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected byte[] retrieveWspBody() { 21887640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] array = new byte[mWspHeader.length + mMessageBody.length]; 21897640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21907640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(mWspHeader, 0, array, 0, mWspHeader.length); 21917640caaf912a7eefacc3e2108c5afd70f7b072a4noda System.arraycopy(mMessageBody, 0, array, mWspHeader.length, mMessageBody.length); 21927640caaf912a7eefacc3e2108c5afd70f7b072a4noda return array; 21937640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 21947640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21957640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected String getContentTypeName(int ctypeVal) { 21967640caaf912a7eefacc3e2108c5afd70f7b072a4noda int i; 21977640caaf912a7eefacc3e2108c5afd70f7b072a4noda 21987640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < OMA_CONTENT_TYPE_VALUES.length; i++) { 21997640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (ctypeVal == OMA_CONTENT_TYPE_VALUES[i]) { 22007640caaf912a7eefacc3e2108c5afd70f7b072a4noda return OMA_CONTENT_TYPE_NAMES[i]; 22017640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22027640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22037640caaf912a7eefacc3e2108c5afd70f7b072a4noda return null; 22047640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22057640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22067640caaf912a7eefacc3e2108c5afd70f7b072a4noda protected boolean isContentTypeMapped(int ctypeVal) { 22077640caaf912a7eefacc3e2108c5afd70f7b072a4noda int i; 22087640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22097640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (i = 0; i < OMA_CONTENT_TYPE_VALUES.length; i++) { 22107640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (ctypeVal == OMA_CONTENT_TYPE_VALUES[i]) return true; 22117640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22127640caaf912a7eefacc3e2108c5afd70f7b072a4noda return false; 22137640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22147640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22157640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 22167640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Integration test 1, simple case 22177640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 22187640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testIntegration1() { 22197640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 22207640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 22217640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 22227640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 22237640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalContentTypeName = mContentTypeName; 22247640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 22257640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] originalMessageBody = mMessageBody; 22267640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 22277640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22287640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = new byte[100 + rd.nextInt(100)]; 22297640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd.nextBytes(mMessageBody); 22307640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22317640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(1); 22327640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] wappushPdu = retrieveWspBody(); 22337640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22347640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22357640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverActivity"; 22367640caaf912a7eefacc3e2108c5afd70f7b072a4noda // Phone dummy = new DummyPhone(getContext()); 22377640caaf912a7eefacc3e2108c5afd70f7b072a4noda // Phone gsm = PhoneFactory.getGsmPhone(); 22387640caaf912a7eefacc3e2108c5afd70f7b072a4noda // GSMPhone gsm = new GSMPhone(getContext(), new SimulatedCommands(), null, true); 22397640caaf912a7eefacc3e2108c5afd70f7b072a4noda // WapPushOverSms dispatcher = new WapPushOverSms(dummy, null); 22407640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22417640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 22427640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 22437640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 22447640caaf912a7eefacc3e2108c5afd70f7b072a4noda IDataVerify dataverify = getVerifyInterface(); 22457640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22467640caaf912a7eefacc3e2108c5afd70f7b072a4noda dataverify.resetData(); 22477640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22487640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (isContentTypeMapped(mContentTypeValue)) { 22497640caaf912a7eefacc3e2108c5afd70f7b072a4noda // content type is mapped 22507640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = getContentTypeName(mContentTypeValue); 22517640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeValue mapping " 22527640caaf912a7eefacc3e2108c5afd70f7b072a4noda + mContentTypeName + ":" + mContentTypeValue); 22537640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 22547640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = Integer.toString(mContentTypeValue); 22557640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22567640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 22577640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName, 22587640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_ACTIVITY, false, false); 22597640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22607640caaf912a7eefacc3e2108c5afd70f7b072a4noda dispatchWapPdu(wappushPdu, iwapman); 22617640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22627640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 22637640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 22647640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName); 22657640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22667640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(mMessageBody)); 22677640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 22687640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22697640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22707640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22717640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 22727640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 22737640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = originalContentTypeName; 22747640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 22757640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 22767640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = originalMessageBody; 22777640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 22787640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22797640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 22807640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Integration test 2, random mAppIdValue(int), all OMA content type 22817640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 22827640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testIntegration2() { 22837640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 22847640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 22857640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 22867640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 22877640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalContentTypeName = mContentTypeName; 22887640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 22897640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] originalMessageBody = mMessageBody; 22907640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 22917640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22927640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 22937640caaf912a7eefacc3e2108c5afd70f7b072a4noda IDataVerify dataverify = getVerifyInterface(); 22947640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverActivity"; 22957640caaf912a7eefacc3e2108c5afd70f7b072a4noda 22967640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < OMA_CONTENT_TYPE_NAMES.length; i++) { 22977640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = OMA_CONTENT_TYPE_NAMES[i]; 22987640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = rd.nextInt(0x0FFFFFFF); 22997640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23007640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = new byte[100 + rd.nextInt(100)]; 23017640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd.nextBytes(mMessageBody); 23027640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23037640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(7); 23047640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] wappushPdu = retrieveWspBody(); 23057640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23067640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 23077640caaf912a7eefacc3e2108c5afd70f7b072a4noda dataverify.resetData(); 23087640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 23097640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 23107640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName, 23117640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_ACTIVITY, false, false); 23127640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23137640caaf912a7eefacc3e2108c5afd70f7b072a4noda dispatchWapPdu(wappushPdu, iwapman); 23147640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23157640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 23167640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 23177640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName); 23187640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23197640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) { 23207640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(wappushPdu)); 23217640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 23227640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(mMessageBody)); 23237640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23247640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 23257640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23267640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23277640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23287640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23297640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 23307640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 23317640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = originalContentTypeName; 23327640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 23337640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 23347640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = originalMessageBody; 23357640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23367640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23377640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 23387640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Integration test 3, iterate OmaApplication ID, random binary content type 23397640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 23407640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testIntegration3() { 23417640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 23427640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 23437640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 23447640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 23457640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalContentTypeName = mContentTypeName; 23467640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 23477640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] originalMessageBody = mMessageBody; 23487640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 23497640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23507640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 23517640caaf912a7eefacc3e2108c5afd70f7b072a4noda IDataVerify dataverify = getVerifyInterface(); 23527640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverService"; 23537640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23547640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < OMA_APPLICATION_ID_NAMES.length; i++) { 23557640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = OMA_APPLICATION_ID_NAMES[i]; 23567640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = rd.nextInt(0x0FFF); 23577640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23587640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = new byte[100 + rd.nextInt(100)]; 23597640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd.nextBytes(mMessageBody); 23607640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23617640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(6); 23627640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] wappushPdu = retrieveWspBody(); 23637640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23647640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 23657640caaf912a7eefacc3e2108c5afd70f7b072a4noda dataverify.resetData(); 23667640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 23677640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (isContentTypeMapped(mContentTypeValue)) { 23687640caaf912a7eefacc3e2108c5afd70f7b072a4noda // content type is mapped to integer value 23697640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = getContentTypeName(mContentTypeValue); 23707640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeValue mapping " 23717640caaf912a7eefacc3e2108c5afd70f7b072a4noda + mContentTypeValue + ":" + mContentTypeName); 23727640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 23737640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = Integer.toString(mContentTypeValue); 23747640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23757640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23767640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(mAppIdName, 23777640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName, 23787640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, false, false); 23797640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23807640caaf912a7eefacc3e2108c5afd70f7b072a4noda dispatchWapPdu(wappushPdu, iwapman); 23817640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23827640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 23837640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(mAppIdName, 23847640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName); 23857640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23867640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) { 23877640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(wappushPdu)); 23887640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 23897640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(mMessageBody)); 23907640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23917640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 23927640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23937640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 23947640caaf912a7eefacc3e2108c5afd70f7b072a4noda 23957640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 23967640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 23977640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = originalContentTypeName; 23987640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 23997640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 24007640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = originalMessageBody; 24017640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 24027640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24037640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 24047640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Integration test 4, iterate OmaApplication ID, Oma content type 24057640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 24067640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testIntegration4() { 24077640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 24087640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 24097640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 24107640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 24117640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalContentTypeName = mContentTypeName; 24127640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 24137640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] originalMessageBody = mMessageBody; 24147640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 24157640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24167640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 24177640caaf912a7eefacc3e2108c5afd70f7b072a4noda IDataVerify dataverify = getVerifyInterface(); 24187640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverService"; 24197640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24207640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < OMA_APPLICATION_ID_NAMES.length 24217640caaf912a7eefacc3e2108c5afd70f7b072a4noda + OMA_CONTENT_TYPE_NAMES.length; i++) { 24227640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = OMA_APPLICATION_ID_NAMES[rd.nextInt(OMA_APPLICATION_ID_NAMES.length)]; 24237640caaf912a7eefacc3e2108c5afd70f7b072a4noda int contIndex = rd.nextInt(OMA_CONTENT_TYPE_NAMES.length); 24247640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = OMA_CONTENT_TYPE_NAMES[contIndex]; 24257640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24267640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = new byte[100 + rd.nextInt(100)]; 24277640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd.nextBytes(mMessageBody); 24287640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24297640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(8); 24307640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] wappushPdu = retrieveWspBody(); 24317640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24327640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 24337640caaf912a7eefacc3e2108c5afd70f7b072a4noda dataverify.resetData(); 24347640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 24357640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(mAppIdName, 24367640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName, 24377640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, false, false); 24387640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24397640caaf912a7eefacc3e2108c5afd70f7b072a4noda dispatchWapPdu(wappushPdu, iwapman); 24407640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24417640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 24427640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(mAppIdName, 24437640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName); 24447640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24457640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) { 24467640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(wappushPdu)); 24477640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 24487640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(mMessageBody)); 24497640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 24507640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 24517640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 24527640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 24537640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24547640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 24557640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 24567640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = originalContentTypeName; 24577640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 24587640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 24597640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = originalMessageBody; 24607640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 24617640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24627640caaf912a7eefacc3e2108c5afd70f7b072a4noda /** 24637640caaf912a7eefacc3e2108c5afd70f7b072a4noda * Integration test 5, iterate binary OmaApplication ID, Oma binary content type 24647640caaf912a7eefacc3e2108c5afd70f7b072a4noda */ 24657640caaf912a7eefacc3e2108c5afd70f7b072a4noda public void testIntegration5() { 24667640caaf912a7eefacc3e2108c5afd70f7b072a4noda boolean res; 24677640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalAppIdValue = mAppIdValue; 24687640caaf912a7eefacc3e2108c5afd70f7b072a4noda int originalContentTypeValue = mContentTypeValue; 24697640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalAppIdName = mAppIdName; 24707640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalContentTypeName = mContentTypeName; 24717640caaf912a7eefacc3e2108c5afd70f7b072a4noda String originalClassName = mClassName; 24727640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] originalMessageBody = mMessageBody; 24737640caaf912a7eefacc3e2108c5afd70f7b072a4noda Random rd = new Random(); 24747640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24757640caaf912a7eefacc3e2108c5afd70f7b072a4noda IWapPushManager iwapman = getInterface(); 24767640caaf912a7eefacc3e2108c5afd70f7b072a4noda IDataVerify dataverify = getVerifyInterface(); 24777640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = "com.android.smspush.unitTests.ReceiverService"; 24787640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24797640caaf912a7eefacc3e2108c5afd70f7b072a4noda for (int i = 0; i < OMA_APPLICATION_ID_VALUES.length + 24807640caaf912a7eefacc3e2108c5afd70f7b072a4noda OMA_CONTENT_TYPE_VALUES.length; i++) { 24817640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = OMA_APPLICATION_ID_VALUES[rd.nextInt( 24827640caaf912a7eefacc3e2108c5afd70f7b072a4noda OMA_APPLICATION_ID_VALUES.length)]; 24837640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = 24847640caaf912a7eefacc3e2108c5afd70f7b072a4noda OMA_CONTENT_TYPE_VALUES[rd.nextInt(OMA_CONTENT_TYPE_VALUES.length)]; 24857640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24867640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = new byte[100 + rd.nextInt(100)]; 24877640caaf912a7eefacc3e2108c5afd70f7b072a4noda rd.nextBytes(mMessageBody); 24887640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24897640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] pdu = createPDU(3); 24907640caaf912a7eefacc3e2108c5afd70f7b072a4noda byte[] wappushPdu = retrieveWspBody(); 24917640caaf912a7eefacc3e2108c5afd70f7b072a4noda 24927640caaf912a7eefacc3e2108c5afd70f7b072a4noda try { 24937640caaf912a7eefacc3e2108c5afd70f7b072a4noda dataverify.resetData(); 24947640caaf912a7eefacc3e2108c5afd70f7b072a4noda // set up data 24957640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (isContentTypeMapped(mContentTypeValue)) { 24967640caaf912a7eefacc3e2108c5afd70f7b072a4noda // content type is mapped to integer value 24977640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = getContentTypeName(mContentTypeValue); 24987640caaf912a7eefacc3e2108c5afd70f7b072a4noda Log.d(LOG_TAG, "mContentTypeValue mapping " 24997640caaf912a7eefacc3e2108c5afd70f7b072a4noda + mContentTypeValue + ":" + mContentTypeName); 25007640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 25017640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = Integer.toString(mContentTypeValue); 25027640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 25037640caaf912a7eefacc3e2108c5afd70f7b072a4noda 25047640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.addPackage(Integer.toString(mAppIdValue), 25057640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName, 25067640caaf912a7eefacc3e2108c5afd70f7b072a4noda WapPushManagerParams.APP_TYPE_SERVICE, false, false); 25077640caaf912a7eefacc3e2108c5afd70f7b072a4noda 25087640caaf912a7eefacc3e2108c5afd70f7b072a4noda dispatchWapPdu(wappushPdu, iwapman); 25097640caaf912a7eefacc3e2108c5afd70f7b072a4noda 25107640caaf912a7eefacc3e2108c5afd70f7b072a4noda // clean up data 25117640caaf912a7eefacc3e2108c5afd70f7b072a4noda iwapman.deletePackage(Integer.toString(mAppIdValue), 25127640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName, mPackageName, mClassName); 25137640caaf912a7eefacc3e2108c5afd70f7b072a4noda 25147640caaf912a7eefacc3e2108c5afd70f7b072a4noda if (mContentTypeName.equals(WspTypeDecoder.CONTENT_TYPE_B_PUSH_CO)) { 25157640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(wappushPdu)); 25167640caaf912a7eefacc3e2108c5afd70f7b072a4noda } else { 25177640caaf912a7eefacc3e2108c5afd70f7b072a4noda assertTrue(dataverify.verifyData(mMessageBody)); 25187640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 25197640caaf912a7eefacc3e2108c5afd70f7b072a4noda } catch (RemoteException e) { 25207640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 25217640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 25227640caaf912a7eefacc3e2108c5afd70f7b072a4noda 25237640caaf912a7eefacc3e2108c5afd70f7b072a4noda mClassName = originalClassName; 25247640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdName = originalAppIdName; 25257640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeName = originalContentTypeName; 25267640caaf912a7eefacc3e2108c5afd70f7b072a4noda mAppIdValue = originalAppIdValue; 25277640caaf912a7eefacc3e2108c5afd70f7b072a4noda mContentTypeValue = originalContentTypeValue; 25287640caaf912a7eefacc3e2108c5afd70f7b072a4noda mMessageBody = originalMessageBody; 25297640caaf912a7eefacc3e2108c5afd70f7b072a4noda } 25307640caaf912a7eefacc3e2108c5afd70f7b072a4noda 25317640caaf912a7eefacc3e2108c5afd70f7b072a4noda} 2532