From 3abb8e28add1be2c2ec2f53a20bd105bde64a5b2 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 15 Nov 2020 23:10:49 +0000 Subject: Revert "Issue #1684 - Remove global UA override preference and supporting code." This reverts commit 18df01eb5498c954044f96c346026da0238d2e61. Backed out for devtools breakage. --- netwerk/base/RequestContextService.cpp | 16 ++++++++++++++++ netwerk/base/nsIRequestContext.idl | 6 +++++- netwerk/protocol/http/nsHttpHandler.cpp | 12 ++++++++++++ netwerk/protocol/http/nsHttpHandler.h | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) (limited to 'netwerk') diff --git a/netwerk/base/RequestContextService.cpp b/netwerk/base/RequestContextService.cpp index 362c9ea47..7edda1845 100644 --- a/netwerk/base/RequestContextService.cpp +++ b/netwerk/base/RequestContextService.cpp @@ -33,6 +33,7 @@ private: char mCID[NSID_LENGTH]; Atomic mBlockingTransactionCount; nsAutoPtr mSpdyCache; + nsCString mUserAgentOverride; }; NS_IMPL_ISUPPORTS(RequestContext, nsIRequestContext) @@ -94,6 +95,21 @@ RequestContext::GetID(nsID *outval) return NS_OK; } +NS_IMETHODIMP +RequestContext::GetUserAgentOverride(nsACString& aUserAgentOverride) +{ + aUserAgentOverride = mUserAgentOverride; + return NS_OK; +} + +NS_IMETHODIMP +RequestContext::SetUserAgentOverride(const nsACString& aUserAgentOverride) +{ + mUserAgentOverride = aUserAgentOverride; + return NS_OK; +} + + //nsIRequestContextService RequestContextService *RequestContextService::sSelf = nullptr; diff --git a/netwerk/base/nsIRequestContext.idl b/netwerk/base/nsIRequestContext.idl index a58275216..b40ba7d18 100644 --- a/netwerk/base/nsIRequestContext.idl +++ b/netwerk/base/nsIRequestContext.idl @@ -24,7 +24,7 @@ class SpdyPushCache; * * This used to be known as nsILoadGroupConnectionInfo and nsISchedulingContext. */ -[scriptable, uuid(a1b5c243-ab9b-41a7-a208-f8a9c0c43dc2)] +[scriptable, uuid(658e3e6e-8633-4b1a-8d66-fa9f72293e63)] interface nsIRequestContext : nsISupports { /** @@ -58,6 +58,10 @@ interface nsIRequestContext : nsISupports */ [noscript] attribute SpdyPushCachePtr spdyPushCache; + /** + * This holds a cached value of the user agent override. + */ + [noscript] attribute ACString userAgentOverride; }; /** diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp index 0ae589151..7a29e041b 100644 --- a/netwerk/protocol/http/nsHttpHandler.cpp +++ b/netwerk/protocol/http/nsHttpHandler.cpp @@ -685,6 +685,11 @@ nsHttpHandler::BuildAppVersion() const nsAFlatCString & nsHttpHandler::UserAgent() { + if (mUserAgentOverride) { + LOG(("using general.useragent.override : %s\n", mUserAgentOverride.get())); + return mUserAgentOverride; + } + if (mUserAgentIsDirty) { BuildUserAgent(); mUserAgentIsDirty = false; @@ -986,6 +991,13 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref) mUserAgentIsDirty = true; } + // general.useragent.override + if (PREF_CHANGED(UA_PREF("override"))) { + prefs->GetCharPref(UA_PREF("override"), + getter_Copies(mUserAgentOverride)); + mUserAgentIsDirty = true; + } + // // HTTP options // diff --git a/netwerk/protocol/http/nsHttpHandler.h b/netwerk/protocol/http/nsHttpHandler.h index 549b82205..4f632e078 100644 --- a/netwerk/protocol/http/nsHttpHandler.h +++ b/netwerk/protocol/http/nsHttpHandler.h @@ -506,6 +506,7 @@ private: nsCString mDeviceModelId; nsCString mUserAgent; + nsXPIDLCString mUserAgentOverride; bool mUserAgentIsDirty; // true if mUserAgent should be rebuilt bool mAcceptLanguagesIsDirty; -- cgit v1.2.3