Commit aa15deb8 authored by Alex Catarineu's avatar Alex Catarineu Committed by Richard Pospesel
Browse files

Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware

parent 7fb0d462
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -51,6 +51,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,
@@ -112,6 +117,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();
@@ -128,6 +134,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.
@@ -226,6 +233,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.
         */
+10 −0
Original line number Diff line number Diff line
@@ -393,6 +393,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