[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor-browser/tor-browser-84.0b7-10.5-1] Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware



commit c5624f88791b2b2d2f15db53c24ea55327bdaa73
Author: Alex Catarineu <acat@xxxxxxxxxxxxxx>
Date:   Wed Nov 4 15:58:22 2020 +0100

    Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware
---
 .../main/java/org/mozilla/geckoview/WebRequest.java    | 18 ++++++++++++++++++
 widget/android/WebExecutorSupport.cpp                  | 10 ++++++++++
 2 files changed, 28 insertions(+)

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
index 7e3aa285c5be..18f56abeec43 100644
--- 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,11 @@ public class WebRequest extends WebMessage {
      */
     public final @Nullable String referrer;
 
+    /**
+     * The value of the origin of this request.
+     */
+    public final @Nullable String origin;
+
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({CACHE_MODE_DEFAULT, CACHE_MODE_NO_STORE,
             CACHE_MODE_RELOAD, CACHE_MODE_NO_CACHE,
@@ -110,6 +115,7 @@ public class WebRequest extends WebMessage {
         method = builder.mMethod;
         cacheMode = builder.mCacheMode;
         referrer = builder.mReferrer;
+        origin = builder.mOrigin;
 
         if (builder.mBody != null) {
             body = builder.mBody.asReadOnlyBuffer();
@@ -126,6 +132,7 @@ public class WebRequest extends WebMessage {
         /* package */ String mMethod = "GET";
         /* package */ int mCacheMode = CACHE_MODE_DEFAULT;
         /* package */ String mReferrer;
+        /* package */ String mOrigin;
 
         /**
          * Construct a Builder instance with the specified URI.
@@ -205,6 +212,17 @@ public class WebRequest extends WebMessage {
             return this;
         }
 
+        /**
+         * 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.
          */
diff --git a/widget/android/WebExecutorSupport.cpp b/widget/android/WebExecutorSupport.cpp
index f9f4262fb50c..bb639740f013 100644
--- a/widget/android/WebExecutorSupport.cpp
+++ b/widget/android/WebExecutorSupport.cpp
@@ -390,6 +390,16 @@ nsresult WebExecutorSupport::CreateStreamLoader(
   MOZ_ASSERT(cookieJarSettings);
 
   nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
+
+  RefPtr<nsIURI> originUri;
+  const auto origin = req->Origin();
+  if (origin) {
+    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);
 
   // setup http/https specific things

_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits