commit 029e5713474c9d148a72f680059615ea0c65405f
parent 7120a56c193fc1f74bf6c51bf0956f1d5914181d
Author: Alex Catarineu <acat@torproject.org>
Date: Wed, 4 Nov 2020 15:58:22 +0100
BB 40171: Make WebRequest and GeckoWebExecutor First-Party aware
Diffstat:
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/WebRequest.java b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/WebRequest.java
@@ -49,6 +49,9 @@ public class WebRequest extends WebMessage {
/** The value of the Referer header for this request. */
public final @Nullable String referrer;
+ /** The value of the origin of this request. */
+ public final @Nullable String origin;
+
/** Cache mode definitions for web requests. */
@Retention(RetentionPolicy.SOURCE)
@IntDef({
@@ -111,6 +114,7 @@ public class WebRequest extends WebMessage {
cacheMode = builder.mCacheMode;
referrer = builder.mReferrer;
beConservative = builder.mBeConservative;
+ origin = builder.mOrigin;
if (builder.mBody != null) {
body = builder.mBody.asReadOnlyBuffer();
@@ -127,6 +131,7 @@ public class WebRequest extends WebMessage {
/* package */ int mCacheMode = CACHE_MODE_DEFAULT;
/* package */ String mReferrer;
/* package */ boolean mBeConservative;
+ /* package */ String mOrigin;
/**
* Construct a Builder instance with the specified URI.
@@ -238,6 +243,17 @@ public class WebRequest extends WebMessage {
}
/**
+ * Set the origin URI.
+ *
+ * @param origin A URI String
+ * @return This Builder instance.
+ */
+ public @NonNull Builder origin(final @Nullable String origin) {
+ mOrigin = origin;
+ return this;
+ }
+
+ /**
* @return A {@link WebRequest} constructed with the values from this Builder instance.
*/
public @NonNull WebRequest build() {
diff --git a/widget/android/WebExecutorSupport.cpp b/widget/android/WebExecutorSupport.cpp
@@ -490,6 +490,14 @@ nsresult WebExecutorSupport::CreateStreamLoader(
MOZ_ASSERT(cookieJarSettings);
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
+ if (const auto origin = req->Origin(); origin) {
+ RefPtr<nsIURI> originUri;
+ rv = NS_NewURI(getter_AddRefs(originUri), origin->ToString());
+ NS_ENSURE_SUCCESS(rv, NS_ERROR_MALFORMED_URI);
+ OriginAttributes attrs = loadInfo->GetOriginAttributes();
+ attrs.SetFirstPartyDomain(true, originUri);
+ loadInfo->SetOriginAttributes(attrs);
+ }
loadInfo->SetCookieJarSettings(cookieJarSettings);
}