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

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

Issue 26775007: Translate: Add TranslateBubbleView (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/translate/translate_bubble_view.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/ui/translate/translate_bubble_model.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/views/controls/button/checkbox.h"
11 #include "ui/views/controls/combobox/combobox.h"
12 #include "ui/views/test/views_test_base.h"
13 #include "ui/views/widget/widget.h"
14
15 namespace {
16
17 class MockTranslateBubbleModel : public TranslateBubbleModel {
18 public:
19 MockTranslateBubbleModel()
20 : original_language_index_(0),
21 target_language_index_(1),
22 is_language_blocked_(false),
23 is_site_blacklisted_(false),
24 should_always_translate_(false),
25 set_always_translate_called_count_(0),
26 translate_called_(false),
27 revert_translation_called_(false),
28 translation_declined_called_(false) {
29 }
30
31 virtual int GetNumberOfLanguages() const OVERRIDE {
32 return 1000;
33 }
34
35 virtual string16 GetLanguageNameAt(int index) const OVERRIDE {
36 return string16();
37 }
38
39 virtual int GetOriginalLanguageIndex() const OVERRIDE {
40 return original_language_index_;
41 }
42
43 virtual void SetOriginalLanguageIndex(int index) OVERRIDE {
44 original_language_index_ = index;
45 }
46
47 virtual int GetTargetLanguageIndex() const OVERRIDE {
48 return target_language_index_;
49 }
50
51 virtual void SetTargetLanguageIndex(int index) OVERRIDE {
52 target_language_index_ = index;
53 }
54
55 virtual void SetLanguageBlocked(bool value) OVERRIDE {
56 is_language_blocked_ = value;
57 }
58
59 virtual void SetSiteBlacklist(bool value) OVERRIDE {
60 is_site_blacklisted_ = value;
61 }
62
63 virtual bool ShouldAlwaysTranslate() const OVERRIDE {
64 return should_always_translate_;
65 }
66
67 virtual void SetAlwaysTranslate(bool value) OVERRIDE {
68 should_always_translate_ = value;
69 set_always_translate_called_count_++;
70 }
71
72 virtual void Translate() OVERRIDE {
73 translate_called_ = true;
74 }
75
76 virtual void RevertTranslation() OVERRIDE {
77 revert_translation_called_ = true;
78 }
79
80 virtual void TranslationDeclined() OVERRIDE {
81 translation_declined_called_ = true;
82 }
83
84 int original_language_index_;
85 int target_language_index_;
86 bool is_language_blocked_;
87 bool is_site_blacklisted_;
88 bool should_always_translate_;
89 int set_always_translate_called_count_;
90 bool translate_called_;
91 bool revert_translation_called_;
92 bool translation_declined_called_;
93 };
94
95 } // namespace
96
97 class TranslateBubbleViewTest : public views::ViewsTestBase {
98 public:
99 TranslateBubbleViewTest() {
100 }
101
102 protected:
103 virtual void SetUp() OVERRIDE {
104 views::ViewsTestBase::SetUp();
105
106 // The bubble needs the parent as an anchor.
107 views::Widget::InitParams params =
108 CreateParams(views::Widget::InitParams::TYPE_WINDOW);
109 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
110
111 anchor_widget_.reset(new views::Widget());
112 anchor_widget_->Init(params);
113 anchor_widget_->Show();
114
115 mock_model_ = new MockTranslateBubbleModel();
116 scoped_ptr<TranslateBubbleModel> model(mock_model_);
117 bubble_ = new TranslateBubbleView(anchor_widget_->GetContentsView(),
118 model.Pass(),
119 TranslateBubbleModel::BEFORE_TRANSLATE,
120 false,
121 NULL);
122 views::BubbleDelegateView::CreateBubble(bubble_)->Show();
123 }
124
125 virtual void TearDown() OVERRIDE {
126 bubble_->GetWidget()->CloseNow();
127 anchor_widget_.reset();
128
129 views::ViewsTestBase::TearDown();
130 }
131
132 scoped_ptr<views::Widget> anchor_widget_;
133 MockTranslateBubbleModel* mock_model_;
134 TranslateBubbleView* bubble_;
135 };
136
137 TEST_F(TranslateBubbleViewTest, TranslateButton) {
138 EXPECT_FALSE(mock_model_->translate_called_);
139
140 // Press the "Translate" button.
141 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRANSLATE);
142 EXPECT_TRUE(mock_model_->translate_called_);
143 }
144
145 TEST_F(TranslateBubbleViewTest, AdvancedLink) {
146 EXPECT_EQ(TranslateBubbleModel::BEFORE_TRANSLATE, bubble_->view_type_);
147
148 // Click the "Advanced" link.
149 bubble_->HandleLinkClicked(TranslateBubbleView::LINK_ID_ADVANCED);
150 EXPECT_EQ(TranslateBubbleModel::ADVANCED, bubble_->view_type_);
151 }
152
153 TEST_F(TranslateBubbleViewTest, ShowOriginalButton) {
154 bubble_->SwitchView(TranslateBubbleModel::AFTER_TRANSLATE);
155
156 // Click the "Show original" button to revert translation.
157 EXPECT_FALSE(mock_model_->revert_translation_called_);
158 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_SHOW_ORIGINAL);
159 EXPECT_TRUE(mock_model_->revert_translation_called_);
160 }
161
162 TEST_F(TranslateBubbleViewTest, TryAgainButton) {
163 bubble_->SwitchView(TranslateBubbleModel::ERROR);
164
165 // Click the "Try again" button to translate.
166 EXPECT_FALSE(mock_model_->translate_called_);
167 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_TRY_AGAIN);
168 EXPECT_TRUE(mock_model_->translate_called_);
169 }
170
171 TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckbox) {
172 bubble_->SwitchView(TranslateBubbleModel::ADVANCED);
173
174 // Click the "Always Translate" checkbox. Changing the state of this checkbox
175 // should affect the model immediately.
176
177 // Check the initial state.
178 EXPECT_FALSE(mock_model_->should_always_translate_);
179 EXPECT_EQ(0, mock_model_->set_always_translate_called_count_);
180 EXPECT_FALSE(bubble_->always_translate_checkbox_->checked());
181
182 // Click the checkbox.
183 bubble_->always_translate_checkbox_->SetChecked(true);
184 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
185 EXPECT_TRUE(mock_model_->should_always_translate_);
186 EXPECT_EQ(1, mock_model_->set_always_translate_called_count_);
187
188 // Click this again and check the state is reverted.
189 bubble_->always_translate_checkbox_->SetChecked(false);
190 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_ALWAYS_TRANSLATE);
191 EXPECT_FALSE(mock_model_->should_always_translate_);
192 EXPECT_EQ(2, mock_model_->set_always_translate_called_count_);
193 }
194
195 TEST_F(TranslateBubbleViewTest, DoneButton) {
196 bubble_->SwitchView(TranslateBubbleModel::ADVANCED);
197
198 // Click the "Done" button to translate. The selected languages by the user
199 // are applied.
200 EXPECT_FALSE(mock_model_->translate_called_);
201 bubble_->source_language_combobox_->SetSelectedIndex(10);
202 bubble_->target_language_combobox_->SetSelectedIndex(20);
203 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE);
204 EXPECT_TRUE(mock_model_->translate_called_);
205 EXPECT_EQ(10, mock_model_->original_language_index_);
206 EXPECT_EQ(20, mock_model_->target_language_index_);
207 }
208
209 TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) {
210 bubble_->SwitchView(TranslateBubbleModel::BEFORE_TRANSLATE);
211 bubble_->SwitchView(TranslateBubbleModel::ADVANCED);
212
213 // Click the "Cancel" button to go back.
214 EXPECT_EQ(TranslateBubbleModel::ADVANCED, bubble_->view_type_);
215 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
216 EXPECT_EQ(TranslateBubbleModel::BEFORE_TRANSLATE, bubble_->view_type_);
217 }
218
219 TEST_F(TranslateBubbleViewTest, CancelButtonReturningAfterTranslate) {
220 bubble_->SwitchView(TranslateBubbleModel::AFTER_TRANSLATE);
221 bubble_->SwitchView(TranslateBubbleModel::ADVANCED);
222
223 // Click the "Cancel" button to go back.
224 EXPECT_EQ(TranslateBubbleModel::ADVANCED, bubble_->view_type_);
225 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
226 EXPECT_EQ(TranslateBubbleModel::AFTER_TRANSLATE, bubble_->view_type_);
227 }
228
229 TEST_F(TranslateBubbleViewTest, CancelButtonReturningError) {
230 bubble_->SwitchView(TranslateBubbleModel::ERROR);
231 bubble_->SwitchView(TranslateBubbleModel::ADVANCED);
232
233 // Click the "Cancel" button to go back.
234 EXPECT_EQ(TranslateBubbleModel::ADVANCED, bubble_->view_type_);
235 bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_CANCEL);
236 EXPECT_EQ(TranslateBubbleModel::ERROR, bubble_->view_type_);
237 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698