$OpenBSD$ index b34cba3..7eaf007 100644 --- dom/workers/RuntimeService.cpp.orig Fri Feb 20 15:40:37 2015 +++ dom/workers/RuntimeService.cpp Fri Feb 20 15:40:37 2015 @@ -110,6 +110,10 @@ static_assert(MAX_WORKERS_PER_DOMAIN >= 1, #define CC_REQUEST_OBSERVER_TOPIC "child-cc-request" #define MEMORY_PRESSURE_OBSERVER_TOPIC "memory-pressure" +#define PREF_GENERAL_APPNAME_OVERRIDE "general.appname.override" +#define PREF_GENERAL_APPVERSION_OVERRIDE "general.appversion.override" +#define PREF_GENERAL_PLATFORM_OVERRIDE "general.platform.override" + #define BROADCAST_ALL_WORKERS(_func, ...) \ PR_BEGIN_MACRO \ AssertIsOnMainThread(); \ @@ -981,6 +985,48 @@ private: } }; +void +AppNameOverrideChanged(const char* /* aPrefName */, void* /* aClosure */) +{ + AssertIsOnMainThread(); + + const nsAdoptingString& override = + mozilla::Preferences::GetString(PREF_GENERAL_APPNAME_OVERRIDE); + + RuntimeService* runtime = RuntimeService::GetService(); + if (runtime) { + runtime->UpdateAppNameOverridePreference(override); + } +} + +void +AppVersionOverrideChanged(const char* /* aPrefName */, void* /* aClosure */) +{ + AssertIsOnMainThread(); + + const nsAdoptingString& override = + mozilla::Preferences::GetString(PREF_GENERAL_APPVERSION_OVERRIDE); + + RuntimeService* runtime = RuntimeService::GetService(); + if (runtime) { + runtime->UpdateAppVersionOverridePreference(override); + } +} + +void +PlatformOverrideChanged(const char* /* aPrefName */, void* /* aClosure */) +{ + AssertIsOnMainThread(); + + const nsAdoptingString& override = + mozilla::Preferences::GetString(PREF_GENERAL_PLATFORM_OVERRIDE); + + RuntimeService* runtime = RuntimeService::GetService(); + if (runtime) { + runtime->UpdatePlatformOverridePreference(override); + } +} + } /* anonymous namespace */ class RuntimeService::WorkerThread MOZ_FINAL : public nsThread @@ -1347,15 +1393,25 @@ RuntimeService::RegisterWorker(JSContext* aCx, WorkerPrivate* aWorkerPrivate) } else { if (!mNavigatorPropertiesLoaded) { - NS_GetNavigatorAppName(mNavigatorProperties.mAppName); - if (NS_FAILED(NS_GetNavigatorAppVersion(mNavigatorProperties.mAppVersion)) || - NS_FAILED(NS_GetNavigatorPlatform(mNavigatorProperties.mPlatform)) || + Navigator::AppName(mNavigatorProperties.mAppName, + false /* aUsePrefOverriddenValue */); + if (NS_FAILED(Navigator::GetAppVersion(mNavigatorProperties.mAppVersion, + false /* aUsePrefOverriddenValue */)) || + NS_FAILED(Navigator::GetPlatform(mNavigatorProperties.mPlatform, + false /* aUsePrefOverriddenValue */)) || NS_FAILED(NS_GetNavigatorUserAgent(mNavigatorProperties.mUserAgent))) { JS_ReportError(aCx, "Failed to load navigator strings!"); UnregisterWorker(aCx, aWorkerPrivate); return false; } + mNavigatorProperties.mAppNameOverridden = + mozilla::Preferences::GetString(PREF_GENERAL_APPNAME_OVERRIDE); + mNavigatorProperties.mAppVersionOverridden = + mozilla::Preferences::GetString(PREF_GENERAL_APPVERSION_OVERRIDE); + mNavigatorProperties.mPlatformOverridden = + mozilla::Preferences::GetString(PREF_GENERAL_PLATFORM_OVERRIDE); + mNavigatorPropertiesLoaded = true; } @@ -1696,6 +1752,18 @@ RuntimeService::Init() PREF_WORKERS_OPTIONS_PREFIX, nullptr)) || NS_FAILED(Preferences::RegisterCallbackAndCall( + AppNameOverrideChanged, + PREF_GENERAL_APPNAME_OVERRIDE, + nullptr)) || + NS_FAILED(Preferences::RegisterCallbackAndCall( + AppVersionOverrideChanged, + PREF_GENERAL_APPVERSION_OVERRIDE, + nullptr)) || + NS_FAILED(Preferences::RegisterCallbackAndCall( + PlatformOverrideChanged, + PREF_GENERAL_PLATFORM_OVERRIDE, + nullptr)) || + NS_FAILED(Preferences::RegisterCallbackAndCall( JSVersionChanged, PREF_WORKERS_LATEST_JS_VERSION, nullptr))) { @@ -1841,6 +1909,15 @@ RuntimeService::Cleanup() if (NS_FAILED(Preferences::UnregisterCallback(JSVersionChanged, PREF_WORKERS_LATEST_JS_VERSION, nullptr)) || + NS_FAILED(Preferences::UnregisterCallback(AppNameOverrideChanged, + PREF_GENERAL_APPNAME_OVERRIDE, + nullptr)) || + NS_FAILED(Preferences::UnregisterCallback(AppVersionOverrideChanged, + PREF_GENERAL_APPVERSION_OVERRIDE, + nullptr)) || + NS_FAILED(Preferences::UnregisterCallback(PlatformOverrideChanged, + PREF_GENERAL_PLATFORM_OVERRIDE, + nullptr)) || NS_FAILED(Preferences::UnregisterCallback(LoadRuntimeAndContextOptions, PREF_JS_OPTIONS_PREFIX, nullptr)) || @@ -2235,6 +2312,27 @@ RuntimeService::UpdateAllWorkerRuntimeAndContextOptions() } void +RuntimeService::UpdateAppNameOverridePreference(const nsAString& aValue) +{ + AssertIsOnMainThread(); + mNavigatorProperties.mAppNameOverridden = aValue; +} + +void +RuntimeService::UpdateAppVersionOverridePreference(const nsAString& aValue) +{ + AssertIsOnMainThread(); + mNavigatorProperties.mAppVersionOverridden = aValue; +} + +void +RuntimeService::UpdatePlatformOverridePreference(const nsAString& aValue) +{ + AssertIsOnMainThread(); + mNavigatorProperties.mPlatformOverridden = aValue; +} + +void RuntimeService::UpdateAllWorkerPreference(WorkerPreference aPref, bool aValue) { BROADCAST_ALL_WORKERS(UpdatePreference, aPref, aValue);