Bug 1346098 - Don't expose intlUtils without ENABLE_INTL_API. r?smaug
Fennec team decides that Fennec will turn off ICU support on release build now. So we need to able be build Firefox without ENABLE_INTL_API (
Bug 1343725).
Bug 1341994 uses mozIMozIntl interface, but it is only defined with ENABLE_INTL_API. So we shouldn't expose intlUtils if ICU is turned off.
MozReview-Commit-ID: EiQKiF4BRQv
--- a/dom/base/moz.build
+++ b/dom/base/moz.build
@@ -181,17 +181,16 @@ EXPORTS.mozilla.dom += [
'FragmentOrElement.h',
'FromParser.h',
'GroupedSHistory.h',
'IdleDeadline.h',
'IdleRequest.h',
'ImageEncoder.h',
'ImageTracker.h',
'ImportManager.h',
- 'IntlUtils.h',
'Link.h',
'Location.h',
'NameSpaceConstants.h',
'Navigator.h',
'NodeInfo.h',
'NodeInfoInlines.h',
'NodeIterator.h',
'PartialSHistory.h',
@@ -255,17 +254,16 @@ UNIFIED_SOURCES += [
'FormData.cpp',
'FragmentOrElement.cpp',
'GroupedSHistory.cpp',
'IdleDeadline.cpp',
'IdleRequest.cpp',
'ImageEncoder.cpp',
'ImageTracker.cpp',
'ImportManager.cpp',
- 'IntlUtils.cpp',
'Link.cpp',
'Location.cpp',
'Navigator.cpp',
'NodeInfo.cpp',
'NodeIterator.cpp',
'nsAtomListUtils.cpp',
'nsAttrAndChildArray.cpp',
'nsAttrValue.cpp',
@@ -370,16 +368,24 @@ if CONFIG['MOZ_WEBRTC']:
'nsDOMDataChannel.cpp',
]
if CONFIG['FUZZING']:
UNIFIED_SOURCES += [
'FuzzingFunctions.cpp',
]
+if CONFIG['ENABLE_INTL_API']:
+ UNIFIED_SOURCES += [
+ 'IntlUtils.cpp',
+ ]
+ EXPORTS.mozilla.dom += [
+ 'IntlUtils.h',
+ ]
+
# these files couldn't be in UNIFIED_SOURCES for now for reasons given below:
SOURCES += [
# Several conflicts with other bindings.
'DOMIntersectionObserver.cpp',
# Because of OS X headers.
'nsContentUtils.cpp',
# this file doesn't like windows.h
'nsDOMWindowUtils.cpp',
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -222,17 +222,19 @@
#include "TimeChangeObserver.h"
#include "mozilla/dom/AudioContext.h"
#include "mozilla/dom/BrowserElementDictionariesBinding.h"
#include "mozilla/dom/cache/CacheStorage.h"
#include "mozilla/dom/Console.h"
#include "mozilla/dom/Fetch.h"
#include "mozilla/dom/FunctionBinding.h"
#include "mozilla/dom/HashChangeEvent.h"
+#ifdef ENABLE_INTL_API
#include "mozilla/dom/IntlUtils.h"
+#endif
#include "mozilla/dom/MozSelfSupportBinding.h"
#include "mozilla/dom/PopStateEvent.h"
#include "mozilla/dom/PopupBlockedEvent.h"
#include "mozilla/dom/PrimitiveConversions.h"
#include "mozilla/dom/WindowBinding.h"
#include "nsITabChild.h"
#include "mozilla/dom/MediaQueryList.h"
#include "mozilla/dom/ScriptSettings.h"
@@ -1916,17 +1918,19 @@ nsGlobalWindow::CleanUp()
if (mIdleTimer) {
mIdleTimer->Cancel();
mIdleTimer = nullptr;
}
mServiceWorkerRegistrationTable.Clear();
+#ifdef ENABLE_INTL_API
mIntlUtils = nullptr;
+#endif
}
void
nsGlobalWindow::ClearControllers()
{
if (mControllers) {
uint32_t count;
mControllers->GetControllerCount(&count);
@@ -2207,17 +2211,19 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mScrollbars)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCrypto)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mU2F)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mConsole)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAudioWorklet)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPaintWorklet)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mExternal)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mMozSelfSupport)
+#ifdef ENABLE_INTL_API
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mIntlUtils)
+#endif
tmp->TraverseHostObjectURIs(cb);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsGlobalWindow)
nsGlobalWindow::CleanupCachedXBLHandlers(tmp);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mContext)
@@ -2282,17 +2288,19 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ns
NS_IMPL_CYCLE_COLLECTION_UNLINK(mScrollbars)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCrypto)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mU2F)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mConsole)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAudioWorklet)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mPaintWorklet)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mExternal)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mMozSelfSupport)
+#ifdef ENABLE_INTL_API
NS_IMPL_CYCLE_COLLECTION_UNLINK(mIntlUtils)
+#endif
tmp->UnlinkHostObjectURIs();
NS_IMPL_CYCLE_COLLECTION_UNLINK(mIdleRequestExecutor)
tmp->DisableIdleCallbackRequests();
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
@@ -14926,24 +14934,25 @@ nsGlobalWindow::GetAppLocales(nsTArray<n
nsTArray<nsCString> appLocales;
mozilla::intl::LocaleService::GetInstance()->GetAppLocales(appLocales);
for (uint32_t i = 0; i < appLocales.Length(); i++) {
aLocales.AppendElement(NS_ConvertUTF8toUTF16(appLocales[i]));
}
}
+#ifdef ENABLE_INTL_API
IntlUtils*
nsGlobalWindow::GetIntlUtils(ErrorResult& aError)
{
MOZ_RELEASE_ASSERT(IsInnerWindow());
if (!mIntlUtils) {
mIntlUtils = new IntlUtils(AsInner());
}
return mIntlUtils;
}
-
+#endif
template class nsPIDOMWindow<mozIDOMWindowProxy>;
template class nsPIDOMWindow<mozIDOMWindow>;
template class nsPIDOMWindow<nsISupports>;
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -117,17 +117,19 @@ class CustomElementRegistry;
class DocGroup;
class External;
class Function;
class Gamepad;
enum class ImageBitmapFormat : uint8_t;
class IdleRequest;
class IdleRequestCallback;
class IncrementalRunnable;
+#ifdef ENABLE_INTL_API
class IntlUtils;
+#endif
class Location;
class MediaQueryList;
class MozSelfSupport;
class Navigator;
class OwningExternalOrWindowProxy;
class Promise;
class PostMessageEvent;
struct RequestInit;
@@ -946,18 +948,20 @@ public:
GetAudioWorklet(mozilla::ErrorResult& aRv);
mozilla::dom::Worklet*
GetPaintWorklet(mozilla::ErrorResult& aRv);
void
GetAppLocales(nsTArray<nsString>& aLocales);
+#ifdef ENABLE_INTL_API
mozilla::dom::IntlUtils*
GetIntlUtils(mozilla::ErrorResult& aRv);
+#endif
protected:
bool AlertOrConfirm(bool aAlert, const nsAString& aMessage,
nsIPrincipal& aSubjectPrincipal,
mozilla::ErrorResult& aError);
public:
void Alert(nsIPrincipal& aSubjectPrincipal,
@@ -2031,17 +2035,19 @@ protected:
// This is the CC generation the last time we called CanSkip.
uint32_t mCanSkipCCGeneration;
// The VR Displays for this window
nsTArray<RefPtr<mozilla::dom::VRDisplay>> mVRDisplays;
RefPtr<mozilla::dom::VREventObserver> mVREventObserver;
+#ifdef ENABLE_INTL_API
RefPtr<mozilla::dom::IntlUtils> mIntlUtils;
+#endif
friend class nsDOMScriptableHelper;
friend class nsDOMWindowUtils;
friend class mozilla::dom::PostMessageEvent;
friend class DesktopNotification;
friend class mozilla::dom::TimeoutManager;
friend class IdleRequestExecutor;
--- a/dom/webidl/Window.webidl
+++ b/dom/webidl/Window.webidl
@@ -529,15 +529,17 @@ partial interface Window {
*
* This API always returns at least one locale.
*
* Example: ["en-US", "de", "pl", "sr-Cyrl", "zh-Hans-HK"]
*/
[Func="IsChromeOrXBL"]
sequence<DOMString> getAppLocales();
+#ifdef ENABLE_INTL_API
/**
* Getter funcion for IntlUtils, which provides helper functions for
* localization.
*/
[Throws, Func="IsChromeOrXBL"]
readonly attribute IntlUtils intlUtils;
+#endif
};
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -644,17 +644,16 @@ WEBIDL_FILES = [
'ImageBitmap.webidl',
'ImageBitmapRenderingContext.webidl',
'ImageCapture.webidl',
'ImageData.webidl',
'ImageDocument.webidl',
'InputEvent.webidl',
'InspectorUtils.webidl',
'IntersectionObserver.webidl',
- 'IntlUtils.webidl',
'IterableIterator.webidl',
'KeyAlgorithm.webidl',
'KeyboardEvent.webidl',
'KeyEvent.webidl',
'KeyframeAnimationOptions.webidl',
'KeyframeEffect.webidl',
'KeyIdsInitData.webidl',
'LegacyQueryInterface.webidl',
@@ -1131,8 +1130,13 @@ if CONFIG['MOZ_B2G']:
GENERATED_EVENTS_WEBIDL_FILES += [
'MozApplicationEvent.webidl'
]
if CONFIG['ACCESSIBILITY']:
WEBIDL_FILES += [
'AccessibleNode.webidl',
]
+
+if CONFIG['ENABLE_INTL_API']:
+ WEBIDL_FILES += [
+ 'IntlUtils.webidl',
+ ]