Chromium Code Reviews| Index: chrome/browser/autocomplete/search_provider_unittest.cc |
| diff --git a/chrome/browser/autocomplete/search_provider_unittest.cc b/chrome/browser/autocomplete/search_provider_unittest.cc |
| index c8a3c117f614dc3866f1606a0127fda94fe0ab45..22b60f892dd591fe7bb42f4f454cb1976a8319ca 100644 |
| --- a/chrome/browser/autocomplete/search_provider_unittest.cc |
| +++ b/chrome/browser/autocomplete/search_provider_unittest.cc |
| @@ -3072,3 +3072,73 @@ TEST_F(SearchProviderTest, CheckDuplicateMatchesSaved) { |
| EXPECT_EQ(0U, match_apricot.duplicate_matches.size()); |
| } |
| + |
| +#if defined(OS_ANDROID) |
| +TEST_F(SearchProviderTest, SuggestQueryUsesToken) { |
| + CommandLine::ForCurrentProcess()->AppendSwitch( |
| + switches::kEnableAnswersInSuggest); |
| + |
| + TemplateURLService* turl_model = |
| + TemplateURLServiceFactory::GetForProfile(&profile_); |
| + |
| + TemplateURLData data; |
| + data.short_name = ASCIIToUTF16("default"); |
| + data.SetKeyword(data.short_name); |
| + data.SetURL("http://example/{searchTerms}{google:sessionToken}"); |
| + data.suggestions_url = |
| + "http://suggest/?q={searchTerms}&{google:sessionToken}"; |
| + default_t_url_ = new TemplateURL(&profile_, data); |
| + turl_model->Add(default_t_url_); |
| + turl_model->SetUserSelectedDefaultSearchProvider(default_t_url_); |
| + |
| + base::string16 term = term1_.substr(0, term1_.length() - 1); |
| + QueryForInput(term, false, false); |
| + |
| + // Make sure the default providers suggest service was queried. |
|
Peter Kasting
2014/05/09 21:35:07
Nit: provider's
groby-ooo-7-16
2014/05/09 22:18:09
Done.
|
| + net::TestURLFetcher* fetcher = test_factory_.GetFetcherByID( |
| + SearchProvider::kDefaultProviderURLFetcherID); |
| + ASSERT_TRUE(fetcher); |
| + |
| + // And the URL matches what we expected. |
| + TemplateURLRef::SearchTermsArgs search_terms_args(term); |
| + search_terms_args.session_token = provider_->current_token_; |
|
Peter Kasting
2014/05/09 21:35:07
Can this use GetSessionToken()? If so, perhaps th
groby-ooo-7-16
2014/05/09 21:50:25
Second test needs access to expiration time, so we
|
| + GURL expected_url(default_t_url_->suggestions_url_ref().ReplaceSearchTerms( |
| + search_terms_args)); |
| + EXPECT_EQ(fetcher->GetOriginalURL().spec(), expected_url.spec()); |
| + |
| + // complete running the fetcher to clean up. |
|
Peter Kasting
2014/05/09 21:35:07
Nit: Capitalize
groby-ooo-7-16
2014/05/09 22:18:09
Done.
|
| + fetcher->set_response_code(200); |
| + fetcher->delegate()->OnURLFetchComplete(fetcher); |
| + RunTillProviderDone(); |
| +} |
| +#endif |
| + |
| +TEST_F(SearchProviderTest, SessionToken) { |
| + const base::TimeDelta small_delta = base::TimeDelta::FromMilliseconds(1); |
|
Peter Kasting
2014/05/09 21:35:07
Nit: Declare this just above first use
groby-ooo-7-16
2014/05/09 22:18:09
Done.
|
| + // Subsequent calls always get the same token. |
| + std::string token = provider_->GetSessionToken(); |
| + std::string token2 = provider_->GetSessionToken(); |
| + EXPECT_EQ(token, token2); |
| + EXPECT_FALSE(token.empty()); |
| + |
| + // Calls do not regenerate a token. |
| + provider_->current_token_ = "PRE-EXISTING TOKEN"; |
| + token = provider_->GetSessionToken(); |
| + EXPECT_EQ(token, "PRE-EXISTING TOKEN"); |
| + |
| + // ... unless the token has expired. |
| + provider_->current_token_ = ""; |
|
Peter Kasting
2014/05/09 21:35:07
Nit: .clear()
groby-ooo-7-16
2014/05/09 22:18:09
Done.
|
| + provider_->token_expiration_time_ = base::Time::Now() - small_delta; |
| + token = provider_->GetSessionToken(); |
| + EXPECT_FALSE(token.empty()); |
| + EXPECT_EQ(token, provider_->current_token_); |
| + |
| + // The expiration time is always updated. |
| + provider_->GetSessionToken(); |
| + base::Time expiration_time_1 = provider_->token_expiration_time_; |
| + base::PlatformThread::Sleep(small_delta); |
| + provider_->GetSessionToken(); |
| + base::Time expiration_time_2 = provider_->token_expiration_time_; |
| + EXPECT_GT(expiration_time_2, expiration_time_1); |
| + EXPECT_GE(expiration_time_2, expiration_time_1 + small_delta); |
| +} |