| Index: base/i18n/icu_util.cc
|
| diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc
|
| index 6001ea10d050e502b07b8c53b71c493a0e5956f9..e0bd62cc50b0fe824d25beacbc94bb42e20908b7 100644
|
| --- a/base/i18n/icu_util.cc
|
| +++ b/base/i18n/icu_util.cc
|
| @@ -4,8 +4,6 @@
|
|
|
| #include "base/i18n/icu_util.h"
|
|
|
| -#include "build/build_config.h"
|
| -
|
| #if defined(OS_WIN)
|
| #include <windows.h>
|
| #endif
|
| @@ -55,6 +53,33 @@ bool g_check_called_once = true;
|
| #endif
|
| }
|
|
|
| +
|
| +#if defined(OS_ANDROID)
|
| +bool InitializeICUWithFileDescriptor(int data_fd) {
|
| +#if !defined(NDEBUG)
|
| + DCHECK(!g_check_called_once || !g_called_once);
|
| + g_called_once = true;
|
| +#endif
|
| +
|
| +#if (ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_STATIC)
|
| + // The ICU data is statically linked.
|
| + return true;
|
| +#elif (ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_FILE)
|
| + CR_DEFINE_STATIC_LOCAL(base::MemoryMappedFile, mapped_file, ());
|
| + if (!mapped_file.IsValid()) {
|
| + if (!mapped_file.Initialize(base::File(data_fd))) {
|
| + LOG(ERROR) << "Couldn't mmap icu data file";
|
| + return false;
|
| + }
|
| + }
|
| + UErrorCode err = U_ZERO_ERROR;
|
| + udata_setCommonData(const_cast<uint8*>(mapped_file.data()), &err);
|
| + return err == U_ZERO_ERROR;
|
| +#endif // ICU_UTIL_DATA_FILE
|
| +}
|
| +#endif
|
| +
|
| +
|
| bool InitializeICU() {
|
| #if !defined(NDEBUG)
|
| DCHECK(!g_check_called_once || !g_called_once);
|
|
|