xref: /aosp_15_r20/external/cronet/base/test/icu_test_util.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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 Worker ScopedRestoreICUDefaultLocale::ScopedRestoreICUDefaultLocale()
16*6777b538SAndroid Build Coastguard Worker     : ScopedRestoreICUDefaultLocale(std::string()) {}
17*6777b538SAndroid Build Coastguard Worker 
ScopedRestoreICUDefaultLocale(const std::string & locale)18*6777b538SAndroid Build Coastguard Worker ScopedRestoreICUDefaultLocale::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 Worker ScopedRestoreICUDefaultLocale::~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 Worker ScopedRestoreDefaultTimezone::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 Worker ScopedRestoreDefaultTimezone::~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 Worker void 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