Bug 1733357 - Expose Nimbus API to all platforms r=necko-reviewers,valentin,k88hudson

Differential Revision: https://phabricator.services.mozilla.com/D127938
This commit is contained in:
Andrei Oprea 2021-10-20 17:30:59 +00:00
Родитель ec3416d756
Коммит 0de35978e5
6 изменённых файлов: 19 добавлений и 25 удалений

Просмотреть файл

@ -99,9 +99,7 @@
# include "nsCocoaFeatures.h" # include "nsCocoaFeatures.h"
#endif #endif
#if defined(MOZ_BUILD_APP_IS_BROWSER) && !defined(ANDROID) #include "mozilla/browser/NimbusFeatures.h"
# include "mozilla/browser/NimbusFeatures.h"
#endif // MOZ_BUILD_APP_IS_BROWSER && !ANDROID
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#include "mozilla/net/HttpChannelChild.h" #include "mozilla/net/HttpChannelChild.h"
@ -129,10 +127,8 @@
#define NS_HTTP_PROTOCOL_FLAGS \ #define NS_HTTP_PROTOCOL_FLAGS \
(URI_STD | ALLOWS_PROXY | ALLOWS_PROXY_HTTP | URI_LOADABLE_BY_ANYONE) (URI_STD | ALLOWS_PROXY | ALLOWS_PROXY_HTTP | URI_LOADABLE_BY_ANYONE)
#if defined(MOZ_BUILD_APP_IS_BROWSER) && !defined(ANDROID) #define UA_EXPERIMENT_NAME "firefox100"_ns
# define UA_EXPERIMENT_NAME "firefox100"_ns #define UA_EXPERIMENT_VAR "firefoxVersion"_ns
# define UA_EXPERIMENT_VAR "firefoxVersion"_ns
#endif // MOZ_BUILD_APP_IS_BROWSER && !ANDROID
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -142,7 +138,6 @@ namespace mozilla::net {
LazyLogModule gHttpLog("nsHttp"); LazyLogModule gHttpLog("nsHttp");
#if defined(MOZ_BUILD_APP_IS_BROWSER) && !defined(ANDROID)
static void ExperimentUserAgentUpdated(const char* /* aNimbusPref */, static void ExperimentUserAgentUpdated(const char* /* aNimbusPref */,
void* aUserData) { void* aUserData) {
MOZ_ASSERT(aUserData != nullptr); MOZ_ASSERT(aUserData != nullptr);
@ -176,7 +171,6 @@ static void ExperimentUserAgentUpdated(const char* /* aNimbusPref */,
aExperimentUserAgent->Truncate(); aExperimentUserAgent->Truncate();
aExperimentUserAgent->AppendPrintf(uaFormat, firefoxVersion, firefoxVersion); aExperimentUserAgent->AppendPrintf(uaFormat, firefoxVersion, firefoxVersion);
} }
#endif // MOZ_BUILD_APP_IS_BROWSER && !ANDROID
#ifdef ANDROID #ifdef ANDROID
static nsCString GetDeviceModelId() { static nsCString GetDeviceModelId() {
@ -279,9 +273,7 @@ nsHttpHandler::nsHttpHandler()
mUserAgentOverride.SetIsVoid(true); mUserAgentOverride.SetIsVoid(true);
#if defined(MOZ_BUILD_APP_IS_BROWSER) && !defined(ANDROID)
mExperimentUserAgent.SetIsVoid(true); mExperimentUserAgent.SetIsVoid(true);
#endif // MOZ_BUILD_APP_IS_BROWSER && !ANDROID
MOZ_ASSERT(!gHttpHandler, "HTTP handler already created!"); MOZ_ASSERT(!gHttpHandler, "HTTP handler already created!");
@ -389,14 +381,12 @@ nsresult nsHttpHandler::Init() {
gCallbackPrefs, this); gCallbackPrefs, this);
PrefsChanged(nullptr); PrefsChanged(nullptr);
#if defined(MOZ_BUILD_APP_IS_BROWSER) && !defined(ANDROID)
// monitor Firefox Version Experiment enrollment // monitor Firefox Version Experiment enrollment
NimbusFeatures::OnUpdate(UA_EXPERIMENT_NAME, UA_EXPERIMENT_VAR, NimbusFeatures::OnUpdate(UA_EXPERIMENT_NAME, UA_EXPERIMENT_VAR,
ExperimentUserAgentUpdated, &mExperimentUserAgent); ExperimentUserAgentUpdated, &mExperimentUserAgent);
// Load the experiment state once for startup // Load the experiment state once for startup
ExperimentUserAgentUpdated("", &mExperimentUserAgent); ExperimentUserAgentUpdated("", &mExperimentUserAgent);
#endif // MOZ_BUILD_APP_IS_BROWSER && !ANDROID
Telemetry::ScalarSet(Telemetry::ScalarID::NETWORKING_HTTP3_ENABLED, Telemetry::ScalarSet(Telemetry::ScalarID::NETWORKING_HTTP3_ENABLED,
mHttp3Enabled); mHttp3Enabled);
@ -759,13 +749,11 @@ const nsCString& nsHttpHandler::UserAgent() {
return mUserAgentOverride; return mUserAgentOverride;
} }
#if defined(MOZ_BUILD_APP_IS_BROWSER) && !defined(ANDROID)
if (!mExperimentUserAgent.IsVoid()) { if (!mExperimentUserAgent.IsVoid()) {
LOG(("using Firefox 100 Experiment User-Agent : %s\n", LOG(("using Firefox 100 Experiment User-Agent : %s\n",
mExperimentUserAgent.get())); mExperimentUserAgent.get()));
return mExperimentUserAgent; return mExperimentUserAgent;
} }
#endif // MOZ_BUILD_APP_IS_BROWSER && !ANDROID
if (mUserAgentIsDirty) { if (mUserAgentIsDirty) {
BuildUserAgent(); BuildUserAgent();

Просмотреть файл

@ -648,9 +648,7 @@ class nsHttpHandler final : public nsIHttpProtocolHandler,
nsCString mSpoofedUserAgent; nsCString mSpoofedUserAgent;
nsCString mUserAgentOverride; nsCString mUserAgentOverride;
#if defined(MOZ_BUILD_APP_IS_BROWSER) && !defined(ANDROID)
nsCString mExperimentUserAgent; nsCString mExperimentUserAgent;
#endif // MOZ_BUILD_APP_IS_BROWSER && !ANDROID
bool mUserAgentIsDirty{true}; // true if mUserAgent should be rebuilt bool mUserAgentIsDirty{true}; // true if mUserAgent should be rebuilt
bool mAcceptLanguagesIsDirty{true}; bool mAcceptLanguagesIsDirty{true};

Просмотреть файл

@ -129,8 +129,7 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] != "android":
if CONFIG["MOZ_BUILD_APP"] == "browser": if CONFIG["MOZ_BUILD_APP"] == "browser":
DIRS += ["normandy", "messaging-system"] DIRS += ["normandy", "messaging-system"]
if CONFIG["MOZ_BUILD_APP"] in ["browser", "comm/mail"]: DIRS += ["nimbus"]
DIRS += ["nimbus"]
if CONFIG["MOZ_BACKGROUNDTASKS"]: if CONFIG["MOZ_BACKGROUNDTASKS"]:
DIRS += ["backgroundtasks"] DIRS += ["backgroundtasks"]

Просмотреть файл

@ -291,11 +291,14 @@ const ExperimentAPI = {
*/ */
const NimbusFeatures = {}; const NimbusFeatures = {};
for (let feature in FeatureManifest) { for (let feature in FeatureManifest) {
XPCOMUtils.defineLazyGetter( XPCOMUtils.defineLazyGetter(NimbusFeatures, feature, () => {
NimbusFeatures, if (AppConstants.MOZ_BUILD_APP !== "browser") {
feature, throw new Error(
() => new _ExperimentFeature(feature) `NimbusFeatures.${feature} APIs are only available for browser builds.`
); );
}
return new _ExperimentFeature(feature);
});
} }
class _ExperimentFeature { class _ExperimentFeature {

Просмотреть файл

@ -4,6 +4,9 @@ support-files =
prefs = prefs =
# This turns off the update interval for fetching recipes from Remote Settings # This turns off the update interval for fetching recipes from Remote Settings
app.normandy.run_interval_seconds=0 app.normandy.run_interval_seconds=0
skip-if =
toolkit == "android"
appname == "thunderbird"
[browser_experiment_single_feature_enrollment.js] [browser_experiment_single_feature_enrollment.js]
[browser_remotesettingsexperimentloader_remote_defaults.js] [browser_remotesettingsexperimentloader_remote_defaults.js]

Просмотреть файл

@ -1,9 +1,12 @@
[DEFAULT] [DEFAULT]
head = head.js head = head.js
tags = messaging-system tags = nimbus
firefox-appdir = browser firefox-appdir = browser
support-files = support-files =
reference_aboutwelcome_experiment_content.json reference_aboutwelcome_experiment_content.json
skip-if =
toolkit == "android"
appname == "thunderbird"
[test_ExperimentManager_context.js] [test_ExperimentManager_context.js]
[test_ExperimentManager_enroll.js] [test_ExperimentManager_enroll.js]