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

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: minor changes in comments 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 ShouldAlwaysTranslateBeCheckedByDefault() const override {
92 return always_translate_checked_;
93 }
94
84 bool ShouldAlwaysTranslate() const override { 95 bool ShouldAlwaysTranslate() const override {
85 return should_always_translate_; 96 return should_always_translate_;
86 } 97 }
87 98
88 void SetAlwaysTranslate(bool value) override { 99 void SetAlwaysTranslate(bool value) override {
89 should_always_translate_ = value; 100 should_always_translate_ = value;
90 set_always_translate_called_count_++; 101 set_always_translate_called_count_++;
91 } 102 }
92 103
93 void Translate() override { 104 void Translate() override {
94 translate_called_ = true; 105 translate_called_ = true;
95 original_language_index_on_translation_ = original_language_index_; 106 original_language_index_on_translation_ = original_language_index_;
96 target_language_index_on_translation_ = target_language_index_; 107 target_language_index_on_translation_ = target_language_index_;
97 } 108 }
98 109
99 void RevertTranslation() override { revert_translation_called_ = true; } 110 void RevertTranslation() override { revert_translation_called_ = true; }
100 111
101 void OnBubbleClosing() override {} 112 void OnBubbleClosing() override {}
102 113
103 bool IsPageTranslatedInCurrentLanguages() const override { 114 bool IsPageTranslatedInCurrentLanguages() const override {
104 return original_language_index_on_translation_ == 115 return original_language_index_on_translation_ ==
105 original_language_index_ && 116 original_language_index_ &&
106 target_language_index_on_translation_ == target_language_index_; 117 target_language_index_on_translation_ == target_language_index_;
107 } 118 }
108 119
109 TranslateBubbleViewStateTransition view_state_transition_; 120 TranslateBubbleViewStateTransition view_state_transition_;
110 translate::TranslateErrors::Type error_type_; 121 translate::TranslateErrors::Type error_type_;
111 int original_language_index_; 122 int original_language_index_;
112 int target_language_index_; 123 int target_language_index_;
113 bool never_translate_language_; 124 bool never_translate_language_;
114 bool never_translate_site_; 125 bool never_translate_site_;
115 bool should_always_translate_; 126 bool should_always_translate_;
127 bool always_translate_checked_;
116 int set_always_translate_called_count_; 128 int set_always_translate_called_count_;
117 bool translate_called_; 129 bool translate_called_;
118 bool revert_translation_called_; 130 bool revert_translation_called_;
119 bool translation_declined_; 131 bool translation_declined_;
120 int original_language_index_on_translation_; 132 int original_language_index_on_translation_;
121 int target_language_index_on_translation_; 133 int target_language_index_on_translation_;
122 }; 134 };
123 135
124 } // namespace 136 } // namespace
125 137
126 class TranslateBubbleViewTest : public views::ViewsTestBase { 138 class TranslateBubbleViewTest : public views::ViewsTestBase {
127 public: 139 public:
128 TranslateBubbleViewTest() { 140 TranslateBubbleViewTest() {}
129 }
130 141
131 protected: 142 protected:
132 void SetUp() override { 143 void SetUp() override {
133 views::ViewsTestBase::SetUp(); 144 views::ViewsTestBase::SetUp();
134 145
135 // The bubble needs the parent as an anchor. 146 // The bubble needs the parent as an anchor.
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(translate::kTranslateUI2016Q2.name,
166 std::string());
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
153 void TearDown() override { 178 void TearDown() override {
154 bubble_->GetWidget()->CloseNow(); 179 bubble_->GetWidget()->CloseNow();
155 anchor_widget_.reset(); 180 anchor_widget_.reset();
156 181
157 views::ViewsTestBase::TearDown(); 182 views::ViewsTestBase::TearDown();
158 } 183 }
159 184
160 views::Combobox* denial_combobox() { return bubble_->denial_combobox_; } 185 views::Combobox* denial_combobox() { return bubble_->denial_combobox_; }
161 bool denial_button_clicked() { return mock_model_->translation_declined_; } 186 bool denial_button_clicked() { return mock_model_->translation_declined_; }
162 187
163 std::unique_ptr<views::Widget> anchor_widget_; 188 std::unique_ptr<views::Widget> anchor_widget_;
164 MockTranslateBubbleModel* mock_model_; 189 MockTranslateBubbleModel* mock_model_;
165 TranslateBubbleView* bubble_; 190 TranslateBubbleView* bubble_;
166 }; 191 };
167 192
168 TEST_F(TranslateBubbleViewTest, TranslateButton) { 193 TEST_F(TranslateBubbleViewTest, TranslateButton) {
194 CreateAndShowBubble();
169 EXPECT_FALSE(mock_model_->translate_called_); 195 EXPECT_FALSE(mock_model_->translate_called_);
170 196
171 // Press the "Translate" button. 197 // Press the "Translate" button.
198 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRANSLATE);
199 EXPECT_TRUE(mock_model_->translate_called_);
200 }
201
202 TEST_F(TranslateBubbleViewTest, TranslateButtonIn2016Q2UI) {
203 TurnOnTranslate2016Q2UIFlag();
204 CreateAndShowBubble();
205 EXPECT_FALSE(mock_model_->translate_called_);
206
207 // Press the "Translate" button.
172 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRANSLATE); 208 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRANSLATE);
173 EXPECT_TRUE(mock_model_->translate_called_); 209 EXPECT_TRUE(mock_model_->translate_called_);
174 } 210 }
175 211
212 TEST_F(TranslateBubbleViewTest, CloseButtonIn2016Q2UI) {
213 TurnOnTranslate2016Q2UIFlag();
214 CreateAndShowBubble();
215 EXPECT_FALSE(mock_model_->translate_called_);
216 EXPECT_FALSE(mock_model_->translation_declined_);
217 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
218
219 // Press the "Close" button.
220 bubble_->GetBubbleFrameView()->ButtonPressed(
221 bubble_->GetBubbleFrameView()->GetCloseButtonForTest(),
222 ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
223 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE));
224
225 EXPECT_FALSE(mock_model_->translate_called_);
226 EXPECT_TRUE(mock_model_->translation_declined_);
227 }
228
176 TEST_F(TranslateBubbleViewTest, ComboboxNope) { 229 TEST_F(TranslateBubbleViewTest, ComboboxNope) {
230 CreateAndShowBubble();
177 views::test::ComboboxTestApi test_api(denial_combobox()); 231 views::test::ComboboxTestApi test_api(denial_combobox());
178 EXPECT_FALSE(denial_button_clicked()); 232 EXPECT_FALSE(denial_button_clicked());
179 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 233 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
180 234
181 test_api.PerformActionAt(static_cast<int>( 235 test_api.PerformActionAt(static_cast<int>(
182 TranslateBubbleView::DenialComboboxIndex::DONT_TRANSLATE)); 236 TranslateBubbleView::DenialComboboxIndex::DONT_TRANSLATE));
183 EXPECT_TRUE(denial_button_clicked()); 237 EXPECT_TRUE(denial_button_clicked());
184 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 238 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
185 } 239 }
186 240
187 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguage) { 241 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguage) {
242 CreateAndShowBubble();
188 views::test::ComboboxTestApi test_api(denial_combobox()); 243 views::test::ComboboxTestApi test_api(denial_combobox());
189 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 244 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
190 EXPECT_FALSE(mock_model_->never_translate_language_); 245 EXPECT_FALSE(mock_model_->never_translate_language_);
191 EXPECT_FALSE(denial_button_clicked()); 246 EXPECT_FALSE(denial_button_clicked());
192 247
193 test_api.PerformActionAt(static_cast<int>( 248 test_api.PerformActionAt(static_cast<int>(
194 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE)); 249 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE));
195 EXPECT_TRUE(denial_button_clicked()); 250 EXPECT_TRUE(denial_button_clicked());
196 EXPECT_TRUE(mock_model_->never_translate_language_); 251 EXPECT_TRUE(mock_model_->never_translate_language_);
197 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 252 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
198 } 253 }
199 254
200 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSite) { 255 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSite) {
256 CreateAndShowBubble();
201 views::test::ComboboxTestApi test_api(denial_combobox()); 257 views::test::ComboboxTestApi test_api(denial_combobox());
202 EXPECT_FALSE(mock_model_->never_translate_site_); 258 EXPECT_FALSE(mock_model_->never_translate_site_);
203 EXPECT_FALSE(denial_button_clicked()); 259 EXPECT_FALSE(denial_button_clicked());
204 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 260 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
205 261
206 test_api.PerformActionAt(static_cast<int>( 262 test_api.PerformActionAt(static_cast<int>(
207 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE)); 263 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE));
208 EXPECT_TRUE(denial_button_clicked()); 264 EXPECT_TRUE(denial_button_clicked());
209 EXPECT_TRUE(mock_model_->never_translate_site_); 265 EXPECT_TRUE(mock_model_->never_translate_site_);
210 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 266 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
211 } 267 }
212 268
269 TEST_F(TranslateBubbleViewTest, MenuButtonNeverTranslateLanguage) {
270 TurnOnTranslate2016Q2UIFlag();
271 CreateAndShowBubble();
272 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
273 EXPECT_FALSE(mock_model_->never_translate_language_);
274 EXPECT_FALSE(denial_button_clicked());
275
276 bubble_->ExecuteCommand(
277 TranslateBubbleView::DenialMenuItem::NEVER_TRANSLATE_LANGUAGE, 0);
278
279 EXPECT_TRUE(denial_button_clicked());
280 EXPECT_TRUE(mock_model_->never_translate_language_);
281 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
282 }
283
284 TEST_F(TranslateBubbleViewTest, MenuButtonNeverTranslateSite) {
285 TurnOnTranslate2016Q2UIFlag();
286 CreateAndShowBubble();
287 EXPECT_FALSE(mock_model_->never_translate_site_);
288 EXPECT_FALSE(denial_button_clicked());
289 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
290
291 bubble_->ExecuteCommand(
292 TranslateBubbleView::DenialMenuItem::NEVER_TRANSLATE_SITE, 0);
293
294 EXPECT_TRUE(denial_button_clicked());
295 EXPECT_TRUE(mock_model_->never_translate_site_);
296 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
297 }
298
213 TEST_F(TranslateBubbleViewTest, AdvancedLink) { 299 TEST_F(TranslateBubbleViewTest, AdvancedLink) {
300 CreateAndShowBubble();
214 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 301 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
215 bubble_->GetViewState()); 302 bubble_->GetViewState());
216 303
217 // Click the "Advanced" link. 304 // Click the "Advanced" link.
218 bubble_->HandleLinkClicked(TranslateBubbleView::LINK_ID_ADVANCED); 305 bubble_->HandleLinkClicked(TranslateBubbleView::LINK_ID_ADVANCED);
219 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 306 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
220 } 307 }
221 308
309 TEST_F(TranslateBubbleViewTest, AdvancedLinkIn2016Q2UI) {
310 TurnOnTranslate2016Q2UIFlag();
311 CreateAndShowBubble();
312 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
313 bubble_->GetViewState());
314
315 // Click the styled label link.
316 views::StyledLabel styled_label(base::ASCIIToUTF16("test"), nullptr);
317 bubble_->StyledLabelLinkClicked(&styled_label, gfx::Range(), ui::EF_NONE);
318 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
319 }
320
222 TEST_F(TranslateBubbleViewTest, ShowOriginalButton) { 321 TEST_F(TranslateBubbleViewTest, ShowOriginalButton) {
322 CreateAndShowBubble();
223 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE); 323 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE);
224 324
225 // Click the "Show original" button to revert translation. 325 // Click the "Show original" button to revert translation.
226 EXPECT_FALSE(mock_model_->revert_translation_called_); 326 EXPECT_FALSE(mock_model_->revert_translation_called_);
227 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_SHOW_ORIGINAL); 327 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_SHOW_ORIGINAL);
228 EXPECT_TRUE(mock_model_->revert_translation_called_); 328 EXPECT_TRUE(mock_model_->revert_translation_called_);
229 } 329 }
230 330
231 TEST_F(TranslateBubbleViewTest, TryAgainButton) { 331 TEST_F(TranslateBubbleViewTest, TryAgainButton) {
332 CreateAndShowBubble();
232 bubble_->SwitchToErrorView(translate::TranslateErrors::NETWORK); 333 bubble_->SwitchToErrorView(translate::TranslateErrors::NETWORK);
233 334
234 EXPECT_EQ(translate::TranslateErrors::NETWORK, mock_model_->error_type_); 335 EXPECT_EQ(translate::TranslateErrors::NETWORK, mock_model_->error_type_);
235 336
236 // Click the "Try again" button to translate. 337 // Click the "Try again" button to translate.
237 EXPECT_FALSE(mock_model_->translate_called_); 338 EXPECT_FALSE(mock_model_->translate_called_);
238 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRY_AGAIN); 339 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRY_AGAIN);
239 EXPECT_TRUE(mock_model_->translate_called_); 340 EXPECT_TRUE(mock_model_->translate_called_);
240 } 341 }
241 342
242 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndCancelButton) { 343 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndCancelButton) {
344 CreateAndShowBubble();
243 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 345 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
244 346
245 // Click the "Always Translate" checkbox. Changing the state of this checkbox 347 // Click the "Always Translate" checkbox. Changing the state of this checkbox
246 // should NOT affect the model after pressing the cancel button. 348 // should NOT affect the model after pressing the cancel button.
247 349
248 // Check the initial state. 350 // Check the initial state.
249 EXPECT_FALSE(mock_model_->should_always_translate_); 351 EXPECT_FALSE(mock_model_->should_always_translate_);
250 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 352 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
251 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked()); 353 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked());
252 354
253 // Click the checkbox. The state is not saved yet. 355 // Click the checkbox. The state is not saved yet.
254 bubble_->always_translate_checkbox_->SetChecked(true); 356 bubble_->always_translate_checkbox_->SetChecked(true);
255 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE); 357 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
256 EXPECT_FALSE(mock_model_->should_always_translate_); 358 EXPECT_FALSE(mock_model_->should_always_translate_);
257 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 359 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
258 360
259 // Click the cancel button. The state is not saved. 361 // Click the cancel button. The state is not saved.
260 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 362 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
261 EXPECT_FALSE(mock_model_->should_always_translate_); 363 EXPECT_FALSE(mock_model_->should_always_translate_);
262 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 364 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
263 } 365 }
264 366
265 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndDoneButton) { 367 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndDoneButton) {
368 CreateAndShowBubble();
266 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 369 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
267 370
268 // Click the "Always Translate" checkbox. Changing the state of this checkbox 371 // Click the "Always Translate" checkbox. Changing the state of this checkbox
269 // should affect the model after pressing the done button. 372 // should affect the model after pressing the done button.
270 373
271 // Check the initial state. 374 // Check the initial state.
272 EXPECT_FALSE(mock_model_->should_always_translate_); 375 EXPECT_FALSE(mock_model_->should_always_translate_);
273 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 376 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
274 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked()); 377 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked());
275 378
276 // Click the checkbox. The state is not saved yet. 379 // Click the checkbox. The state is not saved yet.
277 bubble_->always_translate_checkbox_->SetChecked(true); 380 bubble_->always_translate_checkbox_->SetChecked(true);
278 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE); 381 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
279 EXPECT_FALSE(mock_model_->should_always_translate_); 382 EXPECT_FALSE(mock_model_->should_always_translate_);
280 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 383 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
281 384
282 // Click the done button. The state is saved. 385 // Click the done button. The state is saved.
283 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 386 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
284 EXPECT_TRUE(mock_model_->should_always_translate_); 387 EXPECT_TRUE(mock_model_->should_always_translate_);
285 EXPECT_EQ(1, mock_model_->set_always_translate_called_count_); 388 EXPECT_EQ(1, mock_model_->set_always_translate_called_count_);
286 } 389 }
287 390
288 TEST_F(TranslateBubbleViewTest, DoneButton) { 391 TEST_F(TranslateBubbleViewTest, DoneButton) {
392 CreateAndShowBubble();
289 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 393 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
290 394
291 // Click the "Done" button to translate. The selected languages by the user 395 // Click the "Done" button to translate. The selected languages by the user
292 // are applied. 396 // are applied.
293 EXPECT_FALSE(mock_model_->translate_called_); 397 EXPECT_FALSE(mock_model_->translate_called_);
294 bubble_->source_language_combobox_->SetSelectedIndex(10); 398 bubble_->source_language_combobox_->SetSelectedIndex(10);
295 bubble_->HandleComboboxPerformAction( 399 bubble_->HandleComboboxPerformAction(
296 TranslateBubbleView::COMBOBOX_ID_SOURCE_LANGUAGE); 400 TranslateBubbleView::COMBOBOX_ID_SOURCE_LANGUAGE);
297 bubble_->target_language_combobox_->SetSelectedIndex(20); 401 bubble_->target_language_combobox_->SetSelectedIndex(20);
298 bubble_->HandleComboboxPerformAction( 402 bubble_->HandleComboboxPerformAction(
299 TranslateBubbleView::COMBOBOX_ID_TARGET_LANGUAGE); 403 TranslateBubbleView::COMBOBOX_ID_TARGET_LANGUAGE);
300 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 404 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
301 EXPECT_TRUE(mock_model_->translate_called_); 405 EXPECT_TRUE(mock_model_->translate_called_);
302 EXPECT_EQ(10, mock_model_->original_language_index_); 406 EXPECT_EQ(10, mock_model_->original_language_index_);
303 EXPECT_EQ(20, mock_model_->target_language_index_); 407 EXPECT_EQ(20, mock_model_->target_language_index_);
304 } 408 }
305 409
306 TEST_F(TranslateBubbleViewTest, DoneButtonWithoutTranslating) { 410 TEST_F(TranslateBubbleViewTest, DoneButtonWithoutTranslating) {
411 CreateAndShowBubble();
307 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 412 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
308 bubble_->GetViewState()); 413 bubble_->GetViewState());
309 414
310 // Translate the page once. 415 // Translate the page once.
311 mock_model_->Translate(); 416 mock_model_->Translate();
312 EXPECT_TRUE(mock_model_->translate_called_); 417 EXPECT_TRUE(mock_model_->translate_called_);
313 418
314 // Go back to the initial view. 419 // Go back to the initial view.
315 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 420 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
316 bubble_->GetViewState()); 421 bubble_->GetViewState());
317 mock_model_->translate_called_ = false; 422 mock_model_->translate_called_ = false;
318 423
319 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 424 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
320 bubble_->GetViewState()); 425 bubble_->GetViewState());
321 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 426 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
322 427
323 // Click the "Done" button with the current language pair. This time, 428 // 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 429 // translation is not performed and the view state will be back to the
325 // previous view. 430 // previous view.
326 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 431 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
327 EXPECT_FALSE(mock_model_->translate_called_); 432 EXPECT_FALSE(mock_model_->translate_called_);
328 433
329 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 434 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
330 bubble_->GetViewState()); 435 bubble_->GetViewState());
331 } 436 }
332 437
333 TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) { 438 TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) {
439 CreateAndShowBubble();
334 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); 440 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE);
335 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 441 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
336 442
337 // Click the "Cancel" button to go back. 443 // Click the "Cancel" button to go back.
338 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 444 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
339 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 445 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
340 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 446 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
341 bubble_->GetViewState()); 447 bubble_->GetViewState());
342 } 448 }
343 449
344 TEST_F(TranslateBubbleViewTest, CancelButtonReturningAfterTranslate) { 450 TEST_F(TranslateBubbleViewTest, CancelButtonReturningAfterTranslate) {
451 CreateAndShowBubble();
345 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE); 452 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE);
346 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 453 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
347 454
348 // Click the "Cancel" button to go back. 455 // Click the "Cancel" button to go back.
349 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 456 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
350 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 457 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
351 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE, 458 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE,
352 bubble_->GetViewState()); 459 bubble_->GetViewState());
353 } 460 }
354 461
355 TEST_F(TranslateBubbleViewTest, CancelButtonReturningError) { 462 TEST_F(TranslateBubbleViewTest, CancelButtonReturningError) {
463 CreateAndShowBubble();
356 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR); 464 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR);
357 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 465 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
358 466
359 // Click the "Cancel" button to go back. 467 // Click the "Cancel" button to go back.
360 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 468 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
361 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 469 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
362 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble_->GetViewState()); 470 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble_->GetViewState());
363 } 471 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698