• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // This whole test runs as a separate browser_test because it depends on a
6 // static initialization inside third_party/icu (gDecimal in digitlst.cpp).
7 //
8 // That initialization depends on the current locale, and on certain locales
9 // will lead to wrong behavior. To make sure that the locale is set before
10 // icu is used, and that the "wrong" static value doesn't affect other tests,
11 // this test is executed on its own process.
12 
13 #include "base/strings/string16.h"
14 #include "base/strings/utf_string_conversions.h"
15 #include "base/test/scoped_locale.h"
16 #include "chrome/test/base/in_process_browser_test.h"
17 #include "ui/base/l10n/time_format.h"
18 
19 using base::TimeDelta;
20 
21 class TimeFormatBrowserTest : public InProcessBrowserTest {
22  public:
TimeFormatBrowserTest()23   TimeFormatBrowserTest() : scoped_locale_("fr_FR.utf-8") {
24   }
25 
26  private:
27   base::ScopedLocale scoped_locale_;
28 };
29 
IN_PROC_BROWSER_TEST_F(TimeFormatBrowserTest,DecimalPointNotDot)30 IN_PROC_BROWSER_TEST_F(TimeFormatBrowserTest, DecimalPointNotDot) {
31   // Some locales use a comma ',' instead of a dot '.' as the separator for
32   // decimal digits. The icu library wasn't handling this, leading to "1"
33   // being internally converted to "+1,0e00" and ultimately leading to "NaN".
34   // This showed up on the browser on estimated download time, for example.
35   // http://crbug.com/60476
36 
37   base::string16 one_min =
38       ui::TimeFormat::Simple(ui::TimeFormat::FORMAT_DURATION,
39                              ui::TimeFormat::LENGTH_SHORT,
40                              TimeDelta::FromMinutes(1));
41   EXPECT_EQ(base::ASCIIToUTF16("1 min"), one_min);
42 }
43