WspTypeDecoder: fixed decoding of content parameters
Johan Redestig [Thu, 30 Aug 2012 11:53:10 +0000 (13:53 +0200)]
The removed condition prevented any parameter to have
0 as integer value.

Change-Id: Iaa8e106e49a51322c07f647f2f66bb7bd6055c89

src/java/com/android/internal/telephony/WspTypeDecoder.java
tests/telephonytests/src/com/android/internal/telephony/Wap230WspContentTypeTest.java

index 73260fb..a19546a 100755 (executable)
@@ -506,11 +506,7 @@ public class WspTypeDecoder {
             } else if (decodeIntegerValue(startIndex + totalRead)) {
                 totalRead += dataLength;
                 int intValue = (int) unsigned32bit;
-                if (intValue == 0) {
-                    value = "";
-                } else {
-                    value = String.valueOf(intValue);
-                }
+                value = String.valueOf(intValue);
             } else {
                 decodeTokenText(startIndex + totalRead);
                 totalRead += dataLength;
index d31b294..9c2b7ef 100644 (file)
@@ -623,6 +623,26 @@ public class Wap230WspContentTypeTest extends TestCase {
 
     }
 
+    public void testTypedParamWellKnownShortIntegerCompactIntegerValue_0() {
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        out.write(0x3);
+        out.write(SHORT_MIME_TYPE_ROLLOVER_CERTIFICATE | WSP_SHORT_INTEGER_MASK);
+        out.write(TYPED_PARAM_SEC | WSP_SHORT_INTEGER_MASK);
+        out.write(0x00 | WSP_SHORT_INTEGER_MASK);
+
+        WspTypeDecoder unit = new WspTypeDecoder(out.toByteArray());
+        assertTrue(unit.decodeContentType(0));
+
+        String mimeType = unit.getValueString();
+
+        assertEquals(STRING_MIME_TYPE_ROLLOVER_CERTIFICATE, mimeType);
+        assertEquals(0x3F, unit.getValue32());
+        assertEquals(4, unit.getDecodedDataLength());
+
+        Map<String, String> params = unit.getContentParameters();
+        assertEquals("0", params.get("SEC"));
+    }
+
     public void testTypedParamWellKnownShortIntegerMultipleParameters() throws Exception {
 
         ByteArrayOutputStream out = new ByteArrayOutputStream();
@@ -850,4 +870,4 @@ public class Wap230WspContentTypeTest extends TestCase {
         WspTypeDecoder unit = new WspTypeDecoder(out.toByteArray());
         assertFalse(unit.decodeContentType(0));
     }
-}
\ No newline at end of file
+}