Index: chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc |
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc |
index 0b84c1bc4c10d5ab10ea88d7ace74fa5ba0d66a8..14a5e14d2217bcd66eadd422cd25fbadcb7ee06e 100644 |
--- a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc |
+++ b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc |
@@ -27,7 +27,9 @@ class MockTranslateBubbleModel : public TranslateBubbleModel { |
set_always_translate_called_count_(0), |
translate_called_(false), |
revert_translation_called_(false), |
- translation_declined_called_(false) { |
+ translation_declined_called_(false), |
+ original_language_index_on_translation_(-1), |
+ target_language_index_on_translation_(-1) { |
} |
virtual TranslateBubbleModel::ViewState GetViewState() const OVERRIDE { |
@@ -86,6 +88,8 @@ class MockTranslateBubbleModel : public TranslateBubbleModel { |
virtual void Translate() OVERRIDE { |
translate_called_ = true; |
+ original_language_index_on_translation_ = original_language_index_; |
+ target_language_index_on_translation_ = target_language_index_; |
} |
virtual void RevertTranslation() OVERRIDE { |
@@ -96,6 +100,12 @@ class MockTranslateBubbleModel : public TranslateBubbleModel { |
translation_declined_called_ = true; |
} |
+ virtual bool IsPageTranslatedInCurrentLanguages() const OVERRIDE { |
+ return original_language_index_on_translation_ == |
+ original_language_index_ && |
+ target_language_index_on_translation_ == target_language_index_; |
+ } |
+ |
TranslateBubbleViewStateTransition view_state_transition_; |
int original_language_index_; |
int target_language_index_; |
@@ -106,6 +116,8 @@ class MockTranslateBubbleModel : public TranslateBubbleModel { |
bool translate_called_; |
bool revert_translation_called_; |
bool translation_declined_called_; |
+ int original_language_index_on_translation_; |
+ int target_language_index_on_translation_; |
}; |
} // namespace |
@@ -231,7 +243,6 @@ TEST_F(TranslateBubbleViewTest, AlwaysTranslateCheckboxAndDoneButton) { |
EXPECT_EQ(1, mock_model_->set_always_translate_called_count_); |
} |
- |
TEST_F(TranslateBubbleViewTest, DoneButton) { |
bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); |
@@ -250,6 +261,33 @@ TEST_F(TranslateBubbleViewTest, DoneButton) { |
EXPECT_EQ(20, mock_model_->target_language_index_); |
} |
+TEST_F(TranslateBubbleViewTest, DoneButtonWithoutTranslating) { |
+ EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, |
+ bubble_->GetViewState()); |
+ |
+ // Translate the page once. |
+ mock_model_->Translate(); |
+ EXPECT_TRUE(mock_model_->translate_called_); |
+ |
+ // Go back to the initial view. |
+ EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, |
+ bubble_->GetViewState()); |
+ mock_model_->translate_called_ = false; |
+ |
+ EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, |
+ bubble_->GetViewState()); |
+ bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); |
+ |
+ // Click the "Done" button with the current language pair. This time, |
+ // translation is not performed and the view state will be back to the |
+ // previous view. |
+ bubble_->HandleButtonPressed(TranslateBubbleView::BUTTON_ID_DONE); |
+ EXPECT_FALSE(mock_model_->translate_called_); |
+ |
+ EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, |
+ bubble_->GetViewState()); |
+} |
+ |
TEST_F(TranslateBubbleViewTest, CancelButtonReturningBeforeTranslate) { |
bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); |
bubble_->SwitchView(TranslateBubbleModel::VIEW_STATE_ADVANCED); |