mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-09-12 12:32:02 +00:00
63 lines
2.7 KiB
Diff
63 lines
2.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Orion Hodson <oth@google.com>
|
|
Date: Thu, 7 Apr 2022 21:42:04 +0100
|
|
Subject: [PATCH] Uri: check authority and scheme as part of determining URI
|
|
path
|
|
|
|
The interpretation of the path depends on whether the scheme or
|
|
authority are specified and should be observed when unparcelling
|
|
URIs.
|
|
|
|
Bug: 171966843
|
|
Test: atest FrameworksCoreTests:android.net.UriTest
|
|
Test: atest com.android.devicehealthchecks.SystemAppCheck
|
|
Change-Id: I06981d1c6e387b16df792494523994518848db37
|
|
Merged-In: I06981d1c6e387b16df792494523994518848db37
|
|
(cherry picked from commit f37a94ae920fa5879c557603fc285942ec4b84b1)
|
|
(cherry picked from commit on googleplex-android-review.googlesource.com host: c87f0623be4042c39a9b73f7a6e02aa116925e50)
|
|
Merged-In: I06981d1c6e387b16df792494523994518848db37
|
|
---
|
|
core/java/android/net/Uri.java | 22 +++++++++++++++-------
|
|
1 file changed, 15 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java
|
|
index 5ca3a4106a2d..8af3687af40b 100644
|
|
--- a/core/java/android/net/Uri.java
|
|
+++ b/core/java/android/net/Uri.java
|
|
@@ -1165,13 +1165,16 @@ public abstract class Uri implements Parcelable, Comparable<Uri> {
|
|
}
|
|
|
|
static Uri readFrom(Parcel parcel) {
|
|
- return new HierarchicalUri(
|
|
- parcel.readString(),
|
|
- Part.readFrom(parcel),
|
|
- PathPart.readFrom(parcel),
|
|
- Part.readFrom(parcel),
|
|
- Part.readFrom(parcel)
|
|
- );
|
|
+ final String scheme = parcel.readString();
|
|
+ final Part authority = Part.readFrom(parcel);
|
|
+ // In RFC3986 the path should be determined based on whether there is a scheme or
|
|
+ // authority present (https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3).
|
|
+ final boolean hasSchemeOrAuthority =
|
|
+ (scheme != null && scheme.length() > 0) || !authority.isEmpty();
|
|
+ final PathPart path = PathPart.readFrom(hasSchemeOrAuthority, parcel);
|
|
+ final Part query = Part.readFrom(parcel);
|
|
+ final Part fragment = Part.readFrom(parcel);
|
|
+ return new HierarchicalUri(scheme, authority, path, query, fragment);
|
|
}
|
|
|
|
public int describeContents() {
|
|
@@ -2225,6 +2228,11 @@ public abstract class Uri implements Parcelable, Comparable<Uri> {
|
|
}
|
|
}
|
|
|
|
+ static PathPart readFrom(boolean hasSchemeOrAuthority, Parcel parcel) {
|
|
+ final PathPart path = readFrom(parcel);
|
|
+ return hasSchemeOrAuthority ? makeAbsolute(path) : path;
|
|
+ }
|
|
+
|
|
/**
|
|
* Creates a path from the encoded string.
|
|
*
|