| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <tuple> | 5 #include <tuple> |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
| 10 #include "chrome/common/chrome_isolated_world_ids.h" | 10 #include "chrome/common/chrome_isolated_world_ids.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 if (error) | 105 if (error) |
| 106 *error = trans_result_error_type_; | 106 *error = trans_result_error_type_; |
| 107 return true; | 107 return true; |
| 108 } | 108 } |
| 109 | 109 |
| 110 MOCK_METHOD0(IsTranslateLibAvailable, bool()); | 110 MOCK_METHOD0(IsTranslateLibAvailable, bool()); |
| 111 MOCK_METHOD0(IsTranslateLibReady, bool()); | 111 MOCK_METHOD0(IsTranslateLibReady, bool()); |
| 112 MOCK_METHOD0(HasTranslationFinished, bool()); | 112 MOCK_METHOD0(HasTranslationFinished, bool()); |
| 113 MOCK_METHOD0(HasTranslationFailed, bool()); | 113 MOCK_METHOD0(HasTranslationFailed, bool()); |
| 114 MOCK_METHOD0(GetOriginalPageLanguage, std::string()); | 114 MOCK_METHOD0(GetOriginalPageLanguage, std::string()); |
| 115 MOCK_METHOD0(GetErrorCode, int64_t()); |
| 115 MOCK_METHOD0(StartTranslation, bool()); | 116 MOCK_METHOD0(StartTranslation, bool()); |
| 116 MOCK_METHOD1(ExecuteScript, void(const std::string&)); | 117 MOCK_METHOD1(ExecuteScript, void(const std::string&)); |
| 117 MOCK_METHOD2(ExecuteScriptAndGetBoolResult, bool(const std::string&, bool)); | 118 MOCK_METHOD2(ExecuteScriptAndGetBoolResult, bool(const std::string&, bool)); |
| 118 MOCK_METHOD1(ExecuteScriptAndGetStringResult, | 119 MOCK_METHOD1(ExecuteScriptAndGetStringResult, |
| 119 std::string(const std::string&)); | 120 std::string(const std::string&)); |
| 120 MOCK_METHOD1(ExecuteScriptAndGetDoubleResult, double(const std::string&)); | 121 MOCK_METHOD1(ExecuteScriptAndGetDoubleResult, double(const std::string&)); |
| 122 MOCK_METHOD1(ExecuteScriptAndGetIntegerResult, int64_t(const std::string&)); |
| 121 | 123 |
| 122 private: | 124 private: |
| 123 void OnPageTranslated(bool cancelled, | 125 void OnPageTranslated(bool cancelled, |
| 124 const std::string& original_lang, | 126 const std::string& original_lang, |
| 125 const std::string& translated_lang, | 127 const std::string& translated_lang, |
| 126 translate::TranslateErrors::Type error_type) { | 128 translate::TranslateErrors::Type error_type) { |
| 127 page_translated_ = true; | 129 page_translated_ = true; |
| 128 trans_result_cancelled_ = cancelled; | 130 trans_result_cancelled_ = cancelled; |
| 129 trans_result_original_lang_ = original_lang; | 131 trans_result_original_lang_ = original_lang; |
| 130 trans_result_translated_lang_ = translated_lang; | 132 trans_result_translated_lang_ = translated_lang; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 // library. | 179 // library. |
| 178 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) | 180 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) |
| 179 .Times(AtLeast(1)) | 181 .Times(AtLeast(1)) |
| 180 .WillRepeatedly(Return(true)); | 182 .WillRepeatedly(Return(true)); |
| 181 | 183 |
| 182 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) | 184 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) |
| 183 .Times(AtLeast(5)) // See kMaxTranslateInitCheckAttempts in | 185 .Times(AtLeast(5)) // See kMaxTranslateInitCheckAttempts in |
| 184 // translate_helper.cc | 186 // translate_helper.cc |
| 185 .WillRepeatedly(Return(false)); | 187 .WillRepeatedly(Return(false)); |
| 186 | 188 |
| 189 EXPECT_CALL(*translate_helper_, GetErrorCode()) |
| 190 .Times(AtLeast(5)) |
| 191 .WillRepeatedly(Return(translate::TranslateErrors::NONE)); |
| 192 |
| 187 translate_helper_->TranslatePage("en", "fr", std::string()); | 193 translate_helper_->TranslatePage("en", "fr", std::string()); |
| 188 base::RunLoop().RunUntilIdle(); | 194 base::RunLoop().RunUntilIdle(); |
| 189 | 195 |
| 190 translate::TranslateErrors::Type error; | 196 translate::TranslateErrors::Type error; |
| 191 ASSERT_TRUE(translate_helper_->GetPageTranslatedResult(NULL, NULL, &error)); | 197 ASSERT_TRUE(translate_helper_->GetPageTranslatedResult(NULL, NULL, &error)); |
| 192 EXPECT_EQ(translate::TranslateErrors::INITIALIZATION_ERROR, error); | 198 EXPECT_EQ(translate::TranslateErrors::TRANSLATION_TIMEOUT, error); |
| 193 } | 199 } |
| 194 | 200 |
| 195 // Tests that the browser gets notified of the translation success when the | 201 // Tests that the browser gets notified of the translation success when the |
| 196 // translation succeeds. | 202 // translation succeeds. |
| 197 TEST_F(TranslateHelperBrowserTest, TranslateSuccess) { | 203 TEST_F(TranslateHelperBrowserTest, TranslateSuccess) { |
| 198 // We make IsTranslateLibAvailable true so we don't attempt to inject the | 204 // We make IsTranslateLibAvailable true so we don't attempt to inject the |
| 199 // library. | 205 // library. |
| 200 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) | 206 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) |
| 201 .Times(AtLeast(1)) | 207 .Times(AtLeast(1)) |
| 202 .WillRepeatedly(Return(true)); | 208 .WillRepeatedly(Return(true)); |
| 203 | 209 |
| 204 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) | 210 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) |
| 205 .WillOnce(Return(false)) | 211 .WillOnce(Return(false)) |
| 206 .WillOnce(Return(true)); | 212 .WillOnce(Return(true)); |
| 207 | 213 |
| 214 EXPECT_CALL(*translate_helper_, GetErrorCode()) |
| 215 .WillOnce(Return(translate::TranslateErrors::NONE)); |
| 216 |
| 208 EXPECT_CALL(*translate_helper_, StartTranslation()).WillOnce(Return(true)); | 217 EXPECT_CALL(*translate_helper_, StartTranslation()).WillOnce(Return(true)); |
| 209 | 218 |
| 210 // Succeed after few checks. | 219 // Succeed after few checks. |
| 211 EXPECT_CALL(*translate_helper_, HasTranslationFailed()) | 220 EXPECT_CALL(*translate_helper_, HasTranslationFailed()) |
| 212 .WillRepeatedly(Return(false)); | 221 .WillRepeatedly(Return(false)); |
| 213 EXPECT_CALL(*translate_helper_, HasTranslationFinished()) | 222 EXPECT_CALL(*translate_helper_, HasTranslationFinished()) |
| 214 .WillOnce(Return(false)) | 223 .WillOnce(Return(false)) |
| 215 .WillOnce(Return(false)) | 224 .WillOnce(Return(false)) |
| 216 .WillOnce(Return(true)); | 225 .WillOnce(Return(true)); |
| 217 | 226 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 EXPECT_CALL(*translate_helper_, HasTranslationFailed()) | 261 EXPECT_CALL(*translate_helper_, HasTranslationFailed()) |
| 253 .WillOnce(Return(false)) | 262 .WillOnce(Return(false)) |
| 254 .WillOnce(Return(false)) | 263 .WillOnce(Return(false)) |
| 255 .WillOnce(Return(false)) | 264 .WillOnce(Return(false)) |
| 256 .WillOnce(Return(true)); | 265 .WillOnce(Return(true)); |
| 257 | 266 |
| 258 EXPECT_CALL(*translate_helper_, HasTranslationFinished()) | 267 EXPECT_CALL(*translate_helper_, HasTranslationFinished()) |
| 259 .Times(AtLeast(1)) | 268 .Times(AtLeast(1)) |
| 260 .WillRepeatedly(Return(false)); | 269 .WillRepeatedly(Return(false)); |
| 261 | 270 |
| 271 EXPECT_CALL(*translate_helper_, GetErrorCode()) |
| 272 .WillOnce(Return(translate::TranslateErrors::TRANSLATION_ERROR)); |
| 273 |
| 262 // V8 call for performance monitoring should be ignored. | 274 // V8 call for performance monitoring should be ignored. |
| 263 EXPECT_CALL(*translate_helper_, | 275 EXPECT_CALL(*translate_helper_, |
| 264 ExecuteScriptAndGetDoubleResult(_)).Times(2); | 276 ExecuteScriptAndGetDoubleResult(_)).Times(2); |
| 265 | 277 |
| 266 translate_helper_->TranslatePage("en", "fr", std::string()); | 278 translate_helper_->TranslatePage("en", "fr", std::string()); |
| 267 base::RunLoop().RunUntilIdle(); | 279 base::RunLoop().RunUntilIdle(); |
| 268 | 280 |
| 269 translate::TranslateErrors::Type error; | 281 translate::TranslateErrors::Type error; |
| 270 ASSERT_TRUE(translate_helper_->GetPageTranslatedResult(NULL, NULL, &error)); | 282 ASSERT_TRUE(translate_helper_->GetPageTranslatedResult(NULL, NULL, &error)); |
| 271 EXPECT_EQ(translate::TranslateErrors::TRANSLATION_ERROR, error); | 283 EXPECT_EQ(translate::TranslateErrors::TRANSLATION_ERROR, error); |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 | 510 |
| 499 GoBack(GURL("data:text/html;charset=utf-8,<html><head>" | 511 GoBack(GURL("data:text/html;charset=utf-8,<html><head>" |
| 500 "<meta http-equiv=\"content-language\" content=\"zh\">" | 512 "<meta http-equiv=\"content-language\" content=\"zh\">" |
| 501 "</head><body>This page is in Chinese.</body></html>"), | 513 "</head><body>This page is in Chinese.</body></html>"), |
| 502 back_state); | 514 back_state); |
| 503 | 515 |
| 504 base::RunLoop().RunUntilIdle(); | 516 base::RunLoop().RunUntilIdle(); |
| 505 ASSERT_TRUE(fake_translate_driver_.called_new_page_); | 517 ASSERT_TRUE(fake_translate_driver_.called_new_page_); |
| 506 EXPECT_EQ("zh", fake_translate_driver_.details_->adopted_language); | 518 EXPECT_EQ("zh", fake_translate_driver_.details_->adopted_language); |
| 507 } | 519 } |
| OLD | NEW |