From e41c317348cfe23a78bfd97609c3489c6cc4a786 Mon Sep 17 00:00:00 2001 From: Keith Ito Date: Sun, 21 Mar 2010 14:31:33 -0700 Subject: [PATCH] Advance encodedKeySearchIndex if encodedKey matches a suffix of a parameter. Bug: 2524610 Change-Id: I51bbf8248133b61825d2ae14afe175cb4d0413b8 --- core/java/android/net/Uri.java | 2 ++ core/tests/coretests/src/android/net/UriTest.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java index f2ea539a695d7..eca4569e5417a 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -1598,6 +1598,8 @@ public abstract class Uri implements Parcelable, Comparable { end = query.length(); } return decode(query.substring(equalsIndex + 1, end)); + } else { + encodedKeySearchIndex = equalsIndex + 1; } } return null; diff --git a/core/tests/coretests/src/android/net/UriTest.java b/core/tests/coretests/src/android/net/UriTest.java index ad71fcbad6cfc..095ee13829444 100644 --- a/core/tests/coretests/src/android/net/UriTest.java +++ b/core/tests/coretests/src/android/net/UriTest.java @@ -574,5 +574,13 @@ public class UriTest extends TestCase { .appendQueryParameter("key", "y z") .build(); assertEquals("y z", uri.getQueryParameter("key")); + + // key is a substring of parameters, but not present + uri = Uri.parse("http://test/").buildUpon() + .appendQueryParameter("akeyb", "a b") + .appendQueryParameter("keya", "c d") + .appendQueryParameter("bkey", "e f") + .build(); + assertNull(uri.getQueryParameter("key")); } }