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

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: fix namespace in .h and other minor review 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 GetAlwaysTranslateChecked() const override {
92 return always_translate_checked_;
93 }
84 bool ShouldAlwaysTranslate() const override { 94 bool ShouldAlwaysTranslate() const override {
msw 2016/04/29 20:00:02 nit: blank line above
ftang 2016/04/29 22:37:02 Done.
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 {
94 translate_called_ = true; 104 translate_called_ = true;
(...skipping 11 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, "");
msw 2016/04/29 20:00:02 nit: s/""/std::string()/
ftang 2016/04/29 22:37:02 Done.
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(
msw 2016/04/29 20:00:02 nit: maybe use EventGenerator.
ftang 2016/04/29 22:37:02 Acknowledged.
221 bubble_->GetBubbleFrameView()->close_,
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
241 TEST_F(TranslateBubbleViewTest, ComboboxNopeIn2016Q2UI) {
242 TurnOnTranslate2016Q2UIFlag();
243 CreateAndShowBubble();
244 views::test::ComboboxTestApi test_api(denial_combobox());
245 EXPECT_FALSE(denial_button_clicked());
246 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
247
248 test_api.PerformActionAt(static_cast<int>(
249 TranslateBubbleView::DenialComboboxIndex::DONT_TRANSLATE));
250
251 // In the 2016Q2 UI, we should not close nor take action.
msw 2016/04/29 20:00:02 Isn't the 'nope' button simply not available in th
ftang 2016/04/29 22:37:02 no, that is not true. the menu item will be there
msw 2016/04/29 23:43:39 Sorry, in the mocks it doesn't show a 'Nope' butto
252 EXPECT_FALSE(denial_button_clicked());
253 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
254 }
255
187 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguage) { 256 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguage) {
257 CreateAndShowBubble();
188 views::test::ComboboxTestApi test_api(denial_combobox()); 258 views::test::ComboboxTestApi test_api(denial_combobox());
189 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 259 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
190 EXPECT_FALSE(mock_model_->never_translate_language_); 260 EXPECT_FALSE(mock_model_->never_translate_language_);
261 EXPECT_FALSE(denial_button_clicked());
262
263 test_api.PerformActionAt(static_cast<int>(
264 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE));
265 EXPECT_TRUE(denial_button_clicked());
266 EXPECT_TRUE(mock_model_->never_translate_language_);
267 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
268 }
269
270 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateLanguageIn2016Q2UI) {
271 TurnOnTranslate2016Q2UIFlag();
272 CreateAndShowBubble();
273 views::test::ComboboxTestApi test_api(denial_combobox());
274 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
275 EXPECT_FALSE(mock_model_->never_translate_language_);
191 EXPECT_FALSE(denial_button_clicked()); 276 EXPECT_FALSE(denial_button_clicked());
192 277
193 test_api.PerformActionAt(static_cast<int>( 278 test_api.PerformActionAt(static_cast<int>(
194 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE)); 279 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_LANGUAGE));
195 EXPECT_TRUE(denial_button_clicked()); 280 EXPECT_TRUE(denial_button_clicked());
196 EXPECT_TRUE(mock_model_->never_translate_language_); 281 EXPECT_TRUE(mock_model_->never_translate_language_);
197 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 282 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
198 } 283 }
199 284
200 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSite) { 285 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSite) {
286 CreateAndShowBubble();
201 views::test::ComboboxTestApi test_api(denial_combobox()); 287 views::test::ComboboxTestApi test_api(denial_combobox());
202 EXPECT_FALSE(mock_model_->never_translate_site_); 288 EXPECT_FALSE(mock_model_->never_translate_site_);
203 EXPECT_FALSE(denial_button_clicked()); 289 EXPECT_FALSE(denial_button_clicked());
290 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
291
292 test_api.PerformActionAt(static_cast<int>(
293 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE));
294 EXPECT_TRUE(denial_button_clicked());
295 EXPECT_TRUE(mock_model_->never_translate_site_);
296 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
297 }
298
299 TEST_F(TranslateBubbleViewTest, ComboboxNeverTranslateSiteIn2016Q2UI) {
300 TurnOnTranslate2016Q2UIFlag();
301 CreateAndShowBubble();
302 views::test::ComboboxTestApi test_api(denial_combobox());
303 EXPECT_FALSE(mock_model_->never_translate_site_);
304 EXPECT_FALSE(denial_button_clicked());
204 EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); 305 EXPECT_FALSE(bubble_->GetWidget()->IsClosed());
205 306
206 test_api.PerformActionAt(static_cast<int>( 307 test_api.PerformActionAt(static_cast<int>(
207 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE)); 308 TranslateBubbleView::DenialComboboxIndex::NEVER_TRANSLATE_SITE));
208 EXPECT_TRUE(denial_button_clicked()); 309 EXPECT_TRUE(denial_button_clicked());
209 EXPECT_TRUE(mock_model_->never_translate_site_); 310 EXPECT_TRUE(mock_model_->never_translate_site_);
210 EXPECT_TRUE(bubble_->GetWidget()->IsClosed()); 311 EXPECT_TRUE(bubble_->GetWidget()->IsClosed());
211 } 312 }
212 313
213 TEST_F(TranslateBubbleViewTest, AdvancedLink) { 314 TEST_F(TranslateBubbleViewTest, AdvancedLink) {
315 CreateAndShowBubble();
214 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 316 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
215 bubble_->GetViewState()); 317 bubble_->GetViewState());
216 318
217 // Click the "Advanced" link. 319 // Click the "Advanced" link.
218 bubble_->HandleLinkClicked(TranslateBubbleView::LINK_ID_ADVANCED); 320 bubble_->HandleLinkClicked(TranslateBubbleView::LINK_ID_ADVANCED);
219 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 321 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
220 } 322 }
221 323
324 TEST_F(TranslateBubbleViewTest, AdvancedLinkIn2016Q2UI) {
325 TurnOnTranslate2016Q2UIFlag();
326 CreateAndShowBubble();
327 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
328 bubble_->GetViewState());
329
330 // call the StyledLabelLinkClicked();
msw 2016/04/29 20:00:02 nit: "Click the styled label link."
ftang 2016/04/29 22:37:02 Done.
331 views::StyledLabel styled_label(base::ASCIIToUTF16("test"), nullptr);
msw 2016/04/29 20:00:02 You don't need to supply a valid styled label here
ftang 2016/04/29 22:37:02 no, I tried it. It won't work and will give me err
332 bubble_->StyledLabelLinkClicked(&styled_label, gfx::Range(), ui::EF_NONE);
333 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
334 }
335
222 TEST_F(TranslateBubbleViewTest, ShowOriginalButton) { 336 TEST_F(TranslateBubbleViewTest, ShowOriginalButton) {
337 CreateAndShowBubble();
223 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE); 338 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE);
224 339
225 // Click the "Show original" button to revert translation. 340 // Click the "Show original" button to revert translation.
226 EXPECT_FALSE(mock_model_->revert_translation_called_); 341 EXPECT_FALSE(mock_model_->revert_translation_called_);
227 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_SHOW_ORIGINAL); 342 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_SHOW_ORIGINAL);
228 EXPECT_TRUE(mock_model_->revert_translation_called_); 343 EXPECT_TRUE(mock_model_->revert_translation_called_);
229 } 344 }
230 345
231 TEST_F(TranslateBubbleViewTest, TryAgainButton) { 346 TEST_F(TranslateBubbleViewTest, TryAgainButton) {
347 CreateAndShowBubble();
232 bubble_->SwitchToErrorView(translate::TranslateErrors::NETWORK); 348 bubble_->SwitchToErrorView(translate::TranslateErrors::NETWORK);
233 349
234 EXPECT_EQ(translate::TranslateErrors::NETWORK, mock_model_->error_type_); 350 EXPECT_EQ(translate::TranslateErrors::NETWORK, mock_model_->error_type_);
235 351
236 // Click the "Try again" button to translate. 352 // Click the "Try again" button to translate.
237 EXPECT_FALSE(mock_model_->translate_called_); 353 EXPECT_FALSE(mock_model_->translate_called_);
238 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRY_AGAIN); 354 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRY_AGAIN);
239 EXPECT_TRUE(mock_model_->translate_called_); 355 EXPECT_TRUE(mock_model_->translate_called_);
240 } 356 }
241 357
242 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndCancelButton) { 358 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndCancelButton) {
359 CreateAndShowBubble();
243 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 360 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
244 361
245 // Click the "Always Translate" checkbox. Changing the state of this checkbox 362 // Click the "Always Translate" checkbox. Changing the state of this checkbox
246 // should NOT affect the model after pressing the cancel button. 363 // should NOT affect the model after pressing the cancel button.
247 364
248 // Check the initial state. 365 // Check the initial state.
249 EXPECT_FALSE(mock_model_->should_always_translate_); 366 EXPECT_FALSE(mock_model_->should_always_translate_);
250 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 367 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
251 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked()); 368 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked());
252 369
253 // Click the checkbox. The state is not saved yet. 370 // Click the checkbox. The state is not saved yet.
254 bubble_->always_translate_checkbox_->SetChecked(true); 371 bubble_->always_translate_checkbox_->SetChecked(true);
255 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE); 372 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
256 EXPECT_FALSE(mock_model_->should_always_translate_); 373 EXPECT_FALSE(mock_model_->should_always_translate_);
257 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 374 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
258 375
259 // Click the cancel button. The state is not saved. 376 // Click the cancel button. The state is not saved.
260 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 377 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
261 EXPECT_FALSE(mock_model_->should_always_translate_); 378 EXPECT_FALSE(mock_model_->should_always_translate_);
262 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 379 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
263 } 380 }
264 381
265 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndDoneButton) { 382 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndDoneButton) {
383 CreateAndShowBubble();
266 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 384 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
267 385
268 // Click the "Always Translate" checkbox. Changing the state of this checkbox 386 // Click the "Always Translate" checkbox. Changing the state of this checkbox
269 // should affect the model after pressing the done button. 387 // should affect the model after pressing the done button.
270 388
271 // Check the initial state. 389 // Check the initial state.
272 EXPECT_FALSE(mock_model_->should_always_translate_); 390 EXPECT_FALSE(mock_model_->should_always_translate_);
273 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 391 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
274 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked()); 392 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked());
275 393
276 // Click the checkbox. The state is not saved yet. 394 // Click the checkbox. The state is not saved yet.
277 bubble_->always_translate_checkbox_->SetChecked(true); 395 bubble_->always_translate_checkbox_->SetChecked(true);
278 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE); 396 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
279 EXPECT_FALSE(mock_model_->should_always_translate_); 397 EXPECT_FALSE(mock_model_->should_always_translate_);
280 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_); 398 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
281 399
282 // Click the done button. The state is saved. 400 // Click the done button. The state is saved.
283 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 401 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
284 EXPECT_TRUE(mock_model_->should_always_translate_); 402 EXPECT_TRUE(mock_model_->should_always_translate_);
285 EXPECT_EQ(1, mock_model_->set_always_translate_called_count_); 403 EXPECT_EQ(1, mock_model_->set_always_translate_called_count_);
286 } 404 }
287 405
288 TEST_F(TranslateBubbleViewTest, DoneButton) { 406 TEST_F(TranslateBubbleViewTest, DoneButton) {
407 CreateAndShowBubble();
289 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 408 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
290 409
291 // Click the "Done" button to translate. The selected languages by the user 410 // Click the "Done" button to translate. The selected languages by the user
292 // are applied. 411 // are applied.
293 EXPECT_FALSE(mock_model_->translate_called_); 412 EXPECT_FALSE(mock_model_->translate_called_);
294 bubble_->source_language_combobox_->SetSelectedIndex(10); 413 bubble_->source_language_combobox_->SetSelectedIndex(10);
295 bubble_->HandleComboboxPerformAction( 414 bubble_->HandleComboboxPerformAction(
296 TranslateBubbleView::COMBOBOX_ID_SOURCE_LANGUAGE); 415 TranslateBubbleView::COMBOBOX_ID_SOURCE_LANGUAGE);
297 bubble_->target_language_combobox_->SetSelectedIndex(20); 416 bubble_->target_language_combobox_->SetSelectedIndex(20);
298 bubble_->HandleComboboxPerformAction( 417 bubble_->HandleComboboxPerformAction(
299 TranslateBubbleView::COMBOBOX_ID_TARGET_LANGUAGE); 418 TranslateBubbleView::COMBOBOX_ID_TARGET_LANGUAGE);
300 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 419 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
301 EXPECT_TRUE(mock_model_->translate_called_); 420 EXPECT_TRUE(mock_model_->translate_called_);
302 EXPECT_EQ(10, mock_model_->original_language_index_); 421 EXPECT_EQ(10, mock_model_->original_language_index_);
303 EXPECT_EQ(20, mock_model_->target_language_index_); 422 EXPECT_EQ(20, mock_model_->target_language_index_);
304 } 423 }
305 424
306 TEST_F(TranslateBubbleViewTest, DoneButtonWithoutTranslating) { 425 TEST_F(TranslateBubbleViewTest, DoneButtonWithoutTranslating) {
426 CreateAndShowBubble();
307 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 427 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
308 bubble_->GetViewState()); 428 bubble_->GetViewState());
309 429
310 // Translate the page once. 430 // Translate the page once.
311 mock_model_->Translate(); 431 mock_model_->Translate();
312 EXPECT_TRUE(mock_model_->translate_called_); 432 EXPECT_TRUE(mock_model_->translate_called_);
313 433
314 // Go back to the initial view. 434 // Go back to the initial view.
315 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 435 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
316 bubble_->GetViewState()); 436 bubble_->GetViewState());
317 mock_model_->translate_called_ = false; 437 mock_model_->translate_called_ = false;
318 438
319 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 439 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
320 bubble_->GetViewState()); 440 bubble_->GetViewState());
321 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 441 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
322 442
323 // Click the "Done" button with the current language pair. This time, 443 // 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 444 // translation is not performed and the view state will be back to the
325 // previous view. 445 // previous view.
326 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); 446 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
327 EXPECT_FALSE(mock_model_->translate_called_); 447 EXPECT_FALSE(mock_model_->translate_called_);
328 448
329 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 449 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
330 bubble_->GetViewState()); 450 bubble_->GetViewState());
331 } 451 }
332 452
333 TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) { 453 TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) {
454 CreateAndShowBubble();
334 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); 455 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE);
335 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 456 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
336 457
337 // Click the "Cancel" button to go back. 458 // Click the "Cancel" button to go back.
338 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 459 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
339 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 460 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
340 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 461 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
341 bubble_->GetViewState()); 462 bubble_->GetViewState());
342 } 463 }
343 464
344 TEST_F(TranslateBubbleViewTest, CancelButtonReturningAfterTranslate) { 465 TEST_F(TranslateBubbleViewTest, CancelButtonReturningAfterTranslate) {
466 CreateAndShowBubble();
345 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE); 467 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE);
346 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 468 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
347 469
348 // Click the "Cancel" button to go back. 470 // Click the "Cancel" button to go back.
349 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 471 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
350 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 472 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
351 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE, 473 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE,
352 bubble_->GetViewState()); 474 bubble_->GetViewState());
353 } 475 }
354 476
355 TEST_F(TranslateBubbleViewTest, CancelButtonReturningError) { 477 TEST_F(TranslateBubbleViewTest, CancelButtonReturningError) {
478 CreateAndShowBubble();
356 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR); 479 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR);
357 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); 480 bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED);
358 481
359 // Click the "Cancel" button to go back. 482 // Click the "Cancel" button to go back.
360 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState()); 483 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ADVANCED, bubble_->GetViewState());
361 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL); 484 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
362 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble_->GetViewState()); 485 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_ERROR, bubble_->GetViewState());
363 } 486 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698