Bug 1365478 - Use BoolVarCache to cache preferences in XMLHttpRequest, r=baku

This commit is contained in:
Shawn Huang 2017-05-18 19:02:22 +08:00
parent fa3e172e3c
commit b96a934bb0
2 changed files with 44 additions and 2 deletions

View File

@ -2948,7 +2948,7 @@ XMLHttpRequestMainThread::SendInternal(const BodyExtractorBase* aBody)
mIsMappedArrayBuffer = false;
if (mResponseType == XMLHttpRequestResponseType::Arraybuffer &&
Preferences::GetBool("dom.mapped_arraybuffer.enabled", true)) {
IsMappedArrayBufferEnabled()) {
nsCOMPtr<nsIURI> uri;
nsAutoCString scheme;
@ -3049,6 +3049,40 @@ XMLHttpRequestMainThread::SendInternal(const BodyExtractorBase* aBody)
return rv;
}
/* static */
bool
XMLHttpRequestMainThread::IsMappedArrayBufferEnabled()
{
static bool sMappedArrayBufferAdded = false;
static bool sIsMappedArrayBufferEnabled;
if (!sMappedArrayBufferAdded) {
Preferences::AddBoolVarCache(&sIsMappedArrayBufferEnabled,
"dom.mapped_arraybuffer.enabled",
true);
sMappedArrayBufferAdded = true;
}
return sIsMappedArrayBufferEnabled;
}
/* static */
bool
XMLHttpRequestMainThread::IsLowercaseResponseHeader()
{
static bool sLowercaseResponseHeaderAdded = false;
static bool sIsLowercaseResponseHeaderEnabled;
if (!sLowercaseResponseHeaderAdded) {
Preferences::AddBoolVarCache(&sIsLowercaseResponseHeaderEnabled,
"dom.xhr.lowercase_header.enabled",
false);
sLowercaseResponseHeaderAdded = true;
}
return sIsLowercaseResponseHeaderEnabled;
}
// http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-setrequestheader
NS_IMETHODIMP
XMLHttpRequestMainThread::SetRequestHeader(const nsACString& aName,
@ -3767,7 +3801,7 @@ NS_IMETHODIMP XMLHttpRequestMainThread::
nsHeaderVisitor::VisitHeader(const nsACString &header, const nsACString &value)
{
if (mXHR.IsSafeHeader(header, mHttpChannel)) {
if (!Preferences::GetBool("dom.xhr.lowercase_header.enabled", false)) {
if (!IsLowercaseResponseHeader()) {
if(!mHeaderList.InsertElementSorted(HeaderEntry(header, value),
fallible)) {
return NS_ERROR_OUT_OF_MEMORY;

View File

@ -306,6 +306,14 @@ private:
void UnsuppressEventHandlingAndResume();
// Check pref "dom.mapped_arraybuffer.enabled" to make sure ArrayBuffer is
// supported.
static bool IsMappedArrayBufferEnabled();
// Check pref "dom.xhr.lowercase_header.enabled" to make sure lowercased
// response header is supported.
static bool IsLowercaseResponseHeader();
public:
virtual void
Send(JSContext* /*aCx*/, ErrorResult& aRv) override