Verified Commit cdc0de8f authored by Alex Catarineu's avatar Alex Catarineu Committed by Pier Angelo Vendrame
Browse files

Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware

parent 256d7fc1
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -40,6 +40,11 @@ public class WebRequest extends WebMessage {
   */
  public final @CacheMode int cacheMode;

  /**
   * The value of the origin of this request.
   */
  public final @Nullable String origin;

  /**
   * If true, do not use newer protocol features that might have interop problems on the Internet.
   * Intended only for use with critical infrastructure.
@@ -110,6 +115,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();
@@ -125,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.
@@ -235,6 +242,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. */
    public @NonNull WebRequest build() {
      if (mUri == null) {
+10 −0
Original line number Diff line number Diff line
@@ -395,6 +395,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