author | Richard Newman <rnewman@mozilla.com> |
Sun, 01 Dec 2013 21:53:16 -0800 | |
changeset 158201 | 606c4b4ab77f858f023e1f838219ceba45c7448d |
parent 158200 | 9ebed437d78fdc839e50dfca9122ee3c6fd36a4a |
child 158202 | 686b4b5a5be3a5da1ddee082319944ebf6a0e816 |
push id | 25738 |
push user | cbook@mozilla.com |
push date | Mon, 02 Dec 2013 11:44:25 +0000 |
treeherder | mozilla-central@8a5221ecaa67 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mfinkle |
bugs | 936756 |
milestone | 28.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/mobile/android/base/GeckoAppShell.java +++ b/mobile/android/base/GeckoAppShell.java @@ -1581,17 +1581,16 @@ public class GeckoAppShell return LINK_TYPE_4G; // 3.9G case TelephonyManager.NETWORK_TYPE_UNKNOWN: default: Log.w(LOGTAG, "Connected to an unknown mobile network!"); return LINK_TYPE_UNKNOWN; } } - @WrapElementForJNI public static void setSelectedLocale(String localeCode) { /* Bug 713464: This method is still called from Gecko side. Earlier we had an option to run Firefox in a language other than system's language. However, this is not supported as of now. Gecko resets the locale to en-US by calling this function with an empty string. This affects GeckoPreferences activity in multi-locale builds. N.B., if this code ever becomes live again, you need to hook it up to locale
--- a/widget/android/GeneratedJNIWrappers.cpp +++ b/widget/android/GeneratedJNIWrappers.cpp @@ -72,17 +72,16 @@ jmethodID GeckoAppShell::jPerformHapticF jmethodID GeckoAppShell::jPumpMessageLoop = 0; jmethodID GeckoAppShell::jRegisterSurfaceTextureFrameListener = 0; jmethodID GeckoAppShell::jRemovePluginView = 0; jmethodID GeckoAppShell::jScanMedia = 0; jmethodID GeckoAppShell::jScheduleRestart = 0; jmethodID GeckoAppShell::jSendMessageWrapper = 0; jmethodID GeckoAppShell::jSetFullScreen = 0; jmethodID GeckoAppShell::jSetKeepScreenOn = 0; -jmethodID GeckoAppShell::jSetSelectedLocale = 0; jmethodID GeckoAppShell::jSetURITitle = 0; jmethodID GeckoAppShell::jShowAlertNotificationWrapper = 0; jmethodID GeckoAppShell::jShowFilePickerAsyncWrapper = 0; jmethodID GeckoAppShell::jShowFilePickerForExtensionsWrapper = 0; jmethodID GeckoAppShell::jShowFilePickerForMimeTypeWrapper = 0; jmethodID GeckoAppShell::jShowInputMethodPicker = 0; jmethodID GeckoAppShell::jUnlockProfile = 0; jmethodID GeckoAppShell::jUnlockScreenOrientation = 0; @@ -153,17 +152,16 @@ void GeckoAppShell::InitStubs(JNIEnv *jE jPumpMessageLoop = getStaticMethod("pumpMessageLoop", "()Z"); jRegisterSurfaceTextureFrameListener = getStaticMethod("registerSurfaceTextureFrameListener", "(Ljava/lang/Object;I)V"); jRemovePluginView = getStaticMethod("removePluginView", "(Landroid/view/View;Z)V"); jScanMedia = getStaticMethod("scanMedia", "(Ljava/lang/String;Ljava/lang/String;)V"); jScheduleRestart = getStaticMethod("scheduleRestart", "()V"); jSendMessageWrapper = getStaticMethod("sendMessage", "(Ljava/lang/String;Ljava/lang/String;I)V"); jSetFullScreen = getStaticMethod("setFullScreen", "(Z)V"); jSetKeepScreenOn = getStaticMethod("setKeepScreenOn", "(Z)V"); - jSetSelectedLocale = getStaticMethod("setSelectedLocale", "(Ljava/lang/String;)V"); jSetURITitle = getStaticMethod("setUriTitle", "(Ljava/lang/String;Ljava/lang/String;)V"); jShowAlertNotificationWrapper = getStaticMethod("showAlertNotification", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); jShowFilePickerAsyncWrapper = getStaticMethod("showFilePickerAsync", "(Ljava/lang/String;J)V"); jShowFilePickerForExtensionsWrapper = getStaticMethod("showFilePickerForExtensions", "(Ljava/lang/String;)Ljava/lang/String;"); jShowFilePickerForMimeTypeWrapper = getStaticMethod("showFilePickerForMimeType", "(Ljava/lang/String;)Ljava/lang/String;"); jShowInputMethodPicker = getStaticMethod("showInputMethodPicker", "()V"); jUnlockProfile = getStaticMethod("unlockProfile", "()Z"); jUnlockScreenOrientation = getStaticMethod("unlockScreenOrientation", "()V"); @@ -2050,45 +2048,16 @@ void GeckoAppShell::SetKeepScreenOn(bool env->ExceptionClear(); env->PopLocalFrame(NULL); return; } env->PopLocalFrame(NULL); } -void GeckoAppShell::SetSelectedLocale(const nsAString& a0) { - JNIEnv *env = AndroidBridge::GetJNIEnv(); - if (!env) { - ALOG_BRIDGE("Aborted: No env - %s", __PRETTY_FUNCTION__); - return; - } - - if (env->PushLocalFrame(1) != 0) { - ALOG_BRIDGE("Exceptional exit of: %s", __PRETTY_FUNCTION__); - env->ExceptionDescribe(); - env->ExceptionClear(); - return; - } - - jstring j0 = AndroidBridge::NewJavaString(env, a0); - - env->CallStaticVoidMethod(mGeckoAppShellClass, jSetSelectedLocale, j0); - - if (env->ExceptionCheck()) { - ALOG_BRIDGE("Exceptional exit of: %s", __PRETTY_FUNCTION__); - env->ExceptionDescribe(); - env->ExceptionClear(); - env->PopLocalFrame(NULL); - return; - } - - env->PopLocalFrame(NULL); -} - void GeckoAppShell::SetURITitle(const nsAString& a0, const nsAString& a1) { JNIEnv *env = AndroidBridge::GetJNIEnv(); if (!env) { ALOG_BRIDGE("Aborted: No env - %s", __PRETTY_FUNCTION__); return; } if (env->PushLocalFrame(2) != 0) {
--- a/widget/android/GeneratedJNIWrappers.h +++ b/widget/android/GeneratedJNIWrappers.h @@ -79,17 +79,16 @@ public: static bool PumpMessageLoop(); static void RegisterSurfaceTextureFrameListener(jobject a0, int32_t a1); static void RemovePluginView(jobject a0, bool a1); static void ScanMedia(const nsAString& a0, const nsAString& a1); static void ScheduleRestart(); static void SendMessageWrapper(const nsAString& a0, const nsAString& a1, int32_t a2); static void SetFullScreen(bool a0); static void SetKeepScreenOn(bool a0); - static void SetSelectedLocale(const nsAString& a0); static void SetURITitle(const nsAString& a0, const nsAString& a1); static void ShowAlertNotificationWrapper(const nsAString& a0, const nsAString& a1, const nsAString& a2, const nsAString& a3, const nsAString& a4); static void ShowFilePickerAsyncWrapper(const nsAString& a0, int64_t a1); static jstring ShowFilePickerForExtensionsWrapper(const nsAString& a0); static jstring ShowFilePickerForMimeTypeWrapper(const nsAString& a0); static void ShowInputMethodPicker(); static bool UnlockProfile(); static void UnlockScreenOrientation();
--- a/widget/android/nsAppShell.cpp +++ b/widget/android/nsAppShell.cpp @@ -158,105 +158,58 @@ nsAppShell::~nsAppShell() void nsAppShell::NotifyNativeEvent() { MutexAutoLock lock(mCondLock); mQueueCond.Notify(); } -#define PREFNAME_MATCH_OS "intl.locale.matchOS" -#define PREFNAME_UA_LOCALE "general.useragent.locale" #define PREFNAME_COALESCE_TOUCHES "dom.event.touch.coalescing.enabled" static const char* kObservedPrefs[] = { - PREFNAME_MATCH_OS, - PREFNAME_UA_LOCALE, PREFNAME_COALESCE_TOUCHES, nullptr }; nsresult nsAppShell::Init() { #ifdef PR_LOGGING if (!gWidgetLog) gWidgetLog = PR_NewLogModule("Widget"); #endif nsresult rv = nsBaseAppShell::Init(); - AndroidBridge* bridge = AndroidBridge::Bridge(); - nsCOMPtr<nsIObserverService> obsServ = mozilla::services::GetObserverService(); if (obsServ) { obsServ->AddObserver(this, "xpcom-shutdown", false); } if (sPowerManagerService) sPowerManagerService->AddWakeLockListener(sWakeLockListener); - if (!bridge) - return rv; - Preferences::AddStrongObservers(this, kObservedPrefs); - - bool match; - rv = Preferences::GetBool(PREFNAME_MATCH_OS, &match); - NS_ENSURE_SUCCESS(rv, rv); - - if (match) { - GeckoAppShell::SetSelectedLocale(EmptyString()); - return NS_OK; - } - - nsAutoString locale; - rv = Preferences::GetLocalizedString(PREFNAME_UA_LOCALE, &locale); - if (NS_FAILED(rv)) { - rv = Preferences::GetString(PREFNAME_UA_LOCALE, &locale); - } - - GeckoAppShell::SetSelectedLocale(locale); mAllowCoalescingTouches = Preferences::GetBool(PREFNAME_COALESCE_TOUCHES, true); return rv; } NS_IMETHODIMP nsAppShell::Observe(nsISupports* aSubject, const char* aTopic, const PRUnichar* aData) { if (!strcmp(aTopic, "xpcom-shutdown")) { // We need to ensure no observers stick around after XPCOM shuts down // or we'll see crashes, as the app shell outlives XPConnect. mObserversHash.Clear(); return nsBaseAppShell::Observe(aSubject, aTopic, aData); - } else if (!strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID) && aData && ( - nsDependentString(aData).Equals( - NS_LITERAL_STRING(PREFNAME_UA_LOCALE)) || - nsDependentString(aData).Equals( - NS_LITERAL_STRING(PREFNAME_COALESCE_TOUCHES)) || - nsDependentString(aData).Equals( - NS_LITERAL_STRING(PREFNAME_MATCH_OS)))) { - bool match; - nsresult rv = Preferences::GetBool(PREFNAME_MATCH_OS, &match); - NS_ENSURE_SUCCESS(rv, rv); - - if (match) { - GeckoAppShell::SetSelectedLocale(EmptyString()); - return NS_OK; - } - - nsAutoString locale; - if (NS_FAILED(Preferences::GetLocalizedString(PREFNAME_UA_LOCALE, - &locale))) { - locale = Preferences::GetString(PREFNAME_UA_LOCALE); - } - - GeckoAppShell::SetSelectedLocale(locale); - + } else if (!strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID) && + aData && + nsDependentString(aData).Equals(NS_LITERAL_STRING(PREFNAME_COALESCE_TOUCHES))) { mAllowCoalescingTouches = Preferences::GetBool(PREFNAME_COALESCE_TOUCHES, true); return NS_OK; } return NS_OK; } void nsAppShell::ScheduleNativeEventCallback()