• 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 #include "chrome/browser/chromeos/status/clock_menu_button.h"
6 
7 #include "base/string_util.h"
8 #include "chrome/browser/chromeos/cros/cros_library.h"
9 #include "chrome/browser/chromeos/frame/browser_view.h"
10 #include "chrome/browser/chromeos/status/status_area_view.h"
11 #include "chrome/browser/chromeos/system_access.h"
12 #include "chrome/browser/chromeos/view_ids.h"
13 #include "chrome/browser/prefs/pref_member.h"
14 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/browser_window.h"
16 #include "chrome/test/in_process_browser_test.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "unicode/calendar.h"
19 #include "unicode/timezone.h"
20 
21 namespace chromeos {
22 
23 class ClockMenuButtonTest : public InProcessBrowserTest {
24  protected:
ClockMenuButtonTest()25   ClockMenuButtonTest() : InProcessBrowserTest() {}
SetUpInProcessBrowserTestFixture()26   virtual void SetUpInProcessBrowserTestFixture() {
27     // This test requires actual libcros, but InProcessBrowserTest has set
28     // to use stub, so reset it here.
29     CrosLibrary::Get()->GetTestApi()->ResetUseStubImpl();
30   }
GetClockMenuButton()31   ClockMenuButton* GetClockMenuButton() {
32     BrowserView* view = static_cast<BrowserView*>(browser()->window());
33     return static_cast<StatusAreaView*>(view->
34         GetViewByID(VIEW_ID_STATUS_AREA))->clock_view();
35   }
36 };
37 
IN_PROC_BROWSER_TEST_F(ClockMenuButtonTest,TimezoneTest)38 IN_PROC_BROWSER_TEST_F(ClockMenuButtonTest, TimezoneTest) {
39   ClockMenuButton* clock = GetClockMenuButton();
40   ASSERT_TRUE(clock != NULL);
41 
42   // Update timezone and make sure clock text changes.
43   scoped_ptr<icu::TimeZone> timezone_first(icu::TimeZone::createTimeZone(
44       icu::UnicodeString::fromUTF8("Asia/Hong_Kong")));
45   SystemAccess::GetInstance()->SetTimezone(*timezone_first);
46   std::wstring text_before = clock->text();
47   scoped_ptr<icu::TimeZone> timezone_second(icu::TimeZone::createTimeZone(
48       icu::UnicodeString::fromUTF8("Pacific/Samoa")));
49   SystemAccess::GetInstance()->SetTimezone(*timezone_second);
50   std::wstring text_after = clock->text();
51   EXPECT_NE(text_before, text_after);
52 }
53 
54 }  // namespace chromeos
55