Bug 897368 - 0002. Support code page in token list. r=vicamo
authorChuck Lee <chulee@mozilla.com>
Mon, 29 Jul 2013 15:08:38 +0800
changeset 152803 f63c9bd75e3f626bb0617904d5fc64fd0d35a531
parent 152802 ead27e7569fe559182e2620cf24f75a234e596ad
child 152804 ad07e1cd5f99f1e9429e05852fd212e913887d97
push id2859
push userakeybl@mozilla.com
push dateMon, 16 Sep 2013 19:14:59 +0000
treeherdermozilla-beta@87d3c51cd2bf [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersvicamo
bugs897368
milestone25.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 897368 - 0002. Support code page in token list. r=vicamo
dom/wappush/src/gonk/CpPduHelper.jsm
dom/wappush/src/gonk/SiPduHelper.jsm
dom/wappush/src/gonk/SlPduHelper.jsm
--- a/dom/wappush/src/gonk/CpPduHelper.jsm
+++ b/dom/wappush/src/gonk/CpPduHelper.jsm
@@ -81,187 +81,261 @@ this.PduHelper = {
     return msg;
 
   }
 };
 
 /**
   * Tag tokens
   *
-  * @see WAP-183-ProvCont-20010724-A, clause 8.1
+  * @see WAP-183-ProvCont-20010724-A, clause 8.1 for code page 0
+  * @see OMA-WAP-TS-ProvCont-V1_1-20090421-C, clause 7.1 for code page 1
   */
 const CP_TAG_FIELDS = (function () {
   let names = {};
-  function add(name, number) {
+  function add(name, codepage, number) {
     let entry = {
       name: name,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add("wap-provisioningdoc", 0x05);
-  add("characteristic",      0x06);
-  add("parm",                0x07);
+  // Code page 0
+  add("wap-provisioningdoc", 0, 0x05);
+  add("characteristic",      0, 0x06);
+  add("parm",                0, 0x07);
+  // Code page 1
+  add("characteristic",      1, 0x06);
+  add("parm",                1, 0x07);
 
   return names;
 })();
 
 /**
   * Attribute Tokens
   *
-  * @see WAP-183-ProvCont-20010724-A, clause 8.2
+  * @see WAP-183-ProvCont-20010724-A, clause 8.2 for code page 0
+  * @see OMA-WAP-TS-ProvCont-V1_1-20090421-C, clause 7.2 for code page 1
   */
 const CP_ATTRIBUTE_FIELDS = (function () {
   let names = {};
-  function add(name, value, number) {
+  function add(name, value, codepage, number) {
     let entry = {
       name: name,
       value: value,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add("name",     "",                                 0x05);
-  add("value",    "",                                 0x06);
-  add("name",     "NAME",                             0x07);
-  add("name",     "NAP-ADDRESS",                      0x08);
-  add("name",     "NAP-ADDRTYPE",                     0x09);
-  add("name",     "CALLTYPE",                         0x0A);
-  add("name",     "VALIDUNTIL",                       0x0B);
-  add("name",     "AUTHTYPE",                         0x0C);
-  add("name",     "AUTHNAME",                         0x0D);
-  add("name",     "AUTHSECRET",                       0x0E);
-  add("name",     "LINGER",                           0x0F);
-  add("name",     "BEARER",                           0x10);
-  add("name",     "NAPID",                            0x11);
-  add("name",     "COUNTRY",                          0x12);
-  add("name",     "NETWORK",                          0x13);
-  add("name",     "INTERNET",                         0x14);
-  add("name",     "PROXY-ID",                         0x15);
-  add("name",     "PROXY-PROVIDER-ID",                0x16);
-  add("name",     "DOMAIN",                           0x17);
-  add("name",     "PROVURL",                          0x18);
-  add("name",     "PXAUTH-TYPE",                      0x19);
-  add("name",     "PXAUTH-ID",                        0x1A);
-  add("name",     "PXAUTH-PW",                        0x1B);
-  add("name",     "STARTPAGE",                        0x1C);
-  add("name",     "BASAUTH-ID",                       0x1D);
-  add("name",     "BASAUTH-PW",                       0x1E);
-  add("name",     "PUSHENABLED",                      0x1F);
-  add("name",     "PXADDR",                           0x20);
-  add("name",     "PXADDRTYPE",                       0x21);
-  add("name",     "TO-NAPID",                         0x22);
-  add("name",     "PORTNBR",                          0x23);
-  add("name",     "SERVICE",                          0x24);
-  add("name",     "LINKSPEED",                        0x25);
-  add("name",     "DNLINKSPEED",                      0x26);
-  add("name",     "LOCAL-ADDR",                       0x27);
-  add("name",     "LOCAL-ADDRTYPE",                   0x28);
-  add("name",     "CONTEXT-ALLOW",                    0x29);
-  add("name",     "TRUST",                            0x2A);
-  add("name",     "MASTER",                           0x2B);
-  add("name",     "SID",                              0x2C);
-  add("name",     "SOC",                              0x2D);
-  add("name",     "WSP-VERSION",                      0x2E);
-  add("name",     "PHYSICAL-PROXY-ID",                0x2F);
-  add("name",     "CLIENT-ID",                        0x30);
-  add("name",     "DELIVERY-ERR-PDU",                 0x31);
-  add("name",     "DELIVERY-ORDER",                   0x32);
-  add("name",     "TRAFFIC-CLASS",                    0x33);
-  add("name",     "MAX-SDU-SIZE",                     0x34);
-  add("name",     "MAX-BITRATE-UPLINK",               0x35);
-  add("name",     "MAX-BITRATE-DNLINK",               0x36);
-  add("name",     "RESIDUAL-BER",                     0x37);
-  add("name",     "SDU-ERROR-RATIO",                  0x38);
-  add("name",     "TRAFFIC-HANDL-PRIO",               0x39);
-  add("name",     "TRANSFER-DELAY",                   0x3A);
-  add("name",     "GUARANTEED-BITRATE-UPLINK",        0x3B);
-  add("name",     "GUARANTEED-BITRATE-DNLINK",        0x3C);
-  add("version",  "",                                 0x45);
-  add("version",  "1.0",                              0x46);
-  add("type",     "",                                 0x50);
-  add("type",     "PXLOGICAL",                        0x51);
-  add("type",     "PXPHYSICAL",                       0x52);
-  add("type",     "PORT",                             0x53);
-  add("type",     "VALIDITY",                         0x54);
-  add("type",     "NAPDEF",                           0x55);
-  add("type",     "BOOTSTRAP",                        0x56);
+  // Code page 0
+  add("name",     "",                             0,  0x05);
+  add("value",    "",                             0,  0x06);
+  add("name",     "NAME",                         0,  0x07);
+  add("name",     "NAP-ADDRESS",                  0,  0x08);
+  add("name",     "NAP-ADDRTYPE",                 0,  0x09);
+  add("name",     "CALLTYPE",                     0,  0x0A);
+  add("name",     "VALIDUNTIL",                   0,  0x0B);
+  add("name",     "AUTHTYPE",                     0,  0x0C);
+  add("name",     "AUTHNAME",                     0,  0x0D);
+  add("name",     "AUTHSECRET",                   0,  0x0E);
+  add("name",     "LINGER",                       0,  0x0F);
+  add("name",     "BEARER",                       0,  0x10);
+  add("name",     "NAPID",                        0,  0x11);
+  add("name",     "COUNTRY",                      0,  0x12);
+  add("name",     "NETWORK",                      0,  0x13);
+  add("name",     "INTERNET",                     0,  0x14);
+  add("name",     "PROXY-ID",                     0,  0x15);
+  add("name",     "PROXY-PROVIDER-ID",            0,  0x16);
+  add("name",     "DOMAIN",                       0,  0x17);
+  add("name",     "PROVURL",                      0,  0x18);
+  add("name",     "PXAUTH-TYPE",                  0,  0x19);
+  add("name",     "PXAUTH-ID",                    0,  0x1A);
+  add("name",     "PXAUTH-PW",                    0,  0x1B);
+  add("name",     "STARTPAGE",                    0,  0x1C);
+  add("name",     "BASAUTH-ID",                   0,  0x1D);
+  add("name",     "BASAUTH-PW",                   0,  0x1E);
+  add("name",     "PUSHENABLED",                  0,  0x1F);
+  add("name",     "PXADDR",                       0,  0x20);
+  add("name",     "PXADDRTYPE",                   0,  0x21);
+  add("name",     "TO-NAPID",                     0,  0x22);
+  add("name",     "PORTNBR",                      0,  0x23);
+  add("name",     "SERVICE",                      0,  0x24);
+  add("name",     "LINKSPEED",                    0,  0x25);
+  add("name",     "DNLINKSPEED",                  0,  0x26);
+  add("name",     "LOCAL-ADDR",                   0,  0x27);
+  add("name",     "LOCAL-ADDRTYPE",               0,  0x28);
+  add("name",     "CONTEXT-ALLOW",                0,  0x29);
+  add("name",     "TRUST",                        0,  0x2A);
+  add("name",     "MASTER",                       0,  0x2B);
+  add("name",     "SID",                          0,  0x2C);
+  add("name",     "SOC",                          0,  0x2D);
+  add("name",     "WSP-VERSION",                  0,  0x2E);
+  add("name",     "PHYSICAL-PROXY-ID",            0,  0x2F);
+  add("name",     "CLIENT-ID",                    0,  0x30);
+  add("name",     "DELIVERY-ERR-PDU",             0,  0x31);
+  add("name",     "DELIVERY-ORDER",               0,  0x32);
+  add("name",     "TRAFFIC-CLASS",                0,  0x33);
+  add("name",     "MAX-SDU-SIZE",                 0,  0x34);
+  add("name",     "MAX-BITRATE-UPLINK",           0,  0x35);
+  add("name",     "MAX-BITRATE-DNLINK",           0,  0x36);
+  add("name",     "RESIDUAL-BER",                 0,  0x37);
+  add("name",     "SDU-ERROR-RATIO",              0,  0x38);
+  add("name",     "TRAFFIC-HANDL-PRIO",           0,  0x39);
+  add("name",     "TRANSFER-DELAY",               0,  0x3A);
+  add("name",     "GUARANTEED-BITRATE-UPLINK",    0,  0x3B);
+  add("name",     "GUARANTEED-BITRATE-DNLINK",    0,  0x3C);
+  add("version",  "",                             0,  0x45);
+  add("version",  "1.0",                          0,  0x46);
+  add("type",     "",                             0,  0x50);
+  add("type",     "PXLOGICAL",                    0,  0x51);
+  add("type",     "PXPHYSICAL",                   0,  0x52);
+  add("type",     "PORT",                         0,  0x53);
+  add("type",     "VALIDITY",                     0,  0x54);
+  add("type",     "NAPDEF",                       0,  0x55);
+  add("type",     "BOOTSTRAP",                    0,  0x56);
 /*
  *  Mark out VENDORCONFIG so if it is contained in message, parse
  *  will failed and raw data is returned.
  */
-//  add("type",     "VENDORCONFIG",                     0x57);
-  add("type",     "CLIENTIDENTITY",                   0x58);
-  add("type",     "PXAUTHINFO",                       0x59);
-  add("type",     "NAPAUTHINFO",                      0x5A);
+//  add("type",     "VENDORCONFIG",                 0,  0x57);
+  add("type",     "CLIENTIDENTITY",               0,  0x58);
+  add("type",     "PXAUTHINFO",                   0,  0x59);
+  add("type",     "NAPAUTHINFO",                  0,  0x5A);
+
+  // Code page 1
+  add("name",     "",                             1,  0x05);
+  add("value",    "",                             1,  0x06);
+  add("name",     "NAME",                         1,  0x07);
+  add("name",     "INTERNET",                     1,  0x14);
+  add("name",     "STARTPAGE",                    1,  0x1C);
+  add("name",     "TO-NAPID",                     1,  0x22);
+  add("name",     "PORTNBR",                      1,  0x23);
+  add("name",     "SERVICE",                      1,  0x24);
+  add("name",     "AACCEPT",                      1,  0x2E);
+  add("name",     "AAUTHDATA",                    1,  0x2F);
+  add("name",     "AAUTHLEVEL",                   1,  0x30);
+  add("name",     "AAUTHNAME",                    1,  0x31);
+  add("name",     "AAUTHSECRET",                  1,  0x32);
+  add("name",     "AAUTHTYPE",                    1,  0x33);
+  add("name",     "ADDR",                         1,  0x34);
+  add("name",     "ADDRTYPE",                     1,  0x35);
+  add("name",     "APPID",                        1,  0x36);
+  add("name",     "APROTOCOL",                    1,  0x37);
+  add("name",     "PROVIDER-ID",                  1,  0x38);
+  add("name",     "TO-PROXY",                     1,  0x39);
+  add("name",     "URI",                          1,  0x3A);
+  add("name",     "RULE",                         1,  0x3B);
+  add("type",     "",                             1,  0x50);
+  add("type",     "PORT",                         1,  0x53);
+  add("type",     "APPLICATION",                  1,  0x55);
+  add("type",     "APPADDR",                      1,  0x56);
+  add("type",     "APPAUTH",                      1,  0x57);
+  add("type",     "CLIENTIDENTITY",               1,  0x58);
+  add("type",     "RESOURCE",                     1,  0x59);
 
   return names;
 })();
 
+/**
+  * Value Tokens
+  *
+  * @see WAP-183-ProvCont-20010724-A, clause 8.3 for code page 0
+  * @see OMA-WAP-TS-ProvCont-V1_1-20090421-C, clause 7.3 for code page 1
+  */
 const CP_VALUE_FIELDS = (function () {
   let names = {};
-  function add(value, number) {
+  function add(value, codepage, number) {
     let entry = {
       value: value,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add("IPV4",                             0x85);
-  add("IPV6",                             0x86);
-  add("E164",                             0x87);
-  add("ALPHA",                            0x88);
-  add("APN",                              0x89);
-  add("SCODE",                            0x8A);
-  add("TETRA-ITSI",                       0x8B);
-  add("MAN",                              0x8C);
-  add("ANALOG-MODEM",                     0x90);
-  add("V.120",                            0x91);
-  add("V.110",                            0x92);
-  add("X.31",                             0x93);
-  add("BIT-TRANSPARENT",                  0x94);
-  add("DIRECT-ASYNCHRONOUS-DATA-SERVICE", 0x95);
-  add("PAP",                              0x9A);
-  add("CHAP",                             0x9B);
-  add("HTTP-BASIC",                       0x9C);
-  add("HTTP-DIGEST",                      0x9D);
-  add("WTLS-SS",                          0x9E);
-  add("GSM-USSD",                         0xA2);
-  add("GSM-SMS",                          0xA3);
-  add("ANSI-136-GUTS",                    0xA4);
-  add("IS-95-CDMA-SMS",                   0xA5);
-  add("IS-95-CDMA-CSD",                   0xA6);
-  add("IS-95-CDMA-PAC",                   0xA7);
-  add("ANSI-136-CSD",                     0xA8);
-  add("ANSI-136-GPRS",                    0xA9);
-  add("GSM-CSD",                          0xAA);
-  add("GSM-GPRS",                         0xAB);
-  add("AMPS-CDPD",                        0xAC);
-  add("PDC-CSD",                          0xAD);
-  add("PDC-PACKET",                       0xAE);
-  add("IDEN-SMS",                         0xAF);
-  add("IDEN-CSD",                         0xB0);
-  add("IDEN-PACKET",                      0xB1);
-  add("FLEX/REFLEX",                      0xB2);
-  add("PHS-SMS",                          0xB3);
-  add("PHS-CSD",                          0xB4);
-  add("TETRA-SDS",                        0xB5);
-  add("TETRA-PACKET",                     0xB6);
-  add("ANSI-136-GHOST",                   0xB7);
-  add("MOBITEX-MPAK",                     0xB8);
-  add("AUTOBOUDING",                      0xC5);
-  add("CL-WSP",                           0xCA);
-  add("CO-WSP",                           0xCB);
-  add("CL-SEC-WSP",                       0xCC);
-  add("CO-SEC-WSP",                       0xCD);
-  add("CL-SEC-WTA",                       0xCE);
-  add("CO-SEC-WTA",                       0xCF);
+  // Code page 0
+  add("IPV4",                             0,  0x85);
+  add("IPV6",                             0,  0x86);
+  add("E164",                             0,  0x87);
+  add("ALPHA",                            0,  0x88);
+  add("APN",                              0,  0x89);
+  add("SCODE",                            0,  0x8A);
+  add("TETRA-ITSI",                       0,  0x8B);
+  add("MAN",                              0,  0x8C);
+  add("ANALOG-MODEM",                     0,  0x90);
+  add("V.120",                            0,  0x91);
+  add("V.110",                            0,  0x92);
+  add("X.31",                             0,  0x93);
+  add("BIT-TRANSPARENT",                  0,  0x94);
+  add("DIRECT-ASYNCHRONOUS-DATA-SERVICE", 0,  0x95);
+  add("PAP",                              0,  0x9A);
+  add("CHAP",                             0,  0x9B);
+  add("HTTP-BASIC",                       0,  0x9C);
+  add("HTTP-DIGEST",                      0,  0x9D);
+  add("WTLS-SS",                          0,  0x9E);
+  add("MD5",                              0,  0x9F);  // Added in OMA, 7.3.3
+  add("GSM-USSD",                         0,  0xA2);
+  add("GSM-SMS",                          0,  0xA3);
+  add("ANSI-136-GUTS",                    0,  0xA4);
+  add("IS-95-CDMA-SMS",                   0,  0xA5);
+  add("IS-95-CDMA-CSD",                   0,  0xA6);
+  add("IS-95-CDMA-PAC",                   0,  0xA7);
+  add("ANSI-136-CSD",                     0,  0xA8);
+  add("ANSI-136-GPRS",                    0,  0xA9);
+  add("GSM-CSD",                          0,  0xAA);
+  add("GSM-GPRS",                         0,  0xAB);
+  add("AMPS-CDPD",                        0,  0xAC);
+  add("PDC-CSD",                          0,  0xAD);
+  add("PDC-PACKET",                       0,  0xAE);
+  add("IDEN-SMS",                         0,  0xAF);
+  add("IDEN-CSD",                         0,  0xB0);
+  add("IDEN-PACKET",                      0,  0xB1);
+  add("FLEX/REFLEX",                      0,  0xB2);
+  add("PHS-SMS",                          0,  0xB3);
+  add("PHS-CSD",                          0,  0xB4);
+  add("TETRA-SDS",                        0,  0xB5);
+  add("TETRA-PACKET",                     0,  0xB6);
+  add("ANSI-136-GHOST",                   0,  0xB7);
+  add("MOBITEX-MPAK",                     0,  0xB8);
+  add("CDMA2000-1X-SIMPLE-IP",            0,  0xB9);  // Added in OMA, 7.3.4
+  add("CDMA2000-1X-MOBILE-IP",            0,  0xBA);  // Added in OMA, 7.3.4
+  add("AUTOBOUDING",                      0,  0xC5);
+  add("CL-WSP",                           0,  0xCA);
+  add("CO-WSP",                           0,  0xCB);
+  add("CL-SEC-WSP",                       0,  0xCC);
+  add("CO-SEC-WSP",                       0,  0xCD);
+  add("CL-SEC-WTA",                       0,  0xCE);
+  add("CO-SEC-WTA",                       0,  0xCF);
+  add("OTA-HTTP-TO",                      0,  0xD0);  // Added in OMA, 7.3.6
+  add("OTA-HTTP-TLS-TO",                  0,  0xD1);  // Added in OMA, 7.3.6
+  add("OTA-HTTP-PO",                      0,  0xD2);  // Added in OMA, 7.3.6
+  add("OTA-HTTP-TLS-PO",                  0,  0xD3);  // Added in OMA, 7.3.6
+  add("AAA",                              0,  0xE0);  // Added in OMA, 7.3.8
+  add("HA",                               0,  0xE1);  // Added in OMA, 7.3.8
+
+  // Code page 1
+  add("IPV6",                             1,  0x86);
+  add("E164",                             1,  0x87);
+  add("ALPHA",                            1,  0x88);
+  add("APPSRV",                           1,  0x8D);
+  add("OBEX",                             1,  0x8E);
+  add(",",                                1,  0x90);
+  add("HTTP-",                            1,  0x91);
+  add("BASIC",                            1,  0x92);
+  add("DIGEST",                           1,  0x93);
 
   return names;
 })();
 
 let debug;
 if (DEBUG) {
   debug = function (s) {
     dump("-$- CpPduHelper: " + s + "\n");
--- a/dom/wappush/src/gonk/SiPduHelper.jsm
+++ b/dom/wappush/src/gonk/SiPduHelper.jsm
@@ -129,80 +129,89 @@ this.PduHelper = {
 
 /**
  * Tag tokens
  *
  * @see WAP-167-SERVICEIND-20010731-A, clause 8.3.1
  */
 const SI_TAG_FIELDS = (function () {
   let names = {};
-  function add(name, number) {
+  function add(name, codepage, number) {
     let entry = {
       name: name,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add("si",           0x05);
-  add("indication",   0x06);
-  add("info",         0x07);
-  add("item",         0x08);
+  add("si",           0,  0x05);
+  add("indication",   0,  0x06);
+  add("info",         0,  0x07);
+  add("item",         0,  0x08);
 
   return names;
 })();
 
 /**
  * Attribute Tokens
  *
  * @see WAP-167-SERVICEIND-20010731-A, clause 8.3.2
  */
 const SI_ATTRIBUTE_FIELDS = (function () {
   let names = {};
-  function add(name, value, number) {
+  function add(name, value, codepage, number) {
     let entry = {
       name: name,
       value: value,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add("action",       "signal-none",    0x05);
-  add("action",       "signal-low",     0x06);
-  add("action",       "signal-medium",  0x07);
-  add("action",       "signal-high",    0x08);
-  add("action",       "delete",         0x09);
-  add("created",      "",               0x0A);
-  add("href",         "",               0x0B);
-  add("href",         "http://",        0x0C);
-  add("href",         "http://www.",    0x0D);
-  add("href",         "https://",       0x0E);
-  add("href",         "https://www.",   0x0F);
-  add("si-expires",   "",               0x10);
-  add("si-id",        "",               0x11);
-  add("class",        "",               0x12);
+  add("action",       "signal-none",    0,  0x05);
+  add("action",       "signal-low",     0,  0x06);
+  add("action",       "signal-medium",  0,  0x07);
+  add("action",       "signal-high",    0,  0x08);
+  add("action",       "delete",         0,  0x09);
+  add("created",      "",               0,  0x0A);
+  add("href",         "",               0,  0x0B);
+  add("href",         "http://",        0,  0x0C);
+  add("href",         "http://www.",    0,  0x0D);
+  add("href",         "https://",       0,  0x0E);
+  add("href",         "https://www.",   0,  0x0F);
+  add("si-expires",   "",               0,  0x10);
+  add("si-id",        "",               0,  0x11);
+  add("class",        "",               0,  0x12);
 
   return names;
 })();
 
 const SI_VALUE_FIELDS = (function () {
   let names = {};
-  function add(value, number) {
+  function add(value, codepage, number) {
     let entry = {
       value: value,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add(".com/",          0x85);
-  add(".edu/",          0x86);
-  add(".net/",          0x87);
-  add(".org/",          0x88);
+  add(".com/",    0,    0x85);
+  add(".edu/",    0,    0x86);
+  add(".net/",    0,    0x87);
+  add(".org/",    0,    0x88);
 
   return names;
 })();
 
 this.EXPORTED_SYMBOLS = [
   // Parser
   "PduHelper",
 ];
--- a/dom/wappush/src/gonk/SlPduHelper.jsm
+++ b/dom/wappush/src/gonk/SlPduHelper.jsm
@@ -85,71 +85,80 @@ this.PduHelper = {
 
 /**
  * Tag tokens
  *
  * @see WAP-168-SERVICELOAD-20010731-A, clause 9.3.1
  */
 const SL_TAG_FIELDS = (function () {
   let names = {};
-  function add(name, number) {
+  function add(name, codepage, number) {
     let entry = {
       name: name,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add("sl",           0x05);
+  add("sl",       0,  0x05);
 
   return names;
 })();
 
 /**
  * Attribute Tokens
  *
  * @see WAP-168-SERVICELOAD-20010731-A, clause 9.3.2
  */
 const SL_ATTRIBUTE_FIELDS = (function () {
   let names = {};
-  function add(name, value, number) {
+  function add(name, value, codepage, number) {
     let entry = {
       name: name,
       value: value,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add("action",       "execute-low",    0x05);
-  add("action",       "execute-high",   0x06);
-  add("action",       "cache",          0x07);
-  add("href",         "",               0x08);
-  add("href",         "http://",        0x09);
-  add("href",         "http://www.",    0x0A);
-  add("href",         "https://",       0x0B);
-  add("href",         "https://www.",   0x0C);
+  add("action",       "execute-low",    0,  0x05);
+  add("action",       "execute-high",   0,  0x06);
+  add("action",       "cache",          0,  0x07);
+  add("href",         "",               0,  0x08);
+  add("href",         "http://",        0,  0x09);
+  add("href",         "http://www.",    0,  0x0A);
+  add("href",         "https://",       0,  0x0B);
+  add("href",         "https://www.",   0,  0x0C);
 
   return names;
 })();
 
 const SL_VALUE_FIELDS = (function () {
   let names = {};
-  function add(value, number) {
+  function add(value, codepage, number) {
     let entry = {
       value: value,
       number: number,
     };
-    names[number] = entry;
+    if (!names[codepage]) {
+      names[codepage] = {};
+    }
+    names[codepage][number] = entry;
   }
 
-  add(".com/",          0x85);
-  add(".edu/",          0x86);
-  add(".net/",          0x87);
-  add(".org/",          0x88);
+  add(".com/",      0,  0x85);
+  add(".edu/",      0,  0x86);
+  add(".net/",      0,  0x87);
+  add(".org/",      0,  0x88);
 
   return names;
 })();
 
 this.EXPORTED_SYMBOLS = [
   // Parser
   "PduHelper",
 ];