1*6777b538SAndroid Build Coastguard Worker // Copyright 2015 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/test/icu_test_util.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/i18n/icu_util.h" 8*6777b538SAndroid Build Coastguard Worker #include "base/i18n/rtl.h" 9*6777b538SAndroid Build Coastguard Worker #include "third_party/icu/source/common/unicode/uloc.h" 10*6777b538SAndroid Build Coastguard Worker #include "third_party/icu/source/i18n/unicode/timezone.h" 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker namespace base { 13*6777b538SAndroid Build Coastguard Worker namespace test { 14*6777b538SAndroid Build Coastguard Worker ScopedRestoreICUDefaultLocale()15*6777b538SAndroid Build Coastguard WorkerScopedRestoreICUDefaultLocale::ScopedRestoreICUDefaultLocale() 16*6777b538SAndroid Build Coastguard Worker : ScopedRestoreICUDefaultLocale(std::string()) {} 17*6777b538SAndroid Build Coastguard Worker ScopedRestoreICUDefaultLocale(const std::string & locale)18*6777b538SAndroid Build Coastguard WorkerScopedRestoreICUDefaultLocale::ScopedRestoreICUDefaultLocale( 19*6777b538SAndroid Build Coastguard Worker const std::string& locale) 20*6777b538SAndroid Build Coastguard Worker : default_locale_(uloc_getDefault()) { 21*6777b538SAndroid Build Coastguard Worker if (!locale.empty()) 22*6777b538SAndroid Build Coastguard Worker i18n::SetICUDefaultLocale(locale.data()); 23*6777b538SAndroid Build Coastguard Worker } 24*6777b538SAndroid Build Coastguard Worker ~ScopedRestoreICUDefaultLocale()25*6777b538SAndroid Build Coastguard WorkerScopedRestoreICUDefaultLocale::~ScopedRestoreICUDefaultLocale() { 26*6777b538SAndroid Build Coastguard Worker i18n::SetICUDefaultLocale(default_locale_.data()); 27*6777b538SAndroid Build Coastguard Worker } 28*6777b538SAndroid Build Coastguard Worker ScopedRestoreDefaultTimezone(const char * zoneid)29*6777b538SAndroid Build Coastguard WorkerScopedRestoreDefaultTimezone::ScopedRestoreDefaultTimezone(const char* zoneid) { 30*6777b538SAndroid Build Coastguard Worker original_zone_.reset(icu::TimeZone::createDefault()); 31*6777b538SAndroid Build Coastguard Worker icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone(zoneid)); 32*6777b538SAndroid Build Coastguard Worker } 33*6777b538SAndroid Build Coastguard Worker ~ScopedRestoreDefaultTimezone()34*6777b538SAndroid Build Coastguard WorkerScopedRestoreDefaultTimezone::~ScopedRestoreDefaultTimezone() { 35*6777b538SAndroid Build Coastguard Worker icu::TimeZone::adoptDefault(original_zone_.release()); 36*6777b538SAndroid Build Coastguard Worker } 37*6777b538SAndroid Build Coastguard Worker InitializeICUForTesting()38*6777b538SAndroid Build Coastguard Workervoid InitializeICUForTesting() { 39*6777b538SAndroid Build Coastguard Worker i18n::AllowMultipleInitializeCallsForTesting(); 40*6777b538SAndroid Build Coastguard Worker i18n::InitializeICU(); 41*6777b538SAndroid Build Coastguard Worker } 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker } // namespace test 44*6777b538SAndroid Build Coastguard Worker } // namespace base 45