Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: chrome/browser/gtk/options/languages_page_gtk_unittest.cc

Issue 174043: Gtk languages options page part 1: accept-languages configuration. (Closed)
Patch Set: rebase Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2006-2008 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/gtk/options/languages_page_gtk.h"
6
7 #include <gtk/gtk.h>
8
9 #include "base/string_util.h"
10 #include "chrome/common/pref_names.h"
11 #include "chrome/test/testing_profile.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 class LanguagesPageGtkTest : public testing::Test {
15 public:
16 virtual void SetUp() {
17 profile_.reset(new TestingProfile());
18 }
19
20 // Get the accept languages displayed in the dialog in the order they are
21 // displayed, as a comma seperated string.
22 // Ex: EXPECT_STREQ("en,ja", GetDisplayedLangs(page).c_str());
23 std::string GetDisplayedLangs(const LanguagesPageGtk& page) {
24 std::vector<std::string> parts;
25 GtkTreeModel* tree_model = GTK_TREE_MODEL(page.language_order_store_);
26 GtkTreeIter iter;
27 if (!gtk_tree_model_get_iter_first(tree_model, &iter))
28 return std::string();
29 while (true) {
30 gchar* name;
31 gtk_tree_model_get(tree_model, &iter, LanguagesPageGtk::COL_LANG, &name,
32 -1);
33 parts.push_back(name);
34 g_free(name);
35 if (!gtk_tree_model_iter_next(tree_model, &iter))
36 break;
37 }
38 return JoinString(parts, ',');
39 }
40
41 protected:
42 MessageLoopForUI message_loop_;
43 scoped_ptr<TestingProfile> profile_;
44 };
45
46 TEST_F(LanguagesPageGtkTest, RemoveAcceptLang) {
47 //profile_->GetPrefs()->SetString(prefs::kAcceptLanguages, L"en,ja,es,fr,it");
48 profile_->GetPrefs()->SetString(prefs::kAcceptLanguages, L"en,ja,es");
49 LanguagesPageGtk page(profile_.get());
50 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
51 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
52 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
53 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
54
55 GtkTreeIter iter;
56 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
57 &iter, NULL, 1);
58 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
59 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
60 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
61 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
62 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
63
64 gtk_button_clicked(GTK_BUTTON(page.remove_button_));
65 EXPECT_STREQ("English,Spanish", GetDisplayedLangs(page).c_str());
66 EXPECT_STREQ("en,es", WideToASCII(
67 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
68 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
69 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
70 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
71 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
72
73 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
74 &iter, NULL, 1);
75 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
76 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
77 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
78 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
79 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
80
81 gtk_button_clicked(GTK_BUTTON(page.remove_button_));
82 EXPECT_STREQ("English", GetDisplayedLangs(page).c_str());
83 EXPECT_STREQ("en", WideToASCII(
84 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
85 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
86 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
87 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
88 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
89
90 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
91 &iter, NULL, 0);
92 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
93 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
94 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
95 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
96 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
97
98 gtk_button_clicked(GTK_BUTTON(page.remove_button_));
99 EXPECT_STREQ("", GetDisplayedLangs(page).c_str());
100 EXPECT_STREQ("", WideToASCII(
101 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
102 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
103 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
104 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
105 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
106 }
107
108 TEST_F(LanguagesPageGtkTest, RemoveMultipleAcceptLang) {
109 profile_->GetPrefs()->SetString(prefs::kAcceptLanguages, L"en,ja,es,fr,it");
110 LanguagesPageGtk page(profile_.get());
111 GtkTreeIter iter;
112 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
113 &iter, NULL, 1);
114 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
115 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
116 &iter, NULL, 3);
117 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
118 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
119 &iter, NULL, 4);
120 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
121 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
122
123 gtk_button_clicked(GTK_BUTTON(page.remove_button_));
124 EXPECT_STREQ("English,Spanish", GetDisplayedLangs(page).c_str());
125 EXPECT_STREQ("en,es", WideToASCII(
126 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
127 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
128
129 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
130 &iter, NULL, 1);
131 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
132 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
133 &iter, NULL, 0);
134 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
135 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
136
137 gtk_button_clicked(GTK_BUTTON(page.remove_button_));
138 EXPECT_STREQ("", GetDisplayedLangs(page).c_str());
139 EXPECT_STREQ("", WideToASCII(
140 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
141 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
142 }
143
144 TEST_F(LanguagesPageGtkTest, MoveAcceptLang) {
145 profile_->GetPrefs()->SetString(prefs::kAcceptLanguages, L"en,ja,es");
146 LanguagesPageGtk page(profile_.get());
147 EXPECT_STREQ("English,Japanese,Spanish", GetDisplayedLangs(page).c_str());
148 GtkTreeIter iter;
149
150 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
151 &iter, NULL, 0);
152 gtk_tree_selection_select_iter(page.language_order_selection_, &iter);
153 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
154 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
155
156 gtk_button_clicked(GTK_BUTTON(page.move_down_button_));
157 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
158 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
159 EXPECT_STREQ("Japanese,English,Spanish", GetDisplayedLangs(page).c_str());
160 EXPECT_STREQ("ja,en,es", WideToASCII(
161 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
162
163 gtk_button_clicked(GTK_BUTTON(page.move_down_button_));
164 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
165 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
166 EXPECT_STREQ("Japanese,Spanish,English", GetDisplayedLangs(page).c_str());
167 EXPECT_STREQ("ja,es,en", WideToASCII(
168 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
169
170 gtk_button_clicked(GTK_BUTTON(page.move_up_button_));
171 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
172 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
173 EXPECT_STREQ("Japanese,English,Spanish", GetDisplayedLangs(page).c_str());
174 EXPECT_STREQ("ja,en,es", WideToASCII(
175 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
176
177 gtk_button_clicked(GTK_BUTTON(page.move_up_button_));
178 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
179 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
180 EXPECT_STREQ("English,Japanese,Spanish", GetDisplayedLangs(page).c_str());
181 EXPECT_STREQ("en,ja,es", WideToASCII(
182 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
183 }
184
185 TEST_F(LanguagesPageGtkTest, AddAcceptLang) {
186 profile_->GetPrefs()->SetString(prefs::kAcceptLanguages, L"");
187 LanguagesPageGtk page(profile_.get());
188 EXPECT_STREQ("", GetDisplayedLangs(page).c_str());
189 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
190 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
191 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
192 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
193
194 page.OnAddLanguage("en");
195 EXPECT_STREQ("English", GetDisplayedLangs(page).c_str());
196 EXPECT_STREQ("en", WideToASCII(
197 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
198 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
199 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
200 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
201 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
202 EXPECT_EQ(0, page.FirstSelectedRowNum());
203
204 page.OnAddLanguage("es");
205 EXPECT_STREQ("English,Spanish", GetDisplayedLangs(page).c_str());
206 EXPECT_STREQ("en,es", WideToASCII(
207 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
208 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
209 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
210 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
211 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
212 EXPECT_EQ(1, page.FirstSelectedRowNum());
213
214 // Duplicates should be ignored and selection should not be changed.
215 gtk_tree_selection_unselect_all(page.language_order_selection_);
216 page.OnAddLanguage("en");
217 EXPECT_STREQ("English,Spanish", GetDisplayedLangs(page).c_str());
218 EXPECT_STREQ("en,es", WideToASCII(
219 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
220 EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
221 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
222 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
223 EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
224 EXPECT_EQ(0, gtk_tree_selection_count_selected_rows(
225 page.language_order_selection_));
226 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/options/languages_page_gtk.cc ('k') | chrome/browser/language_order_table_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698