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

Side by Side Diff: chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc

Issue 1923143003: Implement the 2016Q2 Translate UI designe spec out in (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 2nd try - fix test breakages in TranslateUIDelegateTest Created 4 years, 7 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
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/translate/translate_bubble_view.h" 5 #include "chrome/browser/ui/views/translate/translate_bubble_view.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/ui/translate/translate_bubble_model.h" 11 #include "chrome/browser/ui/translate/translate_bubble_model.h"
11 #include "chrome/browser/ui/translate/translate_bubble_view_state_transition.h" 12 #include "chrome/browser/ui/translate/translate_bubble_view_state_transition.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "ui/events/event_constants.h"
15 #include "ui/events/event_utils.h"
16 #include "ui/gfx/range/range.h"
17 #include "ui/views/bubble/bubble_frame_view.h"
13 #include "ui/views/controls/button/checkbox.h" 18 #include "ui/views/controls/button/checkbox.h"
14 #include "ui/views/controls/combobox/combobox.h" 19 #include "ui/views/controls/combobox/combobox.h"
20 #include "ui/views/controls/styled_label.h"
15 #include "ui/views/test/combobox_test_api.h" 21 #include "ui/views/test/combobox_test_api.h"
16 #include "ui/views/test/views_test_base.h" 22 #include "ui/views/test/views_test_base.h"
17 #include "ui/views/widget/widget.h" 23 #include "ui/views/widget/widget.h"
18 24
19 namespace { 25 namespace {
20 26
21 class MockTranslateBubbleModel : public TranslateBubbleModel { 27 class MockTranslateBubbleModel : public TranslateBubbleModel {
22 public: 28 public:
23 explicit MockTranslateBubbleModel(TranslateBubbleModel::ViewState view_state) 29 explicit MockTranslateBubbleModel(TranslateBubbleModel::ViewState view_state)
24 : view_state_transition_(view_state), 30 : view_state_transition_(view_state),
25 error_type_(translate::TranslateErrors::NONE), 31 error_type_(translate::TranslateErrors::NONE),
26 original_language_index_(0), 32 original_language_index_(0),
27 target_language_index_(1), 33 target_language_index_(1),
28 never_translate_language_(false), 34 never_translate_language_(false),
29 never_translate_site_(false), 35 never_translate_site_(false),
30 should_always_translate_(false), 36 should_always_translate_(false),
37 always_translate_checked_(false),
31 set_always_translate_called_count_(0), 38 set_always_translate_called_count_(0),
32 translate_called_(false), 39 translate_called_(false),
33 revert_translation_called_(false), 40 revert_translation_called_(false),
34 translation_declined_(false), 41 translation_declined_(false),
35 original_language_index_on_translation_(-1), 42 original_language_index_on_translation_(-1),
36 target_language_index_on_translation_(-1) {} 43 target_language_index_on_translation_(-1) {}
37 44
38 TranslateBubbleModel::ViewState GetViewState() const override { 45 TranslateBubbleModel::ViewState GetViewState() const override {
39 return view_state_transition_.view_state(); 46 return view_state_transition_.view_state();
40 } 47 }
41 48
42 void SetViewState(TranslateBubbleModel::ViewState view_state) override { 49 void SetViewState(TranslateBubbleModel::ViewState view_state) override {
43 view_state_transition_.SetViewState(view_state); 50 view_state_transition_.SetViewState(view_state);
44 } 51 }
45 52
46 void ShowError(translate::TranslateErrors::Type error_type) override { 53 void ShowError(translate::TranslateErrors::Type error_type) override {
47 error_type_ = error_type; 54 error_type_ = error_type;
48 } 55 }
49 56
50 void GoBackFromAdvanced() override { 57 void GoBackFromAdvanced() override {
51 view_state_transition_.GoBackFromAdvanced(); 58 view_state_transition_.GoBackFromAdvanced();
52 } 59 }
53 60
54 int GetNumberOfLanguages() const override { return 1000; } 61 int GetNumberOfLanguages() const override { return 1000; }
55 62
56 base::string16 GetLanguageNameAt(int index) const override { 63 base::string16 GetLanguageNameAt(int index) const override {
57 return base::string16(); 64 return base::ASCIIToUTF16("English");
58 } 65 }
59 66
60 int GetOriginalLanguageIndex() const override { 67 int GetOriginalLanguageIndex() const override {
61 return original_language_index_; 68 return original_language_index_;
62 } 69 }
63 70
64 void UpdateOriginalLanguageIndex(int index) override { 71 void UpdateOriginalLanguageIndex(int index) override {
65 original_language_index_ = index; 72 original_language_index_ = index;
66 } 73 }
67 74
68 int GetTargetLanguageIndex() const override { return target_language_index_; } 75 int GetTargetLanguageIndex() const override { return target_language_index_; }
69 76
70 void UpdateTargetLanguageIndex(int index) override { 77 void UpdateTargetLanguageIndex(int index) override {
71 target_language_index_ = index; 78 target_language_index_ = index;
72 } 79 }
73 80
74 void DeclineTranslation() override { translation_declined_ = true; } 81 void DeclineTranslation() override { translation_declined_ = true; }
75 82
76 void SetNeverTranslateLanguage(bool value) override { 83 void SetNeverTranslateLanguage(bool value) override {
77 never_translate_language_ = value; 84 never_translate_language_ = value;
78 } 85 }
79 86
80 void SetNeverTranslateSite(bool value) override { 87 void SetNeverTranslateSite(bool value) override {
81 never_translate_site_ = value; 88 never_translate_site_ = value;
82 } 89 }
83 90
91 bool GetAlwaysTranslateChecked() const override {
92 return always_translate_checked_;
93 }
84 bool ShouldAlwaysTranslate() const override { 94 bool ShouldAlwaysTranslate() const override {
85 return should_always_translate_; 95 return should_always_translate_;
86 } 96 }
87 97
88 void SetAlwaysTranslate(bool value) override { 98 void SetAlwaysTranslate(bool value) override {
89 should_always_translate_ = value; 99 should_always_translate_ = value;
90 set_always_translate_called_count_++; 100 set_always_translate_called_count_++;
91 } 101 }
92 102
93 void Translate() override { 103 void Translate() override {
(...skipping 12 matching lines...) Expand all
106 target_language_index_on_translation_ == target_language_index_; 116 target_language_index_on_translation_ == target_language_index_;
107 } 117 }
108 118
109 TranslateBubbleViewStateTransition view_state_transition_; 119 TranslateBubbleViewStateTransition view_state_transition_;
110 translate::TranslateErrors::Type error_type_; 120 translate::TranslateErrors::Type error_type_;
111 int original_language_index_; 121 int original_language_index_;
112 int target_language_index_; 122 int target_language_index_;
113 bool never_translate_language_; 123 bool never_translate_language_;
114 bool never_translate_site_; 124 bool never_translate_site_;
115 bool should_always_translate_; 125 bool should_always_translate_;
126 bool always_translate_checked_;
116 int set_always_translate_called_count_; 127 int set_always_translate_called_count_;
117 bool translate_called_; 128 bool translate_called_;
118 bool revert_translation_called_; 129 bool revert_translation_called_;
119 bool translation_declined_; 130 bool translation_declined_;
120 int original_language_index_on_translation_; 131 int original_language_index_on_translation_;
121 int target_language_index_on_translation_; 132 int target_language_index_on_translation_;
122 }; 133 };
123 134
124 } // namespace 135 } // namespace
125 136
(...skipping 10 matching lines...) Expand all
136 views::Widget::InitParams params = 147 views::Widget::InitParams params =
137 CreateParams(views::Widget::InitParams::TYPE_WINDOW); 148 CreateParams(views::Widget::InitParams::TYPE_WINDOW);
138 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 149 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
139 150
140 anchor_widget_.reset(new views::Widget()); 151 anchor_widget_.reset(new views::Widget());
141 anchor_widget_->Init(params); 152 anchor_widget_->Init(params);
142 anchor_widget_->Show(); 153 anchor_widget_->Show();
143 154
144 mock_model_ = new MockTranslateBubbleModel( 155 mock_model_ = new MockTranslateBubbleModel(
145 TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); 156 TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE);
157
158 base::FeatureList::ClearInstanceForTesting();
159 base::FeatureList::SetInstance(base::WrapUnique(new base::FeatureList));
160 }
161
162 void TurnOnTranslate2016Q2UIFlag() {
163 base::FeatureList::ClearInstanceForTesting();
164 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
165 feature_list->InitializeFromCommandLine(
166 translate::kTranslateUI2016Q2.name, "");
167 base::FeatureList::SetInstance(std::move(feature_list));
168 }
169
170 void CreateAndShowBubble() {
146 std::unique_ptr<TranslateBubbleModel> model(mock_model_); 171 std::unique_ptr<TranslateBubbleModel> model(mock_model_);
147 bubble_ = new TranslateBubbleView(anchor_widget_->GetContentsView(), 172 bubble_ = new TranslateBubbleView(anchor_widget_->GetContentsView(),
148 std::move(model), 173 std::move(model),
149 translate::TranslateErrors::NONE, NULL); 174 translate::TranslateErrors::NONE, NULL);
150 views::BubbleDialogDelegateView::CreateBubble(bubble_)->Show(); 175 views::BubbleDialogDelegateView::CreateBubble(bubble_)->Show();
151 } 176 }
152 177
178
153 void TearDown() override { 179 void TearDown() override {
154 bubble_->GetWidget()->CloseNow(); 180 bubble_->GetWidget()->CloseNow();
155 anchor_widget_.reset(); 181 anchor_widget_.reset();
156 182
157 views::ViewsTestBase::TearDown(); 183 views::ViewsTestBase::TearDown();
158 } 184 }
159 185
160 views::Combobox* denial_combobox() { return bubble_->denial_combobox_; } 186 views::Combobox* denial_combobox() { return bubble_->denial_combobox_; }
161 bool denial_button_clicked() { return mock_model_->translation_declined_; } 187 bool denial_button_clicked() { return mock_model_->translation_declined_; }
162 188
163 std::unique_ptr<views::Widget> anchor_widget_; 189 std::unique_ptr<views::Widget> anchor_widget_;
164 MockTranslateBubbleModel* mock_model_; 190 MockTranslateBubbleModel* mock_model_;
165 TranslateBubbleView* bubble_; 191 TranslateBubbleView* bubble_;
166 }; 192 };
167 193
168 TEST_F(TranslateBubbleViewTest, TranslateButton) { 194 TEST_F(TranslateBubbleViewTest, TranslateButton) {
195 CreateAndShowBubble();
169 EXPECT_FALSE(mock_model_->translate_called_); 196 EXPECT_FALSE(mock_model_->translate_called_);
170 197
171 // Press the "Translate" button. 198 // Press the "Translate" button.
199 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRANSLATE);
200 EXPECT_TRUE(mock_model_->translate_called_);
201 }
202
203 TEST_F(TranslateBubbleViewTest, TranslateButtonIn2016Q2UI) {
204 TurnOnTranslate2016Q2UIFlag();
205 CreateAndShowBubble();
206 EXPECT_FALSE(mock_model_->translate_called_);
207
208 // Press the "Translate" button.
172 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRANSLATE); 209 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRANSLATE);
173 EXPECT_TRUE(mock_model_->translate_called_); 210 EXPECT_TRUE(mock_model_->translate_called_);
174 } 211 }
175 212
213 TEST_F(TranslateBubbleViewTest, CloseButtonIn2016Q2UI) {
214 TurnOnTranslate2016Q2UIFlag();
215 CreateAndShowBubble();
216 EXPECT_FALSE(mock_model_->translate_called_);
217 EXPECT_FALSE(mock_model_->translation_declined_);
218 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
219
220 // Press the "Close" button.
221 bubble_->GetBubbleFrameView()->ButtonPressed(
222 bubble_->GetBubbleFrameView()->close_,
223 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
224 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE));
225 bubble_->WindowClosing();
Takashi Toyoshima 2016/04/28 05:01:22 ButtonPressed calls this internally, and causing t
226 EXPECT_FALSE(mock_model_->translate_called_);
227 EXPECT_TRUE(mock_model_->translation_declined_);
228 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
229 }
230
176 TEST_F(TranslateBubbleViewTest, ComboboxNope) { 231 TEST_F(TranslateBubbleViewTest, ComboboxNope) {
232 CreateAndShowBubble();
177 views::test::ComboboxTestApi test_api(denial_combobox()); 233 views::test::ComboboxTestApi test_api(denial_combobox());
178 EXPECT_FALSE(denial_button_clicked()); 234 EXPECT_FALSE(denial_button_clicked());
179 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 235 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
180 236
181 test_api.PerformActionAt(static_cast<int>( 237 test_api.PerformActionAt(static_cast<int>(
182 TranslateBubbleView::DenialComboboxIndex::DONT_TRANSLATE)); 238 TranslateBubbleView::DenialComboboxIndex::DONT_TRANSLATE));
183 EXPECT_TRUE(denial_button_clicked()); 239 EXPECT_TRUE(denial_button_clicked());
184 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 240 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
185 } 241 }
186 242
243 TEST_F(TranslateBubbleViewTest, ComboboxNopeIn2016Q2UI) {
244 TurnOnTranslate2016Q2UIFlag();
245 CreateAndShowBubble();
246 views::test::ComboboxTestApi test_api(denial_combobox());
247 EXPECT_FALSE(denial_button_clicked());
248 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
249
250 test_api.PerformActionAt(static_cast<int>(
251 TranslateBubbleView::DenialComboboxIndex::DONT_TRANSLATE));
252
253 // In the 2016Q2 UI, we should not close nor take action.
254 EXPECT_FALSE(denial_button_clicked());
255 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
256 }
257
187 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguage) { 258 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguage) {
259 CreateAndShowBubble();
188 views::test::ComboboxTestApi test_api(denial_combobox()); 260 views::test::ComboboxTestApi test_api(denial_combobox());
189 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 261 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
190 EXPECT_FALSE(mock_model_->never_translate_language_); 262 EXPECT_FALSE(mock_model_->never_translate_language_);
263 EXPECT_FALSE(denial_button_clicked());
264
265 test_api.PerformActionAt(static_cast<int>(
266 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE));
267 EXPECT_TRUE(denial_button_clicked());
268 EXPECT_TRUE(mock_model_->never_translate_language_);
269 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
270 }
271
272 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguageIn2016Q2UI) {
273 TurnOnTranslate2016Q2UIFlag();
274 CreateAndShowBubble();
275 views::test::ComboboxTestApi test_api(denial_combobox());
276 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
277 EXPECT_FALSE(mock_model_->never_translate_language_);
191 EXPECT_FALSE(denial_button_clicked()); 278 EXPECT_FALSE(denial_button_clicked());
192 279
193 test_api.PerformActionAt(static_cast<int>( 280 test_api.PerformActionAt(static_cast<int>(
194 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE)); 281 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE));
195 EXPECT_TRUE(denial_button_clicked()); 282 EXPECT_TRUE(denial_button_clicked());
196 EXPECT_TRUE(mock_model_->never_translate_language_); 283 EXPECT_TRUE(mock_model_->never_translate_language_);
197 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 284 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
198 } 285 }
199 286
200 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSite) { 287 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSite) {
288 CreateAndShowBubble();
201 views::test::ComboboxTestApi test_api(denial_combobox()); 289 views::test::ComboboxTestApi test_api(denial_combobox());
202 EXPECT_FALSE(mock_model_->never_translate_site_); 290 EXPECT_FALSE(mock_model_->never_translate_site_);
203 EXPECT_FALSE(denial_button_clicked()); 291 EXPECT_FALSE(denial_button_clicked());
292 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
293
294 test_api.PerformActionAt(static_cast<int>(
295 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE));
296 EXPECT_TRUE(denial_button_clicked());
297 EXPECT_TRUE(mock_model_->never_translate_site_);
298 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
299 }
300
301 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSiteIn2016Q2UI) {
302 TurnOnTranslate2016Q2UIFlag();
303 CreateAndShowBubble();
304 views::test::ComboboxTestApi test_api(denial_combobox());
305 EXPECT_FALSE(mock_model_->never_translate_site_);
306 EXPECT_FALSE(denial_button_clicked());
204 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 307 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
205 308
206 test_api.PerformActionAt(static_cast<int>( 309 test_api.PerformActionAt(static_cast<int>(
207 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE)); 310 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE));
208 EXPECT_TRUE(denial_button_clicked()); 311 EXPECT_TRUE(denial_button_clicked());
209 EXPECT_TRUE(mock_model_->never_translate_site_); 312 EXPECT_TRUE(mock_model_->never_translate_site_);
210 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 313 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
211 } 314 }
212 315
213 TEST_F(TranslateBubbleViewTest, AdvancedLink) { 316 TEST_F(TranslateBubbleViewTest, AdvancedLink) {
317 CreateAndShowBubble();
214 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 318 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
215 bubble_->GetViewState()); 319 bubble_->GetViewState());
216 320
217 // Click the "Advanced" link. 321 // Click the "Advanced" link.
218 bubble_->HandleLinkClicked(TranslateBubbleView::LINK_ID_ADVANCED); 322 bubble_->HandleLinkClicked(TranslateBubbleView::LINK_ID_ADVANCED);
219 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 323 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
220 } 324 }
221 325
326 TEST_F(TranslateBubbleViewTest, AdvancedLinkIn2016Q2UI) {
327 TurnOnTranslate2016Q2UIFlag();
328 CreateAndShowBubble();
329 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
330 bubble_->GetViewState());
331
332 // call the StyledLabelLinkClicked();
333 views::StyledLabel styled_label(base::ASCIIToUTF16("test"), nullptr);
334 bubble_->StyledLabelLinkClicked(&styled_label, gfx::Range(), ui::EF_NONE);
335 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
336 }
337
222 TEST_F(TranslateBubbleViewTest, ShowOriginalButton) { 338 TEST_F(TranslateBubbleViewTest, ShowOriginalButton) {
339 CreateAndShowBubble();
223 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE); 340 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE);
224 341
225 // Click the "Show original" button to revert translation. 342 // Click the "Show original" button to revert translation.
226 EXPECT_FALSE(mock_model_->revert_translation_called_); 343 EXPECT_FALSE(mock_model_->revert_translation_called_);
227 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_SHOW_ORIGINAL); 344 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_SHOW_ORIGINAL);
228 EXPECT_TRUE(mock_model_->revert_translation_called_); 345 EXPECT_TRUE(mock_model_->revert_translation_called_);
229 } 346 }
230 347
231 TEST_F(TranslateBubbleViewTest, TryAgainButton) { 348 TEST_F(TranslateBubbleViewTest, TryAgainButton) {
349 CreateAndShowBubble();
232 bubble_->SwitchToErrorView(translate::TranslateErrors::NETWORK); 350 bubble_->SwitchToErrorView(translate::TranslateErrors::NETWORK);
233 351
234 EXPECT_EQ(translate::TranslateErrors::NETWORK, mock_model_->error_type_); 352 EXPECT_EQ(translate::TranslateErrors::NETWORK, mock_model_->error_type_);
235 353
236 // Click the "Try again" button to translate. 354 // Click the "Try again" button to translate.
237 EXPECT_FALSE(mock_model_->translate_called_); 355 EXPECT_FALSE(mock_model_->translate_called_);
238 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRY_AGAIN); 356 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRY_AGAIN);
239 EXPECT_TRUE(mock_model_->translate_called_); 357 EXPECT_TRUE(mock_model_->translate_called_);
240 } 358 }
241 359
242 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndCancelButton) { 360 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndCancelButton) {
361 CreateAndShowBubble();
243 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 362 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
244 363
245 // Click the "Always Translate" checkbox. Changing the state of this checkbox 364 // Click the "Always Translate" checkbox. Changing the state of this checkbox
246 // should NOT affect the model after pressing the cancel button. 365 // should NOT affect the model after pressing the cancel button.
247 366
248 // Check the initial state. 367 // Check the initial state.
249 EXPECT_FALSE(mock_model_->should_always_translate_); 368 EXPECT_FALSE(mock_model_->should_always_translate_);
250 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 369 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
251 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked()); 370 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked());
252 371
253 // Click the checkbox. The state is not saved yet. 372 // Click the checkbox. The state is not saved yet.
254 bubble_->always_translate_checkbox_->SetChecked(true); 373 bubble_->always_translate_checkbox_->SetChecked(true);
255 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE); 374 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
256 EXPECT_FALSE(mock_model_->should_always_translate_); 375 EXPECT_FALSE(mock_model_->should_always_translate_);
257 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 376 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
258 377
259 // Click the cancel button. The state is not saved. 378 // Click the cancel button. The state is not saved.
260 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 379 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
261 EXPECT_FALSE(mock_model_->should_always_translate_); 380 EXPECT_FALSE(mock_model_->should_always_translate_);
262 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 381 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
263 } 382 }
264 383
265 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndDoneButton) { 384 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndDoneButton) {
385 CreateAndShowBubble();
266 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 386 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
267 387
268 // Click the "Always Translate" checkbox. Changing the state of this checkbox 388 // Click the "Always Translate" checkbox. Changing the state of this checkbox
269 // should affect the model after pressing the done button. 389 // should affect the model after pressing the done button.
270 390
271 // Check the initial state. 391 // Check the initial state.
272 EXPECT_FALSE(mock_model_->should_always_translate_); 392 EXPECT_FALSE(mock_model_->should_always_translate_);
273 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 393 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
274 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked()); 394 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked());
275 395
276 // Click the checkbox. The state is not saved yet. 396 // Click the checkbox. The state is not saved yet.
277 bubble_->always_translate_checkbox_->SetChecked(true); 397 bubble_->always_translate_checkbox_->SetChecked(true);
278 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE); 398 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
279 EXPECT_FALSE(mock_model_->should_always_translate_); 399 EXPECT_FALSE(mock_model_->should_always_translate_);
280 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 400 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
281 401
282 // Click the done button. The state is saved. 402 // Click the done button. The state is saved.
283 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 403 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
284 EXPECT_TRUE(mock_model_->should_always_translate_); 404 EXPECT_TRUE(mock_model_->should_always_translate_);
285 EXPECT_EQ(1, mock_model_->set_always_translate_called_count_); 405 EXPECT_EQ(1, mock_model_->set_always_translate_called_count_);
286 } 406 }
287 407
288 TEST_F(TranslateBubbleViewTest, DoneButton) { 408 TEST_F(TranslateBubbleViewTest, DoneButton) {
409 CreateAndShowBubble();
289 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 410 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
290 411
291 // Click the "Done" button to translate. The selected languages by the user 412 // Click the "Done" button to translate. The selected languages by the user
292 // are applied. 413 // are applied.
293 EXPECT_FALSE(mock_model_->translate_called_); 414 EXPECT_FALSE(mock_model_->translate_called_);
294 bubble_->source_language_combobox_->SetSelectedIndex(10); 415 bubble_->source_language_combobox_->SetSelectedIndex(10);
295 bubble_->HandleComboboxPerformAction( 416 bubble_->HandleComboboxPerformAction(
296 TranslateBubbleView::COMBOBOX_ID_SOURCE_LANGUAGE); 417 TranslateBubbleView::COMBOBOX_ID_SOURCE_LANGUAGE);
297 bubble_->target_language_combobox_->SetSelectedIndex(20); 418 bubble_->target_language_combobox_->SetSelectedIndex(20);
298 bubble_->HandleComboboxPerformAction( 419 bubble_->HandleComboboxPerformAction(
299 TranslateBubbleView::COMBOBOX_ID_TARGET_LANGUAGE); 420 TranslateBubbleView::COMBOBOX_ID_TARGET_LANGUAGE);
300 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 421 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
301 EXPECT_TRUE(mock_model_->translate_called_); 422 EXPECT_TRUE(mock_model_->translate_called_);
302 EXPECT_EQ(10, mock_model_->original_language_index_); 423 EXPECT_EQ(10, mock_model_->original_language_index_);
303 EXPECT_EQ(20, mock_model_->target_language_index_); 424 EXPECT_EQ(20, mock_model_->target_language_index_);
304 } 425 }
305 426
306 TEST_F(TranslateBubbleViewTest, DoneButtonWithoutTranslating) { 427 TEST_F(TranslateBubbleViewTest, DoneButtonWithoutTranslating) {
428 CreateAndShowBubble();
307 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 429 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
308 bubble_->GetViewState()); 430 bubble_->GetViewState());
309 431
310 // Translate the page once. 432 // Translate the page once.
311 mock_model_->Translate(); 433 mock_model_->Translate();
312 EXPECT_TRUE(mock_model_->translate_called_); 434 EXPECT_TRUE(mock_model_->translate_called_);
313 435
314 // Go back to the initial view. 436 // Go back to the initial view.
315 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 437 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
316 bubble_->GetViewState()); 438 bubble_->GetViewState());
317 mock_model_->translate_called_ = false; 439 mock_model_->translate_called_ = false;
318 440
319 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 441 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
320 bubble_->GetViewState()); 442 bubble_->GetViewState());
321 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 443 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
322 444
323 // Click the "Done" button with the current language pair. This time, 445 // Click the "Done" button with the current language pair. This time,
324 // translation is not performed and the view state will be back to the 446 // translation is not performed and the view state will be back to the
325 // previous view. 447 // previous view.
326 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 448 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
327 EXPECT_FALSE(mock_model_->translate_called_); 449 EXPECT_FALSE(mock_model_->translate_called_);
328 450
329 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 451 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
330 bubble_->GetViewState()); 452 bubble_->GetViewState());
331 } 453 }
332 454
333 TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) { 455 TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) {
456 CreateAndShowBubble();
334 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); 457 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE);
335 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 458 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
336 459
337 // Click the "Cancel" button to go back. 460 // Click the "Cancel" button to go back.
338 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 461 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
339 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 462 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
340 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 463 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
341 bubble_->GetViewState()); 464 bubble_->GetViewState());
342 } 465 }
343 466
344 TEST_F(TranslateBubbleViewTest, CancelButtonReturningAfterTranslate) { 467 TEST_F(TranslateBubbleViewTest, CancelButtonReturningAfterTranslate) {
468 CreateAndShowBubble();
345 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE); 469 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE);
346 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 470 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
347 471
348 // Click the "Cancel" button to go back. 472 // Click the "Cancel" button to go back.
349 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 473 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
350 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 474 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
351 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE, 475 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE,
352 bubble_->GetViewState()); 476 bubble_->GetViewState());
353 } 477 }
354 478
355 TEST_F(TranslateBubbleViewTest, CancelButtonReturningError) { 479 TEST_F(TranslateBubbleViewTest, CancelButtonReturningError) {
480 CreateAndShowBubble();
356 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR); 481 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR);
357 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 482 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
358 483
359 // Click the "Cancel" button to go back. 484 // Click the "Cancel" button to go back.
360 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 485 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
361 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 486 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
362 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble_->GetViewState()); 487 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble_->GetViewState());
363 } 488 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698