Commit 4c1d52e0 authored by Alex Catarineu's avatar Alex Catarineu Committed by Matthew Finkel
Browse files

Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware

parent afbb0f32
......@@ -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.
*/
......
......@@ -392,6 +392,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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment