mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-08 16:27:31 +09:00
Part 1: network component changes.
This commit is contained in:
parent
59ee48bfb0
commit
c8412ad501
8 changed files with 104 additions and 20 deletions
|
|
@ -1474,7 +1474,10 @@ pref("network.http.request.max-start-delay", 10);
|
||||||
pref("network.http.request.max-attempts", 10);
|
pref("network.http.request.max-attempts", 10);
|
||||||
|
|
||||||
// Headers
|
// Headers
|
||||||
pref("network.http.accept.default", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
pref("network.http.accept.default", "*/*");
|
||||||
|
pref("network.http.accept.navigation", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
||||||
|
pref("network.http.accept.image", "image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5");
|
||||||
|
pref("network.http.accept.style", "text/css,*/*;q=0.1");
|
||||||
|
|
||||||
// Prefs allowing granular control of referers
|
// Prefs allowing granular control of referers
|
||||||
// 0=don't send any, 1=send only on clicks, 2=send on image requests as well
|
// 0=don't send any, 1=send only on clicks, 2=send on image requests as well
|
||||||
|
|
|
||||||
|
|
@ -654,8 +654,13 @@ private:
|
||||||
{
|
{
|
||||||
nsID channelId;
|
nsID channelId;
|
||||||
nsLoadFlags flags;
|
nsLoadFlags flags;
|
||||||
|
|
||||||
|
nsContentPolicyType contentPolicyType =
|
||||||
|
loadInfo ? loadInfo->GetExternalContentPolicyType()
|
||||||
|
: nsIContentPolicy::TYPE_OTHER;
|
||||||
|
|
||||||
if (NS_FAILED(gHttpHandler->NewChannelId(&channelId)) ||
|
if (NS_FAILED(gHttpHandler->NewChannelId(&channelId)) ||
|
||||||
NS_FAILED(chan->Init(uri, caps, nullptr, 0, nullptr, channelId)) ||
|
NS_FAILED(chan->Init(uri, caps, nullptr, 0, nullptr, channelId, contentPolicyType)) ||
|
||||||
NS_FAILED(chan->SetAllowAltSvc(false)) ||
|
NS_FAILED(chan->SetAllowAltSvc(false)) ||
|
||||||
NS_FAILED(chan->SetRedirectMode(nsIHttpChannelInternal::REDIRECT_MODE_ERROR)) ||
|
NS_FAILED(chan->SetRedirectMode(nsIHttpChannelInternal::REDIRECT_MODE_ERROR)) ||
|
||||||
NS_FAILED(chan->SetLoadInfo(loadInfo)) ||
|
NS_FAILED(chan->SetLoadInfo(loadInfo)) ||
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,8 @@ HttpBaseChannel::Init(nsIURI *aURI,
|
||||||
nsProxyInfo *aProxyInfo,
|
nsProxyInfo *aProxyInfo,
|
||||||
uint32_t aProxyResolveFlags,
|
uint32_t aProxyResolveFlags,
|
||||||
nsIURI *aProxyURI,
|
nsIURI *aProxyURI,
|
||||||
const nsID& aChannelId)
|
const nsID& aChannelId,
|
||||||
|
nsContentPolicyType aContentPolicyType)
|
||||||
{
|
{
|
||||||
LOG(("HttpBaseChannel::Init [this=%p]\n", this));
|
LOG(("HttpBaseChannel::Init [this=%p]\n", this));
|
||||||
|
|
||||||
|
|
@ -200,7 +201,7 @@ HttpBaseChannel::Init(nsIURI *aURI,
|
||||||
rv = mRequestHead.SetHeader(nsHttp::Host, hostLine);
|
rv = mRequestHead.SetHeader(nsHttp::Host, hostLine);
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
rv = gHttpHandler->AddStandardRequestHeaders(&mRequestHead, isHTTPS);
|
rv = gHttpHandler->AddStandardRequestHeaders(&mRequestHead, isHTTPS, aContentPolicyType);
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
nsAutoCString type;
|
nsAutoCString type;
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,8 @@ public:
|
||||||
virtual nsresult Init(nsIURI *aURI, uint32_t aCaps, nsProxyInfo *aProxyInfo,
|
virtual nsresult Init(nsIURI *aURI, uint32_t aCaps, nsProxyInfo *aProxyInfo,
|
||||||
uint32_t aProxyResolveFlags,
|
uint32_t aProxyResolveFlags,
|
||||||
nsIURI *aProxyURI,
|
nsIURI *aProxyURI,
|
||||||
const nsID& aChannelId);
|
const nsID& aChannelId,
|
||||||
|
nsContentPolicyType aContentPolicyType);
|
||||||
|
|
||||||
// nsIRequest
|
// nsIRequest
|
||||||
NS_IMETHOD GetName(nsACString& aName) override;
|
NS_IMETHOD GetName(nsACString& aName) override;
|
||||||
|
|
|
||||||
|
|
@ -324,10 +324,16 @@ nsHttpChannel::Init(nsIURI *uri,
|
||||||
nsProxyInfo *proxyInfo,
|
nsProxyInfo *proxyInfo,
|
||||||
uint32_t proxyResolveFlags,
|
uint32_t proxyResolveFlags,
|
||||||
nsIURI *proxyURI,
|
nsIURI *proxyURI,
|
||||||
const nsID& channelId)
|
const nsID& channelId,
|
||||||
|
nsContentPolicyType aContentPolicyType)
|
||||||
{
|
{
|
||||||
nsresult rv = HttpBaseChannel::Init(uri, caps, proxyInfo,
|
nsresult rv = HttpBaseChannel::Init(uri,
|
||||||
proxyResolveFlags, proxyURI, channelId);
|
caps,
|
||||||
|
proxyInfo,
|
||||||
|
proxyResolveFlags,
|
||||||
|
proxyURI,
|
||||||
|
channelId,
|
||||||
|
aContentPolicyType);
|
||||||
if (NS_FAILED(rv))
|
if (NS_FAILED(rv))
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,8 @@ public:
|
||||||
virtual nsresult Init(nsIURI *aURI, uint32_t aCaps, nsProxyInfo *aProxyInfo,
|
virtual nsresult Init(nsIURI *aURI, uint32_t aCaps, nsProxyInfo *aProxyInfo,
|
||||||
uint32_t aProxyResolveFlags,
|
uint32_t aProxyResolveFlags,
|
||||||
nsIURI *aProxyURI,
|
nsIURI *aProxyURI,
|
||||||
const nsID& aChannelId) override;
|
const nsID& aChannelId,
|
||||||
|
nsContentPolicyType aContentPolicyType) override;
|
||||||
|
|
||||||
nsresult OnPush(const nsACString &uri, Http2PushedStream *pushedStream);
|
nsresult OnPush(const nsACString &uri, Http2PushedStream *pushedStream);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -468,7 +468,9 @@ nsHttpHandler::InitConnectionMgr()
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsHttpHandler::AddStandardRequestHeaders(nsHttpRequestHead *request, bool isSecure)
|
nsHttpHandler::AddStandardRequestHeaders(nsHttpRequestHead *request,
|
||||||
|
bool isSecure,
|
||||||
|
nsContentPolicyType aContentPolicyType)
|
||||||
{
|
{
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
|
|
||||||
|
|
@ -481,7 +483,20 @@ nsHttpHandler::AddStandardRequestHeaders(nsHttpRequestHead *request, bool isSecu
|
||||||
// Add the "Accept" header. Note, this is set as an override because the
|
// Add the "Accept" header. Note, this is set as an override because the
|
||||||
// service worker expects to see it. The other "default" headers are
|
// service worker expects to see it. The other "default" headers are
|
||||||
// hidden from service worker interception.
|
// hidden from service worker interception.
|
||||||
rv = request->SetHeader(nsHttp::Accept, mAccept,
|
nsAutoCString accept;
|
||||||
|
if (aContentPolicyType == nsIContentPolicy::TYPE_DOCUMENT ||
|
||||||
|
aContentPolicyType == nsIContentPolicy::TYPE_SUBDOCUMENT) {
|
||||||
|
accept.Assign(mAcceptNavigation);
|
||||||
|
} else if (aContentPolicyType == nsIContentPolicy::TYPE_IMAGE ||
|
||||||
|
aContentPolicyType == nsIContentPolicy::TYPE_IMAGESET) {
|
||||||
|
accept.Assign(mAcceptImage);
|
||||||
|
} else if (aContentPolicyType == nsIContentPolicy::TYPE_STYLESHEET) {
|
||||||
|
accept.Assign(mAcceptStyle);
|
||||||
|
} else {
|
||||||
|
accept.Assign(mAcceptDefault);
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = request->SetHeader(nsHttp::Accept, accept,
|
||||||
false, nsHttpHeaderArray::eVarietyRequestOverride);
|
false, nsHttpHeaderArray::eVarietyRequestOverride);
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
|
|
@ -1268,12 +1283,36 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
|
||||||
mQoSBits = (uint8_t) clamped(val, 0, 0xff);
|
mQoSBits = (uint8_t) clamped(val, 0, 0xff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PREF_CHANGED(HTTP_PREF("accept.navigation"))) {
|
||||||
|
nsXPIDLCString accept;
|
||||||
|
rv = prefs->GetCharPref(HTTP_PREF("accept.navigation"),
|
||||||
|
getter_Copies(accept));
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
SetAccept(accept, ACCEPT_NAVIGATION);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PREF_CHANGED(HTTP_PREF("accept.image"))) {
|
||||||
|
nsXPIDLCString accept;
|
||||||
|
rv = prefs->GetCharPref(HTTP_PREF("accept.image"),
|
||||||
|
getter_Copies(accept));
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
SetAccept(accept, ACCEPT_IMAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PREF_CHANGED(HTTP_PREF("accept.style"))) {
|
||||||
|
nsXPIDLCString accept;
|
||||||
|
rv = prefs->GetCharPref(HTTP_PREF("accept.style"),
|
||||||
|
getter_Copies(accept));
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
SetAccept(accept, ACCEPT_STYLE);
|
||||||
|
}
|
||||||
|
|
||||||
if (PREF_CHANGED(HTTP_PREF("accept.default"))) {
|
if (PREF_CHANGED(HTTP_PREF("accept.default"))) {
|
||||||
nsXPIDLCString accept;
|
nsXPIDLCString accept;
|
||||||
rv = prefs->GetCharPref(HTTP_PREF("accept.default"),
|
rv = prefs->GetCharPref(HTTP_PREF("accept.default"),
|
||||||
getter_Copies(accept));
|
getter_Copies(accept));
|
||||||
if (NS_SUCCEEDED(rv))
|
if (NS_SUCCEEDED(rv))
|
||||||
SetAccept(accept);
|
SetAccept(accept, ACCEPT_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PREF_CHANGED(HTTP_PREF("accept-encoding"))) {
|
if (PREF_CHANGED(HTTP_PREF("accept-encoding"))) {
|
||||||
|
|
@ -1897,9 +1936,21 @@ nsHttpHandler::SetAcceptLanguages()
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsHttpHandler::SetAccept(const char *aAccept)
|
nsHttpHandler::SetAccept(const char *aAccept, AcceptType aType)
|
||||||
{
|
{
|
||||||
mAccept = aAccept;
|
switch (aType) {
|
||||||
|
case ACCEPT_NAVIGATION:
|
||||||
|
mAcceptNavigation = aAccept;
|
||||||
|
break;
|
||||||
|
case ACCEPT_IMAGE:
|
||||||
|
mAcceptImage = aAccept;
|
||||||
|
break;
|
||||||
|
case ACCEPT_STYLE:
|
||||||
|
mAcceptStyle = aAccept;
|
||||||
|
break;
|
||||||
|
case ACCEPT_DEFAULT:
|
||||||
|
mAcceptDefault = aAccept;
|
||||||
|
}
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2057,7 +2108,11 @@ nsHttpHandler::NewProxiedChannel2(nsIURI *uri,
|
||||||
rv = NewChannelId(&channelId);
|
rv = NewChannelId(&channelId);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
rv = httpChannel->Init(uri, caps, proxyInfo, proxyResolveFlags, proxyURI, channelId);
|
nsContentPolicyType contentPolicyType =
|
||||||
|
aLoadInfo ? aLoadInfo->GetExternalContentPolicyType()
|
||||||
|
: nsIContentPolicy::TYPE_OTHER;
|
||||||
|
|
||||||
|
rv = httpChannel->Init(uri, caps, proxyInfo, proxyResolveFlags, proxyURI, channelId, contentPolicyType);
|
||||||
if (NS_FAILED(rv))
|
if (NS_FAILED(rv))
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
#include "nsCOMPtr.h"
|
#include "nsCOMPtr.h"
|
||||||
#include "nsWeakReference.h"
|
#include "nsWeakReference.h"
|
||||||
|
|
||||||
|
#include "nsIContentPolicy.h"
|
||||||
#include "nsIHttpProtocolHandler.h"
|
#include "nsIHttpProtocolHandler.h"
|
||||||
#include "nsIObserver.h"
|
#include "nsIObserver.h"
|
||||||
#include "nsISpeculativeConnect.h"
|
#include "nsISpeculativeConnect.h"
|
||||||
|
|
@ -50,6 +51,14 @@ enum FrameCheckLevel {
|
||||||
FRAMECHECK_STRICT
|
FRAMECHECK_STRICT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Fetch spec different http Accept types
|
||||||
|
enum AcceptType {
|
||||||
|
ACCEPT_NAVIGATION,
|
||||||
|
ACCEPT_IMAGE,
|
||||||
|
ACCEPT_STYLE,
|
||||||
|
ACCEPT_DEFAULT,
|
||||||
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// nsHttpHandler - protocol handler for HTTP and HTTPS
|
// nsHttpHandler - protocol handler for HTTP and HTTPS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -70,7 +79,7 @@ public:
|
||||||
nsHttpHandler();
|
nsHttpHandler();
|
||||||
|
|
||||||
nsresult Init();
|
nsresult Init();
|
||||||
nsresult AddStandardRequestHeaders(nsHttpRequestHead *, bool isSecure);
|
nsresult AddStandardRequestHeaders(nsHttpRequestHead *, bool isSecure, nsContentPolicyType aContentPolicyType);
|
||||||
nsresult AddConnectionHeader(nsHttpRequestHead *,
|
nsresult AddConnectionHeader(nsHttpRequestHead *,
|
||||||
uint32_t capabilities);
|
uint32_t capabilities);
|
||||||
bool IsAcceptableEncoding(const char *encoding, bool isSecure);
|
bool IsAcceptableEncoding(const char *encoding, bool isSecure);
|
||||||
|
|
@ -385,7 +394,7 @@ private:
|
||||||
void InitUserAgentComponents();
|
void InitUserAgentComponents();
|
||||||
void PrefsChanged(nsIPrefBranch *prefs, const char *pref);
|
void PrefsChanged(nsIPrefBranch *prefs, const char *pref);
|
||||||
|
|
||||||
nsresult SetAccept(const char *);
|
nsresult SetAccept(const char *, AcceptType aType);
|
||||||
nsresult SetAcceptLanguages();
|
nsresult SetAcceptLanguages();
|
||||||
nsresult SetAcceptEncodings(const char *, bool mIsSecure);
|
nsresult SetAcceptEncodings(const char *, bool mIsSecure);
|
||||||
|
|
||||||
|
|
@ -394,8 +403,8 @@ private:
|
||||||
void NotifyObservers(nsIHttpChannel *chan, const char *event);
|
void NotifyObservers(nsIHttpChannel *chan, const char *event);
|
||||||
|
|
||||||
static void TimerCallback(nsITimer * aTimer, void * aClosure);
|
static void TimerCallback(nsITimer * aTimer, void * aClosure);
|
||||||
private:
|
|
||||||
|
|
||||||
|
private:
|
||||||
// cached services
|
// cached services
|
||||||
nsMainThreadPtrHandle<nsIIOService> mIOService;
|
nsMainThreadPtrHandle<nsIIOService> mIOService;
|
||||||
nsMainThreadPtrHandle<nsIStreamConverterService> mStreamConvSvc;
|
nsMainThreadPtrHandle<nsIStreamConverterService> mStreamConvSvc;
|
||||||
|
|
@ -460,7 +469,10 @@ private:
|
||||||
bool mPipeliningOverSSL;
|
bool mPipeliningOverSSL;
|
||||||
bool mEnforceAssocReq;
|
bool mEnforceAssocReq;
|
||||||
|
|
||||||
nsCString mAccept;
|
nsCString mAcceptNavigation;
|
||||||
|
nsCString mAcceptImage;
|
||||||
|
nsCString mAcceptStyle;
|
||||||
|
nsCString mAcceptDefault;
|
||||||
nsCString mAcceptLanguages;
|
nsCString mAcceptLanguages;
|
||||||
nsCString mHttpAcceptEncodings;
|
nsCString mHttpAcceptEncodings;
|
||||||
nsCString mHttpsAcceptEncodings;
|
nsCString mHttpsAcceptEncodings;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue