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 "base/basictypes.h"
6#include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
7#include "chrome/browser/sync/test/integration/sync_test.h"
8#include "chrome/browser/sync/test/integration/themes_helper.h"
9
10using themes_helper::GetCustomTheme;
11using themes_helper::GetThemeID;
12using themes_helper::UseCustomTheme;
13using themes_helper::UseDefaultTheme;
14using themes_helper::UseNativeTheme;
15using themes_helper::UsingCustomTheme;
16using themes_helper::UsingDefaultTheme;
17using themes_helper::UsingNativeTheme;
18
19class SingleClientThemesSyncTest : public SyncTest {
20 public:
21  SingleClientThemesSyncTest() : SyncTest(SINGLE_CLIENT) {}
22  virtual ~SingleClientThemesSyncTest() {}
23
24 private:
25  DISALLOW_COPY_AND_ASSIGN(SingleClientThemesSyncTest);
26};
27
28// TODO(akalin): Add tests for model association (i.e., tests that
29// start with SetupClients(), change the theme state, then call
30// SetupSync()).
31
32IN_PROC_BROWSER_TEST_F(SingleClientThemesSyncTest, CustomTheme) {
33  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
34
35  ASSERT_FALSE(UsingCustomTheme(GetProfile(0)));
36  ASSERT_FALSE(UsingCustomTheme(verifier()));
37
38  UseCustomTheme(GetProfile(0), 0);
39  UseCustomTheme(verifier(), 0);
40  ASSERT_EQ(GetCustomTheme(0), GetThemeID(GetProfile(0)));
41  ASSERT_EQ(GetCustomTheme(0), GetThemeID(verifier()));
42
43  ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion());
44
45  ASSERT_EQ(GetCustomTheme(0), GetThemeID(GetProfile(0)));
46  ASSERT_EQ(GetCustomTheme(0), GetThemeID(verifier()));
47}
48
49// TODO(sync): Fails on Chrome OS. See http://crbug.com/84575.
50#if defined(OS_CHROMEOS)
51IN_PROC_BROWSER_TEST_F(SingleClientThemesSyncTest, DISABLED_NativeTheme) {
52#else
53IN_PROC_BROWSER_TEST_F(SingleClientThemesSyncTest, NativeTheme) {
54#endif  // OS_CHROMEOS
55  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
56
57  UseCustomTheme(GetProfile(0), 0);
58  UseCustomTheme(verifier(), 0);
59  ASSERT_FALSE(UsingNativeTheme(GetProfile(0)));
60  ASSERT_FALSE(UsingNativeTheme(verifier()));
61
62  ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion());
63
64  UseNativeTheme(GetProfile(0));
65  UseNativeTheme(verifier());
66  ASSERT_TRUE(UsingNativeTheme(GetProfile(0)));
67  ASSERT_TRUE(UsingNativeTheme(verifier()));
68
69  ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion());
70
71  ASSERT_TRUE(UsingNativeTheme(GetProfile(0)));
72  ASSERT_TRUE(UsingNativeTheme(verifier()));
73}
74
75IN_PROC_BROWSER_TEST_F(SingleClientThemesSyncTest, DefaultTheme) {
76  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
77
78  UseCustomTheme(GetProfile(0), 0);
79  UseCustomTheme(verifier(), 0);
80  ASSERT_FALSE(UsingDefaultTheme(GetProfile(0)));
81  ASSERT_FALSE(UsingDefaultTheme(verifier()));
82
83  ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion());
84
85  UseDefaultTheme(GetProfile(0));
86  UseDefaultTheme(verifier());
87  ASSERT_TRUE(UsingDefaultTheme(GetProfile(0)));
88  ASSERT_TRUE(UsingDefaultTheme(verifier()));
89
90  ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion());
91
92  ASSERT_TRUE(UsingDefaultTheme(GetProfile(0)));
93  ASSERT_TRUE(UsingDefaultTheme(verifier()));
94}
95