Chromium Code Reviews| Index: base/i18n/icu_util.cc |
| diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc |
| index 6001ea10d050e502b07b8c53b71c493a0e5956f9..320c16d4e1b9ba88cbd787eb1a8b5df05b3c0c2e 100644 |
| --- a/base/i18n/icu_util.cc |
| +++ b/base/i18n/icu_util.cc |
| @@ -55,6 +55,33 @@ bool g_check_called_once = true; |
| #endif |
| } |
| + |
| +#if defined(OS_ANDROID) |
| +bool InitializeICU(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) |
|
jungshik at Google
2014/06/06 23:07:50
nit: intentation
|
| + // 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); |