Chromium Code Reviews| 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()); | |
| 71 } | 91 } |
| 72 | 92 |
| 73 void SetSurroundingContext(const base::string16& surrounding_text, | 93 void SetSurroundingContext(const base::string16& surrounding_text, |
| 74 int start_offset, | 94 int start_offset, |
| 75 int end_offset) { | 95 int end_offset) { |
| 76 test_context_ = new ContextualSearchContext( | 96 test_context_ = new ContextualSearchContext( |
| 77 "Bogus", true, GURL(kSomeSpecificBasePage), "utf-8"); | 97 "Bogus", true, GURL(kSomeSpecificBasePage), "utf-8"); |
| 78 test_context_->surrounding_text = surrounding_text; | 98 test_context_->surrounding_text = surrounding_text; |
| 79 test_context_->start_offset = start_offset; | 99 test_context_->start_offset = start_offset; |
| 80 test_context_->end_offset = end_offset; | 100 test_context_->end_offset = end_offset; |
| 81 // ContextualSearchDelegate class takes ownership of the context. | 101 // ContextualSearchDelegate class takes ownership of the context. |
| 82 delegate_->set_context_for_testing(test_context_); | 102 delegate_->set_context_for_testing(test_context_); |
| 83 } | 103 } |
| 84 | 104 |
| 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() { | 105 bool DoesRequestContainOurSpecificBasePage() { |
| 98 return fetcher()->GetOriginalURL().spec().find( | 106 return fetcher()->GetOriginalURL().spec().find( |
| 99 specific_base_page_URL_escaped()) != std::string::npos; | 107 specific_base_page_URL_escaped()) != std::string::npos; |
| 100 } | 108 } |
| 101 | 109 |
| 102 std::string specific_base_page_URL_escaped() { | 110 std::string specific_base_page_URL_escaped() { |
| 103 return net::EscapeQueryParamValue(kSomeSpecificBasePage, true); | 111 return net::EscapeQueryParamValue(kSomeSpecificBasePage, true); |
| 104 } | 112 } |
| 105 | 113 |
| 106 net::TestURLFetcher* fetcher() { return fetcher_; } | 114 net::TestURLFetcher* fetcher() { return fetcher_; } |
| 107 bool is_invalid() { return is_invalid_; } | 115 bool is_invalid() { return is_invalid_; } |
| 108 int response_code() { return response_code_; } | 116 int response_code() { return response_code_; } |
| 109 std::string search_term() { return search_term_; } | 117 std::string search_term() { return search_term_; } |
| 110 std::string display_text() { return display_text_; } | 118 std::string display_text() { return display_text_; } |
| 111 std::string alternate_term() { return alternate_term_; } | 119 std::string alternate_term() { return alternate_term_; } |
| 112 bool do_prevent_preload() { return prevent_preload_; } | 120 bool do_prevent_preload() { return prevent_preload_; } |
| 113 std::string before_text() { return before_text_; } | 121 std::string before_text() { return before_text_; } |
| 114 std::string after_text() { return after_text_; } | 122 std::string after_text() { return after_text_; } |
| 123 int start_adjust() { return start_adjust_; } | |
| 124 int end_adjust() { return end_adjust_; } | |
| 115 | 125 |
| 116 // The delegate under test. | 126 // The delegate under test. |
| 117 scoped_ptr<ContextualSearchDelegate> delegate_; | 127 scoped_ptr<ContextualSearchDelegate> delegate_; |
| 118 | 128 |
| 119 private: | 129 private: |
| 120 void recordSearchTermResolutionResponse(bool is_invalid, | 130 void recordSearchTermResolutionResponse(bool is_invalid, |
| 121 int response_code, | 131 int response_code, |
| 122 const std::string& search_term, | 132 const std::string& search_term, |
| 123 const std::string& display_text, | 133 const std::string& display_text, |
| 124 const std::string& alternate_term, | 134 const std::string& alternate_term, |
| 125 bool prevent_preload) { | 135 bool prevent_preload, |
| 136 int start_adjust, | |
| 137 int end_adjust) { | |
| 126 is_invalid_ = is_invalid; | 138 is_invalid_ = is_invalid; |
| 127 response_code_ = response_code; | 139 response_code_ = response_code; |
| 128 search_term_ = search_term; | 140 search_term_ = search_term; |
| 129 display_text_ = display_text; | 141 display_text_ = display_text; |
| 130 alternate_term_ = alternate_term; | 142 alternate_term_ = alternate_term; |
| 131 prevent_preload_ = prevent_preload; | 143 prevent_preload_ = prevent_preload; |
| 144 start_adjust_ = start_adjust; | |
| 145 end_adjust_ = end_adjust; | |
| 132 } | 146 } |
| 133 | 147 |
| 134 void recordSurroundingText(const std::string& before_text, | 148 void recordSurroundingText(const std::string& before_text, |
| 135 const std::string& after_text) { | 149 const std::string& after_text) { |
| 136 before_text_ = before_text; | 150 before_text_ = before_text; |
| 137 after_text_ = after_text; | 151 after_text_ = after_text; |
| 138 } | 152 } |
| 139 | 153 |
| 140 void recordIcingSelectionAvailable(const std::string& encoding, | 154 void recordIcingSelectionAvailable(const std::string& encoding, |
| 141 const base::string16& surrounding_text, | 155 const base::string16& surrounding_text, |
| 142 size_t start_offset, | 156 size_t start_offset, |
| 143 size_t end_offset) { | 157 size_t end_offset) { |
| 144 // unused. | 158 // unused. |
| 145 } | 159 } |
| 146 | 160 |
| 147 bool is_invalid_; | 161 bool is_invalid_; |
| 148 int response_code_; | 162 int response_code_; |
| 149 std::string search_term_; | 163 std::string search_term_; |
| 150 std::string display_text_; | 164 std::string display_text_; |
| 151 std::string alternate_term_; | 165 std::string alternate_term_; |
| 152 bool prevent_preload_; | 166 bool prevent_preload_; |
| 167 int start_adjust_; | |
| 168 int end_adjust_; | |
| 153 std::string before_text_; | 169 std::string before_text_; |
| 154 std::string after_text_; | 170 std::string after_text_; |
| 155 | 171 |
| 156 base::MessageLoopForIO io_message_loop_; | 172 base::MessageLoopForIO io_message_loop_; |
| 157 net::TestURLFetcherFactory test_factory_; | 173 net::TestURLFetcherFactory test_factory_; |
| 158 net::TestURLFetcher* fetcher_; | 174 net::TestURLFetcher* fetcher_; |
| 159 scoped_ptr<TemplateURLService> template_url_service_; | 175 scoped_ptr<TemplateURLService> template_url_service_; |
| 160 scoped_refptr<net::TestURLRequestContextGetter> request_context_; | 176 scoped_refptr<net::TestURLRequestContextGetter> request_context_; |
| 161 | 177 |
| 162 // Will be owned by the delegate. | 178 // Will be owned by the delegate. |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 250 | 266 |
| 251 TEST_F(ContextualSearchDelegateTest, InvalidResponse) { | 267 TEST_F(ContextualSearchDelegateTest, InvalidResponse) { |
| 252 CreateDefaultSearchContextAndRequestSearchTerm(); | 268 CreateDefaultSearchContextAndRequestSearchTerm(); |
| 253 fetcher()->set_response_code(net::URLFetcher::RESPONSE_CODE_INVALID); | 269 fetcher()->set_response_code(net::URLFetcher::RESPONSE_CODE_INVALID); |
| 254 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | 270 fetcher()->delegate()->OnURLFetchComplete(fetcher()); |
| 255 | 271 |
| 256 EXPECT_FALSE(do_prevent_preload()); | 272 EXPECT_FALSE(do_prevent_preload()); |
| 257 EXPECT_TRUE(is_invalid()); | 273 EXPECT_TRUE(is_invalid()); |
| 258 } | 274 } |
| 259 | 275 |
| 276 TEST_F(ContextualSearchDelegateTest, ExpandSelectionToEnd) { | |
| 277 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); | |
| 278 CreateSearchContextAndRequestSearchTerm("Barack", surrounding, 0, 6); | |
|
Donn Denman
2015/07/10 17:47:03
Looks like this line is indented too much on all t
palmer
2015/07/10 17:53:38
Nit: Indentation
aurimas (slooooooooow)
2015/07/10 19:06:00
Done
| |
| 279 | |
| 280 fetcher()->set_response_code(200); | |
| 281 fetcher()->SetResponseString( | |
|
Donn Denman
2015/07/10 17:47:03
If all the response strings for these tests are th
aurimas (slooooooooow)
2015/07/10 19:06:00
Done
| |
| 282 ")]}'\n" | |
| 283 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"barack\"," | |
| 284 "\"info_text\":\"44th U.S. President\"," | |
| 285 "\"display_text\":\"Barack Obama\", \"mentions\":[0,12]," | |
| 286 "\"selected_text\":\"barack\", \"resolved_term\":\"barack obama\"}"); | |
| 287 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | |
| 288 | |
| 289 EXPECT_EQ(0, start_adjust()); | |
| 290 EXPECT_EQ(6, end_adjust()); | |
| 291 } | |
| 292 | |
| 293 TEST_F(ContextualSearchDelegateTest, ExpandSelectionToStart) { | |
| 294 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); | |
| 295 CreateSearchContextAndRequestSearchTerm("Obama", surrounding, 7, 12); | |
| 296 | |
| 297 fetcher()->set_response_code(200); | |
| 298 fetcher()->SetResponseString( | |
| 299 ")]}'\n" | |
| 300 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," | |
| 301 "\"info_text\":\"44th U.S. President\"," | |
| 302 "\"display_text\":\"Barack Obama\", \"mentions\":[0,12]," | |
| 303 "\"selected_text\":\"obama\", \"resolved_term\":\"barack obama\"}"); | |
| 304 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | |
| 305 | |
| 306 EXPECT_EQ(-7, start_adjust()); | |
| 307 EXPECT_EQ(0, end_adjust()); | |
| 308 } | |
| 309 | |
| 310 TEST_F(ContextualSearchDelegateTest, ExpandSelectionBothDirections) { | |
| 311 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); | |
| 312 CreateSearchContextAndRequestSearchTerm("Ob", surrounding, 7, 9); | |
| 313 | |
| 314 fetcher()->set_response_code(200); | |
| 315 fetcher()->SetResponseString( | |
| 316 ")]}'\n" | |
| 317 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," | |
| 318 "\"info_text\":\"44th U.S. President\"," | |
| 319 "\"display_text\":\"Barack Obama\", \"mentions\":[0,12]," | |
| 320 "\"selected_text\":\"obama\", \"resolved_term\":\"barack obama\"}"); | |
| 321 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | |
| 322 | |
| 323 EXPECT_EQ(-7, start_adjust()); | |
| 324 EXPECT_EQ(3, end_adjust()); | |
| 325 } | |
| 326 | |
| 327 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalid) { | |
| 328 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); | |
| 329 CreateSearchContextAndRequestSearchTerm("Ob", surrounding, 7, 9); | |
| 330 | |
| 331 fetcher()->set_response_code(200); | |
| 332 fetcher()->SetResponseString( | |
| 333 ")]}'\n" | |
| 334 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," | |
| 335 "\"info_text\":\"44th U.S. President\"," | |
| 336 "\"display_text\":\"Barack Obama\", \"mentions\":[0,200]," | |
| 337 "\"selected_text\":\"obama\", \"resolved_term\":\"barack obama\"}"); | |
| 338 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | |
| 339 | |
| 340 EXPECT_EQ(0, start_adjust()); | |
| 341 EXPECT_EQ(0, end_adjust()); | |
| 342 } | |
| 343 | |
| 344 TEST_F(ContextualSearchDelegateTest, ContractSelectionValid) { | |
| 345 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); | |
| 346 CreateSearchContextAndRequestSearchTerm( | |
| 347 "Barack Obama just", surrounding, 0, 17); | |
| 348 | |
| 349 fetcher()->set_response_code(200); | |
| 350 fetcher()->SetResponseString( | |
| 351 ")]}'\n" | |
| 352 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," | |
| 353 "\"info_text\":\"44th U.S. President\"," | |
| 354 "\"display_text\":\"Barack Obama\", \"mentions\":[0,12]," | |
| 355 "\"selected_text\":\"obama obama just\"," | |
| 356 "\"resolved_term\":\"barack obama\"}"); | |
| 357 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | |
| 358 | |
| 359 EXPECT_EQ(0, start_adjust()); | |
| 360 EXPECT_EQ(-5, end_adjust()); | |
| 361 } | |
| 362 | |
| 363 TEST_F(ContextualSearchDelegateTest, ContractSelectionInvalid) { | |
| 364 base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke."); | |
| 365 CreateSearchContextAndRequestSearchTerm( | |
| 366 "Barack Obama just", surrounding, 0, 17); | |
|
palmer
2015/07/10 17:53:38
What happens if you do crazy things like
Cre
aurimas (slooooooooow)
2015/07/10 19:06:00
Added a few more cases.
| |
| 367 | |
| 368 fetcher()->set_response_code(200); | |
| 369 fetcher()->SetResponseString( | |
| 370 ")]}'\n" | |
| 371 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," | |
| 372 "\"info_text\":\"44th U.S. President\"," | |
| 373 "\"display_text\":\"Barack Obama\", \"mentions\":[5,5]," | |
| 374 "\"selected_text\":\"obama obama just\"," | |
| 375 "\"resolved_term\":\"barack obama\"}"); | |
| 376 fetcher()->delegate()->OnURLFetchComplete(fetcher()); | |
| 377 | |
| 378 EXPECT_EQ(0, start_adjust()); | |
| 379 EXPECT_EQ(0, end_adjust()); | |
| 380 } | |
| 381 | |
| 260 TEST_F(ContextualSearchDelegateTest, SurroundingTextHighMaximum) { | 382 TEST_F(ContextualSearchDelegateTest, SurroundingTextHighMaximum) { |
| 261 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); | 383 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); |
| 262 SetSurroundingContext(surrounding, 6, 11); | 384 SetSurroundingContext(surrounding, 6, 11); |
| 263 delegate_->SendSurroundingText(30); // High maximum # of surrounding chars. | 385 delegate_->SendSurroundingText(30); // High maximum # of surrounding chars. |
| 264 EXPECT_EQ("aa bb", before_text()); | 386 EXPECT_EQ("aa bb", before_text()); |
| 265 EXPECT_EQ("dd ee", after_text()); | 387 EXPECT_EQ("dd ee", after_text()); |
| 266 } | 388 } |
| 267 | 389 |
| 268 TEST_F(ContextualSearchDelegateTest, SurroundingTextLowMaximum) { | 390 TEST_F(ContextualSearchDelegateTest, SurroundingTextLowMaximum) { |
| 269 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); | 391 base::string16 surrounding = base::ASCIIToUTF16("aa bb Bogus dd ee"); |
| 270 SetSurroundingContext(surrounding, 6, 11); | 392 SetSurroundingContext(surrounding, 6, 11); |
| 271 delegate_->SendSurroundingText(3); // Low maximum # of surrounding chars. | 393 delegate_->SendSurroundingText(3); // Low maximum # of surrounding chars. |
| 272 // Whitespaces are trimmed. | 394 // Whitespaces are trimmed. |
| 273 EXPECT_EQ("bb", before_text()); | 395 EXPECT_EQ("bb", before_text()); |
| 274 EXPECT_EQ("dd", after_text()); | 396 EXPECT_EQ("dd", after_text()); |
| 275 } | 397 } |
| 276 | 398 |
| 277 TEST_F(ContextualSearchDelegateTest, SurroundingTextNoBeforeText) { | 399 TEST_F(ContextualSearchDelegateTest, SurroundingTextNoBeforeText) { |
| 278 base::string16 surrounding = base::ASCIIToUTF16("Bogus ee ff gg"); | 400 base::string16 surrounding = base::ASCIIToUTF16("Bogus ee ff gg"); |
| 279 SetSurroundingContext(surrounding, 0, 5); | 401 SetSurroundingContext(surrounding, 0, 5); |
| 280 delegate_->SendSurroundingText(5); | 402 delegate_->SendSurroundingText(5); |
| 281 EXPECT_EQ("", before_text()); | 403 EXPECT_EQ("", before_text()); |
| 282 EXPECT_EQ("ee f", after_text()); | 404 EXPECT_EQ("ee f", after_text()); |
| 283 } | 405 } |
| 284 | 406 |
| 407 TEST_F(ContextualSearchDelegateTest, ExtractMentionsStartEnd) { | |
| 408 ListValue mentions_list; | |
| 409 mentions_list.AppendInteger(1); | |
| 410 mentions_list.AppendInteger(2); | |
| 411 int start = 0; | |
| 412 int end = 0; | |
| 413 delegate_->ExtractMentionsStartEnd(mentions_list, &start, &end); | |
| 414 EXPECT_EQ(1, start); | |
| 415 EXPECT_EQ(2, end); | |
| 416 } | |
| 417 | |
| 285 TEST_F(ContextualSearchDelegateTest, SurroundingTextForIcing) { | 418 TEST_F(ContextualSearchDelegateTest, SurroundingTextForIcing) { |
| 286 base::string16 sample = base::ASCIIToUTF16("this is Barack Obama in office."); | 419 base::string16 sample = base::ASCIIToUTF16("this is Barack Obama in office."); |
| 287 int limit_each_side = 3; | 420 int limit_each_side = 3; |
| 288 size_t start = 8; | 421 size_t start = 8; |
| 289 size_t end = 20; | 422 size_t end = 20; |
| 290 base::string16 result = | 423 base::string16 result = |
| 291 delegate_->SurroundingTextForIcing(sample, limit_each_side, &start, &end); | 424 delegate_->SurroundingTextForIcing(sample, limit_each_side, &start, &end); |
| 292 EXPECT_EQ(static_cast<size_t>(3), start); | 425 EXPECT_EQ(static_cast<size_t>(3), start); |
| 293 EXPECT_EQ(static_cast<size_t>(15), end); | 426 EXPECT_EQ(static_cast<size_t>(15), end); |
| 294 EXPECT_EQ(base::ASCIIToUTF16("is Barack Obama in"), result); | 427 EXPECT_EQ(base::ASCIIToUTF16("is Barack Obama in"), result); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 310 std::string json_with_escape = | 443 std::string json_with_escape = |
| 311 ")]}'\n" | 444 ")]}'\n" |
| 312 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," | 445 "{\"mid\":\"/m/02mjmr\", \"search_term\":\"obama\"," |
| 313 "\"info_text\":\"44th U.S. President\"," | 446 "\"info_text\":\"44th U.S. President\"," |
| 314 "\"display_text\":\"Barack Obama\", \"mentions\":[0,15]," | 447 "\"display_text\":\"Barack Obama\", \"mentions\":[0,15]," |
| 315 "\"selected_text\":\"obama\", \"resolved_term\":\"barack obama\"}"; | 448 "\"selected_text\":\"obama\", \"resolved_term\":\"barack obama\"}"; |
| 316 std::string search_term; | 449 std::string search_term; |
| 317 std::string display_text; | 450 std::string display_text; |
| 318 std::string alternate_term; | 451 std::string alternate_term; |
| 319 std::string prevent_preload; | 452 std::string prevent_preload; |
| 453 int mention_start; | |
| 454 int mention_end; | |
| 320 delegate_->DecodeSearchTermsFromJsonResponse(json_with_escape, &search_term, | 455 delegate_->DecodeSearchTermsFromJsonResponse(json_with_escape, &search_term, |
| 321 &display_text, &alternate_term, | 456 &display_text, &alternate_term, |
| 322 &prevent_preload); | 457 &prevent_preload, &mention_start, |
| 458 &mention_end); | |
| 323 EXPECT_EQ("obama", search_term); | 459 EXPECT_EQ("obama", search_term); |
| 324 EXPECT_EQ("Barack Obama", display_text); | 460 EXPECT_EQ("Barack Obama", display_text); |
| 325 EXPECT_EQ("barack obama", alternate_term); | 461 EXPECT_EQ("barack obama", alternate_term); |
| 326 EXPECT_EQ("", prevent_preload); | 462 EXPECT_EQ("", prevent_preload); |
| 327 } | 463 } |
| OLD | NEW |