tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mmobile/android/geckoview/src/main/java/org/mozilla/geckoview/WebRequest.java | 16++++++++++++++++
Mwidget/android/WebExecutorSupport.cpp | 8++++++++
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); }