| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/android/contextualsearch/contextual_search_delegate.h" | 5 #include "chrome/browser/android/contextualsearch/contextual_search_delegate.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/values.h" |
| 10 #include "chrome/browser/android/contextualsearch/contextual_search_context.h" | 11 #include "chrome/browser/android/contextualsearch/contextual_search_context.h" |
| 11 #include "components/search_engines/template_url_service.h" | 12 #include "components/search_engines/template_url_service.h" |
| 12 #include "net/url_request/test_url_fetcher_factory.h" | 13 #include "net/url_request/test_url_fetcher_factory.h" |
| 13 #include "net/url_request/url_request_test_util.h" | 14 #include "net/url_request/url_request_test_util.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 16 |
| 17 using base::ListValue; |
| 18 |
| 16 namespace { | 19 namespace { |
| 17 | 20 |
| 18 const char kSomeSpecificBasePage[] = "http://some.specific.host.name.com"; | 21 const char kSomeSpecificBasePage[] = "http://some.specific.host.name.com"; |
| 19 | 22 |
| 20 } // namespace | 23 } // namespace |
| 21 | 24 |
| 22 class ContextualSearchDelegateTest : public testing::Test { | 25 class ContextualSearchDelegateTest : public testing::Test { |
| 23 public: | 26 public: |
| 24 ContextualSearchDelegateTest() {} | 27 ContextualSearchDelegateTest() {} |
| 25 ~ContextualSearchDelegateTest() override {} | 28 ~ContextualSearchDelegateTest() override {} |
| (...skipping 30 matching lines...) Expand all Loading... |
| 56 "{google:contextualSearchVersion}{google:contextualSearchContextData}"; | 59 "{google:contextualSearchVersion}{google:contextualSearchContextData}"; |
| 57 TemplateURL* template_url = new TemplateURL(data); | 60 TemplateURL* template_url = new TemplateURL(data); |
| 58 // Takes ownership of |template_url|. | 61 // Takes ownership of |template_url|. |
| 59 TemplateURLService* template_url_service = new TemplateURLService(NULL, 0); | 62 TemplateURLService* template_url_service = new TemplateURLService(NULL, 0); |
| 60 template_url_service->Add(template_url); | 63 template_url_service->Add(template_url); |
| 61 template_url_service->SetUserSelectedDefaultSearchProvider(template_url); | 64 template_url_service->SetUserSelectedDefaultSearchProvider(template_url); |
| 62 return template_url_service; | 65 return template_url_service; |
| 63 } | 66 } |
| 64 | 67 |
| 65 void CreateDefaultSearchContextAndRequestSearchTerm() { | 68 void CreateDefaultSearchContextAndRequestSearchTerm() { |
| 69 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 70 CreateSearchContextAndRequestSearchTerm("Barack Obama", surrounding, 0, 6); |
| 71 } |
| 72 |
| 73 void CreateSearchContextAndRequestSearchTerm( |
| 74 const std::string& selected_text, |
| 75 const base::string16& surrounding_text, |
| 76 int start_offset, |
| 77 int end_offset) { |
| 66 test_context_ = new ContextualSearchContext( | 78 test_context_ = new ContextualSearchContext( |
| 67 "Barack Obama", true, GURL(kSomeSpecificBasePage), "utf-8"); | 79 selected_text, true, GURL(kSomeSpecificBasePage), "utf-8"); |
| 68 // ContextualSearchDelegate class takes ownership of the context. | 80 // ContextualSearchDelegate class takes ownership of the context. |
| 69 delegate_->set_context_for_testing(test_context_); | 81 delegate_->set_context_for_testing(test_context_); |
| 70 RequestSearchTerm(); | 82 |
| 83 test_context_->start_offset = start_offset; |
| 84 test_context_->end_offset = end_offset; |
| 85 test_context_->surrounding_text = surrounding_text; |
| 86 delegate_->ContinueSearchTermResolutionRequest(); |
| 87 fetcher_ = test_factory_.GetFetcherByID( |
| 88 ContextualSearchDelegate::kContextualSearchURLFetcherID); |
| 89 ASSERT_TRUE(fetcher_); |
| 90 ASSERT_TRUE(fetcher()); |
| 91 } |
| 92 |
| 93 void SetResponseStringAndFetch(const std::string& selected_text, |
| 94 const std::string& mentions_start, |
| 95 const std::string& mentions_end) { |
| 96 fetcher()->set_response_code(200); |
| 97 fetcher()->SetResponseString( |
| 98 ")]}'\n" |
| 99 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," |
| 100 "\"info_text\":\"44th U.S. President\"," |
| 101 "\"display_text\":\"Barack Obama\"," |
| 102 "\"mentions\":[" + mentions_start + ","+ mentions_end + "]," |
| 103 "\"selected_text\":\"" + selected_text + "\"," |
| 104 "\"resolved_term\":\"barack obama\"}"); |
| 105 fetcher()->delegate()->OnURLFetchComplete(fetcher()); |
| 71 } | 106 } |
| 72 | 107 |
| 73 void SetSurroundingContext(const base::string16& surrounding_text, | 108 void SetSurroundingContext(const base::string16& surrounding_text, |
| 74 int start_offset, | 109 int start_offset, |
| 75 int end_offset) { | 110 int end_offset) { |
| 76 test_context_ = new ContextualSearchContext( | 111 test_context_ = new ContextualSearchContext( |
| 77 "Bogus", true, GURL(kSomeSpecificBasePage), "utf-8"); | 112 "Bogus", true, GURL(kSomeSpecificBasePage), "utf-8"); |
| 78 test_context_->surrounding_text = surrounding_text; | 113 test_context_->surrounding_text = surrounding_text; |
| 79 test_context_->start_offset = start_offset; | 114 test_context_->start_offset = start_offset; |
| 80 test_context_->end_offset = end_offset; | 115 test_context_->end_offset = end_offset; |
| 81 // ContextualSearchDelegate class takes ownership of the context. | 116 // ContextualSearchDelegate class takes ownership of the context. |
| 82 delegate_->set_context_for_testing(test_context_); | 117 delegate_->set_context_for_testing(test_context_); |
| 83 } | 118 } |
| 84 | 119 |
| 85 void RequestSearchTerm() { | |
| 86 test_context_->start_offset = 0; | |
| 87 test_context_->end_offset = 6; | |
| 88 test_context_->surrounding_text = | |
| 89 base::UTF8ToUTF16("Barack Obama just spoke."); | |
| 90 delegate_->ContinueSearchTermResolutionRequest(); | |
| 91 fetcher_ = test_factory_.GetFetcherByID( | |
| 92 ContextualSearchDelegate::kContextualSearchURLFetcherID); | |
| 93 ASSERT_TRUE(fetcher_); | |
| 94 ASSERT_TRUE(fetcher()); | |
| 95 } | |
| 96 | |
| 97 bool DoesRequestContainOurSpecificBasePage() { | 120 bool DoesRequestContainOurSpecificBasePage() { |
| 98 return fetcher()->GetOriginalURL().spec().find( | 121 return fetcher()->GetOriginalURL().spec().find( |
| 99 specific_base_page_URL_escaped()) != std::string::npos; | 122 specific_base_page_URL_escaped()) != std::string::npos; |
| 100 } | 123 } |
| 101 | 124 |
| 102 std::string specific_base_page_URL_escaped() { | 125 std::string specific_base_page_URL_escaped() { |
| 103 return net::EscapeQueryParamValue(kSomeSpecificBasePage, true); | 126 return net::EscapeQueryParamValue(kSomeSpecificBasePage, true); |
| 104 } | 127 } |
| 105 | 128 |
| 106 net::TestURLFetcher* fetcher() { return fetcher_; } | 129 net::TestURLFetcher* fetcher() { return fetcher_; } |
| 107 bool is_invalid() { return is_invalid_; } | 130 bool is_invalid() { return is_invalid_; } |
| 108 int response_code() { return response_code_; } | 131 int response_code() { return response_code_; } |
| 109 std::string search_term() { return search_term_; } | 132 std::string search_term() { return search_term_; } |
| 110 std::string display_text() { return display_text_; } | 133 std::string display_text() { return display_text_; } |
| 111 std::string alternate_term() { return alternate_term_; } | 134 std::string alternate_term() { return alternate_term_; } |
| 112 bool do_prevent_preload() { return prevent_preload_; } | 135 bool do_prevent_preload() { return prevent_preload_; } |
| 113 std::string before_text() { return before_text_; } | 136 std::string before_text() { return before_text_; } |
| 114 std::string after_text() { return after_text_; } | 137 std::string after_text() { return after_text_; } |
| 138 int start_adjust() { return start_adjust_; } |
| 139 int end_adjust() { return end_adjust_; } |
| 115 | 140 |
| 116 // The delegate under test. | 141 // The delegate under test. |
| 117 scoped_ptr<ContextualSearchDelegate> delegate_; | 142 scoped_ptr<ContextualSearchDelegate> delegate_; |
| 118 | 143 |
| 119 private: | 144 private: |
| 120 void recordSearchTermResolutionResponse(bool is_invalid, | 145 void recordSearchTermResolutionResponse(bool is_invalid, |
| 121 int response_code, | 146 int response_code, |
| 122 const std::string& search_term, | 147 const std::string& search_term, |
| 123 const std::string& display_text, | 148 const std::string& display_text, |
| 124 const std::string& alternate_term, | 149 const std::string& alternate_term, |
| 125 bool prevent_preload) { | 150 bool prevent_preload, |
| 151 int start_adjust, |
| 152 int end_adjust) { |
| 126 is_invalid_ = is_invalid; | 153 is_invalid_ = is_invalid; |
| 127 response_code_ = response_code; | 154 response_code_ = response_code; |
| 128 search_term_ = search_term; | 155 search_term_ = search_term; |
| 129 display_text_ = display_text; | 156 display_text_ = display_text; |
| 130 alternate_term_ = alternate_term; | 157 alternate_term_ = alternate_term; |
| 131 prevent_preload_ = prevent_preload; | 158 prevent_preload_ = prevent_preload; |
| 159 start_adjust_ = start_adjust; |
| 160 end_adjust_ = end_adjust; |
| 132 } | 161 } |
| 133 | 162 |
| 134 void recordSurroundingText(const std::string& before_text, | 163 void recordSurroundingText(const std::string& before_text, |
| 135 const std::string& after_text) { | 164 const std::string& after_text) { |
| 136 before_text_ = before_text; | 165 before_text_ = before_text; |
| 137 after_text_ = after_text; | 166 after_text_ = after_text; |
| 138 } | 167 } |
| 139 | 168 |
| 140 void recordIcingSelectionAvailable(const std::string& encoding, | 169 void recordIcingSelectionAvailable(const std::string& encoding, |
| 141 const base::string16& surrounding_text, | 170 const base::string16& surrounding_text, |
| 142 size_t start_offset, | 171 size_t start_offset, |
| 143 size_t end_offset) { | 172 size_t end_offset) { |
| 144 // unused. | 173 // unused. |
| 145 } | 174 } |
| 146 | 175 |
| 147 bool is_invalid_; | 176 bool is_invalid_; |
| 148 int response_code_; | 177 int response_code_; |
| 149 std::string search_term_; | 178 std::string search_term_; |
| 150 std::string display_text_; | 179 std::string display_text_; |
| 151 std::string alternate_term_; | 180 std::string alternate_term_; |
| 152 bool prevent_preload_; | 181 bool prevent_preload_; |
| 182 int start_adjust_; |
| 183 int end_adjust_; |
| 153 std::string before_text_; | 184 std::string before_text_; |
| 154 std::string after_text_; | 185 std::string after_text_; |
| 155 | 186 |
| 156 base::MessageLoopForIO io_message_loop_; | 187 base::MessageLoopForIO io_message_loop_; |
| 157 net::TestURLFetcherFactory test_factory_; | 188 net::TestURLFetcherFactory test_factory_; |
| 158 net::TestURLFetcher* fetcher_; | 189 net::TestURLFetcher* fetcher_; |
| 159 scoped_ptr<TemplateURLService> template_url_service_; | 190 scoped_ptr<TemplateURLService> template_url_service_; |
| 160 scoped_refptr<net::TestURLRequestContextGetter> request_context_; | 191 scoped_refptr<net::TestURLRequestContextGetter> request_context_; |
| 161 | 192 |
| 162 // Will be owned by the delegate. | 193 // Will be owned by the delegate. |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 | 281 |
| 251 TEST_F(ContextualSearchDelegateTest, InvalidResponse) { | 282 TEST_F(ContextualSearchDelegateTest, InvalidResponse) { |
| 252 CreateDefaultSearchContextAndRequestSearchTerm(); | 283 CreateDefaultSearchContextAndRequestSearchTerm(); |
| 253 fetcher()->set_response_code(net::URLFetcher::RESPONSE_CODE_INVALID); | 284 fetcher()->set_response_code(net::URLFetcher::RESPONSE_CODE_INVALID); |
| 254 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | 285 fetcher()->delegate()->OnURLFetchComplete(fetcher()); |
| 255 | 286 |
| 256 EXPECT_FALSE(do_prevent_preload()); | 287 EXPECT_FALSE(do_prevent_preload()); |
| 257 EXPECT_TRUE(is_invalid()); | 288 EXPECT_TRUE(is_invalid()); |
| 258 } | 289 } |
| 259 | 290 |
| 291 TEST_F(ContextualSearchDelegateTest, ExpandSelectionToEnd) { |
| 292 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 293 std::string selected_text = "Barack"; |
| 294 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 6); |
| 295 SetResponseStringAndFetch(selected_text, "0", "12"); |
| 296 |
| 297 EXPECT_EQ(0, start_adjust()); |
| 298 EXPECT_EQ(6, end_adjust()); |
| 299 } |
| 300 |
| 301 TEST_F(ContextualSearchDelegateTest, ExpandSelectionToStart) { |
| 302 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 303 std::string selected_text = "Obama"; |
| 304 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 7, 12); |
| 305 SetResponseStringAndFetch(selected_text, "0", "12"); |
| 306 |
| 307 EXPECT_EQ(-7, start_adjust()); |
| 308 EXPECT_EQ(0, end_adjust()); |
| 309 } |
| 310 |
| 311 TEST_F(ContextualSearchDelegateTest, ExpandSelectionBothDirections) { |
| 312 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 313 std::string selected_text = "Ob"; |
| 314 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 7, 9); |
| 315 SetResponseStringAndFetch(selected_text, "0", "12"); |
| 316 |
| 317 EXPECT_EQ(-7, start_adjust()); |
| 318 EXPECT_EQ(3, end_adjust()); |
| 319 } |
| 320 |
| 321 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidRange) { |
| 322 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 323 std::string selected_text = "Ob"; |
| 324 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 7, 9); |
| 325 SetResponseStringAndFetch(selected_text, "0", "200"); |
| 326 |
| 327 EXPECT_EQ(0, start_adjust()); |
| 328 EXPECT_EQ(0, end_adjust()); |
| 329 } |
| 330 |
| 331 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidDistantStart) { |
| 332 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 333 std::string selected_text = "Ob"; |
| 334 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, |
| 335 0xffffffff, 0xffffffff - 2); |
| 336 SetResponseStringAndFetch(selected_text, "0", "12"); |
| 337 |
| 338 EXPECT_EQ(0, start_adjust()); |
| 339 EXPECT_EQ(0, end_adjust()); |
| 340 } |
| 341 |
| 342 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidNoOverlap) { |
| 343 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 344 std::string selected_text = "Ob"; |
| 345 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 12); |
| 346 SetResponseStringAndFetch(selected_text, "12", "14"); |
| 347 |
| 348 EXPECT_EQ(0, start_adjust()); |
| 349 EXPECT_EQ(0, end_adjust()); |
| 350 } |
| 351 |
| 352 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidDistantEndAndRange) { |
| 353 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 354 std::string selected_text = "Ob"; |
| 355 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, |
| 356 0xffffffff, 0xffffffff - 2); |
| 357 SetResponseStringAndFetch(selected_text, "0", "268435455"); |
| 358 |
| 359 EXPECT_EQ(0, start_adjust()); |
| 360 EXPECT_EQ(0, end_adjust()); |
| 361 } |
| 362 |
| 363 TEST_F(ContextualSearchDelegateTest, ExpandSelectionLargeNumbers) { |
| 364 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 365 std::string selected_text = "Ob"; |
| 366 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, |
| 367 268435450, 268435455); |
| 368 SetResponseStringAndFetch(selected_text, "268435440", "268435455"); |
| 369 |
| 370 EXPECT_EQ(-10, start_adjust()); |
| 371 EXPECT_EQ(0, end_adjust()); |
| 372 } |
| 373 |
| 374 TEST_F(ContextualSearchDelegateTest, ContractSelectionValid) { |
| 375 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 376 std::string selected_text = "Barack Obama just"; |
| 377 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 17); |
| 378 SetResponseStringAndFetch(selected_text, "0", "12"); |
| 379 |
| 380 EXPECT_EQ(0, start_adjust()); |
| 381 EXPECT_EQ(-5, end_adjust()); |
| 382 } |
| 383 |
| 384 TEST_F(ContextualSearchDelegateTest, ContractSelectionInvalid) { |
| 385 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); |
| 386 std::string selected_text = "Barack Obama just"; |
| 387 CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 17); |
| 388 SetResponseStringAndFetch(selected_text, "5", "5"); |
| 389 |
| 390 EXPECT_EQ(0, start_adjust()); |
| 391 EXPECT_EQ(0, end_adjust()); |
| 392 } |
| 393 |
| 260 TEST_F(ContextualSearchDelegateTest, SurroundingTextHighMaximum) { | 394 TEST_F(ContextualSearchDelegateTest, SurroundingTextHighMaximum) { |
| 261 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); | 395 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); |
| 262 SetSurroundingContext(surrounding, 6, 11); | 396 SetSurroundingContext(surrounding, 6, 11); |
| 263 delegate_->SendSurroundingText(30); // High maximum # of surrounding chars. | 397 delegate_->SendSurroundingText(30); // High maximum # of surrounding chars. |
| 264 EXPECT_EQ("aa bb", before_text()); | 398 EXPECT_EQ("aa bb", before_text()); |
| 265 EXPECT_EQ("dd ee", after_text()); | 399 EXPECT_EQ("dd ee", after_text()); |
| 266 } | 400 } |
| 267 | 401 |
| 268 TEST_F(ContextualSearchDelegateTest, SurroundingTextLowMaximum) { | 402 TEST_F(ContextualSearchDelegateTest, SurroundingTextLowMaximum) { |
| 269 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); | 403 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); |
| 270 SetSurroundingContext(surrounding, 6, 11); | 404 SetSurroundingContext(surrounding, 6, 11); |
| 271 delegate_->SendSurroundingText(3); // Low maximum # of surrounding chars. | 405 delegate_->SendSurroundingText(3); // Low maximum # of surrounding chars. |
| 272 // Whitespaces are trimmed. | 406 // Whitespaces are trimmed. |
| 273 EXPECT_EQ("bb", before_text()); | 407 EXPECT_EQ("bb", before_text()); |
| 274 EXPECT_EQ("dd", after_text()); | 408 EXPECT_EQ("dd", after_text()); |
| 275 } | 409 } |
| 276 | 410 |
| 277 TEST_F(ContextualSearchDelegateTest, SurroundingTextNoBeforeText) { | 411 TEST_F(ContextualSearchDelegateTest, SurroundingTextNoBeforeText) { |
| 278 base::string16 surrounding = base::ASCIIToUTF16("Bogus ee ff gg"); | 412 base::string16 surrounding = base::ASCIIToUTF16("Bogus ee ff gg"); |
| 279 SetSurroundingContext(surrounding, 0, 5); | 413 SetSurroundingContext(surrounding, 0, 5); |
| 280 delegate_->SendSurroundingText(5); | 414 delegate_->SendSurroundingText(5); |
| 281 EXPECT_EQ("", before_text()); | 415 EXPECT_EQ("", before_text()); |
| 282 EXPECT_EQ("ee f", after_text()); | 416 EXPECT_EQ("ee f", after_text()); |
| 283 } | 417 } |
| 284 | 418 |
| 419 TEST_F(ContextualSearchDelegateTest, ExtractMentionsStartEnd) { |
| 420 ListValue mentions_list; |
| 421 mentions_list.AppendInteger(1); |
| 422 mentions_list.AppendInteger(2); |
| 423 int start = 0; |
| 424 int end = 0; |
| 425 delegate_->ExtractMentionsStartEnd(mentions_list, &start, &end); |
| 426 EXPECT_EQ(1, start); |
| 427 EXPECT_EQ(2, end); |
| 428 } |
| 429 |
| 285 TEST_F(ContextualSearchDelegateTest, SurroundingTextForIcing) { | 430 TEST_F(ContextualSearchDelegateTest, SurroundingTextForIcing) { |
| 286 base::string16 sample = base::ASCIIToUTF16("this is Barack Obama in office."); | 431 base::string16 sample = base::ASCIIToUTF16("this is Barack Obama in office."); |
| 287 int limit_each_side = 3; | 432 int limit_each_side = 3; |
| 288 size_t start = 8; | 433 size_t start = 8; |
| 289 size_t end = 20; | 434 size_t end = 20; |
| 290 base::string16 result = | 435 base::string16 result = |
| 291 delegate_->SurroundingTextForIcing(sample, limit_each_side, &start, &end); | 436 delegate_->SurroundingTextForIcing(sample, limit_each_side, &start, &end); |
| 292 EXPECT_EQ(static_cast<size_t>(3), start); | 437 EXPECT_EQ(static_cast<size_t>(3), start); |
| 293 EXPECT_EQ(static_cast<size_t>(15), end); | 438 EXPECT_EQ(static_cast<size_t>(15), end); |
| 294 EXPECT_EQ(base::ASCIIToUTF16("is Barack Obama in"), result); | 439 EXPECT_EQ(base::ASCIIToUTF16("is Barack Obama in"), result); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 310 std::string json_with_escape = | 455 std::string json_with_escape = |
| 311 ")]}'\n" | 456 ")]}'\n" |
| 312 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," | 457 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," |
| 313 "\"info_text\":\"44th U.S. President\"," | 458 "\"info_text\":\"44th U.S. President\"," |
| 314 "\"display_text\":\"Barack Obama\", \"mentions\":[0,15]," | 459 "\"display_text\":\"Barack Obama\", \"mentions\":[0,15]," |
| 315 "\"selected_text\":\"obama\", \"resolved_term\":\"barack obama\"}"; | 460 "\"selected_text\":\"obama\", \"resolved_term\":\"barack obama\"}"; |
| 316 std::string search_term; | 461 std::string search_term; |
| 317 std::string display_text; | 462 std::string display_text; |
| 318 std::string alternate_term; | 463 std::string alternate_term; |
| 319 std::string prevent_preload; | 464 std::string prevent_preload; |
| 465 int mention_start; |
| 466 int mention_end; |
| 320 delegate_->DecodeSearchTermsFromJsonResponse(json_with_escape, &search_term, | 467 delegate_->DecodeSearchTermsFromJsonResponse(json_with_escape, &search_term, |
| 321 &display_text, &alternate_term, | 468 &display_text, &alternate_term, |
| 322 &prevent_preload); | 469 &prevent_preload, &mention_start, |
| 470 &mention_end); |
| 323 EXPECT_EQ("obama", search_term); | 471 EXPECT_EQ("obama", search_term); |
| 324 EXPECT_EQ("Barack Obama", display_text); | 472 EXPECT_EQ("Barack Obama", display_text); |
| 325 EXPECT_EQ("barack obama", alternate_term); | 473 EXPECT_EQ("barack obama", alternate_term); |
| 326 EXPECT_EQ("", prevent_preload); | 474 EXPECT_EQ("", prevent_preload); |
| 327 } | 475 } |
| OLD | NEW |