diff options
| author | Bob Lee <crazybob@google.com> | 2009-07-10 14:19:56 -0700 |
|---|---|---|
| committer | Bob Lee <crazybob@google.com> | 2009-07-10 14:54:08 -0700 |
| commit | 5621f0d928dc738cb9bde78f1c23eaf916b8c931 (patch) | |
| tree | 48e9d373d34ac9081864493b7b27fb9be669c07d /core/java/android/net | |
| parent | 59d299ce8d66f6f3091fca33d3741c0b24d678f6 (diff) | |
| download | frameworks_base-5621f0d928dc738cb9bde78f1c23eaf916b8c931.zip frameworks_base-5621f0d928dc738cb9bde78f1c23eaf916b8c931.tar.gz frameworks_base-5621f0d928dc738cb9bde78f1c23eaf916b8c931.tar.bz2 | |
Fixed NPE bugs in Uri. Fixes internal issue #1724719.
Modified getQueryParameter() to use the encoded query string. Fixes internal issue #1749094.
Diffstat (limited to 'core/java/android/net')
| -rw-r--r-- | core/java/android/net/Uri.java | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java index 6a755c3..421d013 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -1083,7 +1083,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { /** Used in parcelling. */ static final int TYPE_ID = 3; - private final String scheme; + private final String scheme; // can be null private final Part authority; private final PathPart path; private final Part query; @@ -1092,10 +1092,10 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { private HierarchicalUri(String scheme, Part authority, PathPart path, Part query, Part fragment) { this.scheme = scheme; - this.authority = authority; - this.path = path; - this.query = query; - this.fragment = fragment; + this.authority = Part.nonNull(authority); + this.path = path == null ? PathPart.NULL : path; + this.query = Part.nonNull(query); + this.fragment = Part.nonNull(fragment); } static Uri readFrom(Parcel parcel) { @@ -1158,21 +1158,18 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { } private void appendSspTo(StringBuilder builder) { - if (authority != null) { - String encodedAuthority = authority.getEncoded(); - if (encodedAuthority != null) { - // Even if the authority is "", we still want to append "//". - builder.append("//").append(encodedAuthority); - } + String encodedAuthority = authority.getEncoded(); + if (encodedAuthority != null) { + // Even if the authority is "", we still want to append "//". + builder.append("//").append(encodedAuthority); } - // path is never null. String encodedPath = path.getEncoded(); if (encodedPath != null) { builder.append(encodedPath); } - if (query != null && !query.isEmpty()) { + if (!query.isEmpty()) { builder.append('?').append(query.getEncoded()); } } @@ -1232,7 +1229,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { appendSspTo(builder); - if (fragment != null && !fragment.isEmpty()) { + if (!fragment.isEmpty()) { builder.append('#').append(fragment.getEncoded()); } @@ -1506,7 +1503,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { throw new UnsupportedOperationException(NOT_HIERARCHICAL); } - String query = getQuery(); + String query = getEncodedQuery(); if (query == null) { return Collections.emptyList(); } @@ -1569,7 +1566,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { throw new UnsupportedOperationException(NOT_HIERARCHICAL); } - String query = getQuery(); + String query = getEncodedQuery(); if (query == null) { return null; |
