| Index: base/i18n/icu_util.cc
|
| diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc
|
| index e0bd62cc50b0fe824d25beacbc94bb42e20908b7..f1fdda7458782d509a8631fb0b6a56d76f96dbf6 100644
|
| --- a/base/i18n/icu_util.cc
|
| +++ b/base/i18n/icu_util.cc
|
| @@ -27,21 +27,21 @@
|
| #define ICU_UTIL_DATA_SHARED 1
|
| #define ICU_UTIL_DATA_STATIC 2
|
|
|
| -#if ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_FILE
|
| +namespace base {
|
| +namespace i18n {
|
| +
|
| // Use an unversioned file name to simplify a icu version update down the road.
|
| // No need to change the filename in multiple places (gyp files, windows
|
| // build pkg configurations, etc). 'l' stands for Little Endian.
|
| -#define ICU_UTIL_DATA_FILE_NAME "icudtl.dat"
|
| -#elif ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_SHARED
|
| +// This variable is exported through the header file.
|
| +const char kIcuDataFileName[] = "icudtl.dat";
|
| +#if ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_SHARED
|
| #define ICU_UTIL_DATA_SYMBOL "icudt" U_ICU_VERSION_SHORT "_dat"
|
| #if defined(OS_WIN)
|
| #define ICU_UTIL_DATA_SHARED_MODULE_NAME "icudt.dll"
|
| #endif
|
| #endif
|
|
|
| -namespace base {
|
| -namespace i18n {
|
| -
|
| namespace {
|
|
|
| #if !defined(NDEBUG)
|
| @@ -53,9 +53,10 @@ bool g_check_called_once = true;
|
| #endif
|
| }
|
|
|
| -
|
| #if defined(OS_ANDROID)
|
| -bool InitializeICUWithFileDescriptor(int data_fd) {
|
| +bool InitializeICUWithFileDescriptor(
|
| + int data_fd,
|
| + base::MemoryMappedFile::Region data_region) {
|
| #if !defined(NDEBUG)
|
| DCHECK(!g_check_called_once || !g_called_once);
|
| g_called_once = true;
|
| @@ -67,7 +68,7 @@ bool InitializeICUWithFileDescriptor(int data_fd) {
|
| #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))) {
|
| + if (!mapped_file.Initialize(base::File(data_fd), data_region)) {
|
| LOG(ERROR) << "Couldn't mmap icu data file";
|
| return false;
|
| }
|
| @@ -135,13 +136,15 @@ bool InitializeICU() {
|
| bool path_ok = PathService::Get(base::DIR_EXE, &data_path);
|
| #endif
|
| DCHECK(path_ok);
|
| - data_path = data_path.AppendASCII(ICU_UTIL_DATA_FILE_NAME);
|
| + data_path = data_path.AppendASCII(kIcuDataFileName);
|
| #else
|
| // Assume it is in the framework bundle's Resources directory.
|
| + base::ScopedCFTypeRef<CFStringRef> data_file_name(
|
| + SysUTF8ToCFStringRef(kIcuDataFileName));
|
| FilePath data_path =
|
| - base::mac::PathForFrameworkBundleResource(CFSTR(ICU_UTIL_DATA_FILE_NAME));
|
| + base::mac::PathForFrameworkBundleResource(data_file_name);
|
| if (data_path.empty()) {
|
| - LOG(ERROR) << ICU_UTIL_DATA_FILE_NAME << " not found in bundle";
|
| + LOG(ERROR) << kIcuDataFileName << " not found in bundle";
|
| return false;
|
| }
|
| #endif // OS check
|
|
|