OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "chrome/browser/autocomplete/search_provider.h" | 5 #include "chrome/browser/autocomplete/search_provider.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 #include "chrome/browser/search_engines/template_url_service.h" | 30 #include "chrome/browser/search_engines/template_url_service.h" |
31 #include "chrome/browser/search_engines/template_url_service_factory.h" | 31 #include "chrome/browser/search_engines/template_url_service_factory.h" |
32 #include "chrome/browser/signin/signin_manager_factory.h" | 32 #include "chrome/browser/signin/signin_manager_factory.h" |
33 #include "chrome/browser/sync/profile_sync_service.h" | 33 #include "chrome/browser/sync/profile_sync_service.h" |
34 #include "chrome/browser/sync/profile_sync_service_factory.h" | 34 #include "chrome/browser/sync/profile_sync_service_factory.h" |
35 #include "chrome/common/chrome_switches.h" | 35 #include "chrome/common/chrome_switches.h" |
36 #include "chrome/common/pref_names.h" | 36 #include "chrome/common/pref_names.h" |
37 #include "chrome/test/base/testing_browser_process.h" | 37 #include "chrome/test/base/testing_browser_process.h" |
38 #include "chrome/test/base/testing_profile.h" | 38 #include "chrome/test/base/testing_profile.h" |
39 #include "components/google/core/browser/google_switches.h" | 39 #include "components/google/core/browser/google_switches.h" |
| 40 #include "components/metrics/proto/omnibox_event.pb.h" |
40 #include "components/search_engines/search_engine_type.h" | 41 #include "components/search_engines/search_engine_type.h" |
41 #include "components/signin/core/browser/signin_manager.h" | 42 #include "components/signin/core/browser/signin_manager.h" |
42 #include "components/sync_driver/pref_names.h" | 43 #include "components/sync_driver/pref_names.h" |
43 #include "components/variations/entropy_provider.h" | 44 #include "components/variations/entropy_provider.h" |
44 #include "components/variations/variations_associated_data.h" | 45 #include "components/variations/variations_associated_data.h" |
45 #include "content/public/test/test_browser_thread_bundle.h" | 46 #include "content/public/test/test_browser_thread_bundle.h" |
46 #include "net/url_request/test_url_fetcher_factory.h" | 47 #include "net/url_request/test_url_fetcher_factory.h" |
47 #include "net/url_request/url_request_status.h" | 48 #include "net/url_request/url_request_status.h" |
48 #include "testing/gtest/include/gtest/gtest.h" | 49 #include "testing/gtest/include/gtest/gtest.h" |
49 | 50 |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 provider_ = NULL; | 291 provider_ = NULL; |
291 } | 292 } |
292 | 293 |
293 void SearchProviderTest::RunTest(TestData* cases, | 294 void SearchProviderTest::RunTest(TestData* cases, |
294 int num_cases, | 295 int num_cases, |
295 bool prefer_keyword) { | 296 bool prefer_keyword) { |
296 ACMatches matches; | 297 ACMatches matches; |
297 for (int i = 0; i < num_cases; ++i) { | 298 for (int i = 0; i < num_cases; ++i) { |
298 AutocompleteInput input(cases[i].input, base::string16::npos, | 299 AutocompleteInput input(cases[i].input, base::string16::npos, |
299 base::string16(), GURL(), | 300 base::string16(), GURL(), |
300 AutocompleteInput::INVALID_SPEC, false, | 301 metrics::OmniboxEventProto::INVALID_SPEC, false, |
301 prefer_keyword, true, true); | 302 prefer_keyword, true, true); |
302 provider_->Start(input, false); | 303 provider_->Start(input, false); |
303 matches = provider_->matches(); | 304 matches = provider_->matches(); |
304 base::string16 diagnostic_details = | 305 base::string16 diagnostic_details = |
305 ASCIIToUTF16("Input was: ") + | 306 ASCIIToUTF16("Input was: ") + |
306 cases[i].input + | 307 cases[i].input + |
307 ASCIIToUTF16("; prefer_keyword was: ") + | 308 ASCIIToUTF16("; prefer_keyword was: ") + |
308 (prefer_keyword ? ASCIIToUTF16("true") : ASCIIToUTF16("false")); | 309 (prefer_keyword ? ASCIIToUTF16("true") : ASCIIToUTF16("false")); |
309 EXPECT_EQ(cases[i].num_results, matches.size()) << diagnostic_details; | 310 EXPECT_EQ(cases[i].num_results, matches.size()) << diagnostic_details; |
310 if (matches.size() == cases[i].num_results) { | 311 if (matches.size() == cases[i].num_results) { |
(...skipping 25 matching lines...) Expand all Loading... |
336 base::RunLoop run_loop; | 337 base::RunLoop run_loop; |
337 run_loop_ = &run_loop; | 338 run_loop_ = &run_loop; |
338 run_loop.Run(); | 339 run_loop.Run(); |
339 } | 340 } |
340 | 341 |
341 void SearchProviderTest::QueryForInput(const base::string16& text, | 342 void SearchProviderTest::QueryForInput(const base::string16& text, |
342 bool prevent_inline_autocomplete, | 343 bool prevent_inline_autocomplete, |
343 bool prefer_keyword) { | 344 bool prefer_keyword) { |
344 // Start a query. | 345 // Start a query. |
345 AutocompleteInput input(text, base::string16::npos, base::string16(), GURL(), | 346 AutocompleteInput input(text, base::string16::npos, base::string16(), GURL(), |
346 AutocompleteInput::INVALID_SPEC, | 347 metrics::OmniboxEventProto::INVALID_SPEC, |
347 prevent_inline_autocomplete, prefer_keyword, true, | 348 prevent_inline_autocomplete, prefer_keyword, true, |
348 true); | 349 true); |
349 provider_->Start(input, false); | 350 provider_->Start(input, false); |
350 | 351 |
351 // RunUntilIdle so that the task scheduled by SearchProvider to create the | 352 // RunUntilIdle so that the task scheduled by SearchProvider to create the |
352 // URLFetchers runs. | 353 // URLFetchers runs. |
353 base::RunLoop().RunUntilIdle(); | 354 base::RunLoop().RunUntilIdle(); |
354 } | 355 } |
355 | 356 |
356 void SearchProviderTest::QueryForInputAndSetWYTMatch( | 357 void SearchProviderTest::QueryForInputAndSetWYTMatch( |
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
875 // results) in the right order and set descriptions for them correctly. | 876 // results) in the right order and set descriptions for them correctly. |
876 TEST_F(SearchProviderTest, KeywordOrderingAndDescriptions) { | 877 TEST_F(SearchProviderTest, KeywordOrderingAndDescriptions) { |
877 // Add an entry that corresponds to a keyword search with 'term2'. | 878 // Add an entry that corresponds to a keyword search with 'term2'. |
878 AddSearchToHistory(keyword_t_url_, ASCIIToUTF16("term2"), 1); | 879 AddSearchToHistory(keyword_t_url_, ASCIIToUTF16("term2"), 1); |
879 profile_.BlockUntilHistoryProcessesPendingRequests(); | 880 profile_.BlockUntilHistoryProcessesPendingRequests(); |
880 | 881 |
881 AutocompleteController controller(&profile_, NULL, | 882 AutocompleteController controller(&profile_, NULL, |
882 AutocompleteProvider::TYPE_SEARCH); | 883 AutocompleteProvider::TYPE_SEARCH); |
883 controller.Start(AutocompleteInput( | 884 controller.Start(AutocompleteInput( |
884 ASCIIToUTF16("k t"), base::string16::npos, base::string16(), GURL(), | 885 ASCIIToUTF16("k t"), base::string16::npos, base::string16(), GURL(), |
885 AutocompleteInput::INVALID_SPEC, false, false, true, true)); | 886 metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true)); |
886 const AutocompleteResult& result = controller.result(); | 887 const AutocompleteResult& result = controller.result(); |
887 | 888 |
888 // There should be three matches, one for the keyword history, one for | 889 // There should be three matches, one for the keyword history, one for |
889 // keyword provider's what-you-typed, and one for the default provider's | 890 // keyword provider's what-you-typed, and one for the default provider's |
890 // what you typed, in that order. | 891 // what you typed, in that order. |
891 ASSERT_EQ(3u, result.size()); | 892 ASSERT_EQ(3u, result.size()); |
892 EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, result.match_at(0).type); | 893 EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, result.match_at(0).type); |
893 EXPECT_EQ(AutocompleteMatchType::SEARCH_OTHER_ENGINE, | 894 EXPECT_EQ(AutocompleteMatchType::SEARCH_OTHER_ENGINE, |
894 result.match_at(1).type); | 895 result.match_at(1).type); |
895 EXPECT_EQ(AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, | 896 EXPECT_EQ(AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, |
(...skipping 2004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2900 | 2901 |
2901 // Create field trial. | 2902 // Create field trial. |
2902 base::FieldTrial* field_trial = base::FieldTrialList::CreateFieldTrial( | 2903 base::FieldTrial* field_trial = base::FieldTrialList::CreateFieldTrial( |
2903 "AutocompleteDynamicTrial_2", "EnableZeroSuggest"); | 2904 "AutocompleteDynamicTrial_2", "EnableZeroSuggest"); |
2904 field_trial->group(); | 2905 field_trial->group(); |
2905 | 2906 |
2906 // Not signed in. | 2907 // Not signed in. |
2907 EXPECT_FALSE(SearchProvider::CanSendURL( | 2908 EXPECT_FALSE(SearchProvider::CanSendURL( |
2908 GURL("http://www.google.com/search"), | 2909 GURL("http://www.google.com/search"), |
2909 GURL("https://www.google.com/complete/search"), &google_template_url, | 2910 GURL("https://www.google.com/complete/search"), &google_template_url, |
2910 AutocompleteInput::OTHER, &profile_)); | 2911 metrics::OmniboxEventProto::OTHER, &profile_)); |
2911 SigninManagerBase* signin = SigninManagerFactory::GetForProfile(&profile_); | 2912 SigninManagerBase* signin = SigninManagerFactory::GetForProfile(&profile_); |
2912 signin->SetAuthenticatedUsername("test"); | 2913 signin->SetAuthenticatedUsername("test"); |
2913 | 2914 |
2914 // All conditions should be met. | 2915 // All conditions should be met. |
2915 EXPECT_TRUE(SearchProvider::CanSendURL( | 2916 EXPECT_TRUE(SearchProvider::CanSendURL( |
2916 GURL("http://www.google.com/search"), | 2917 GURL("http://www.google.com/search"), |
2917 GURL("https://www.google.com/complete/search"), &google_template_url, | 2918 GURL("https://www.google.com/complete/search"), &google_template_url, |
2918 AutocompleteInput::OTHER, &profile_)); | 2919 metrics::OmniboxEventProto::OTHER, &profile_)); |
2919 | 2920 |
2920 // Not in field trial. | 2921 // Not in field trial. |
2921 ResetFieldTrialList(); | 2922 ResetFieldTrialList(); |
2922 EXPECT_FALSE(SearchProvider::CanSendURL( | 2923 EXPECT_FALSE(SearchProvider::CanSendURL( |
2923 GURL("http://www.google.com/search"), | 2924 GURL("http://www.google.com/search"), |
2924 GURL("https://www.google.com/complete/search"), &google_template_url, | 2925 GURL("https://www.google.com/complete/search"), &google_template_url, |
2925 AutocompleteInput::OTHER, &profile_)); | 2926 metrics::OmniboxEventProto::OTHER, &profile_)); |
2926 field_trial = base::FieldTrialList::CreateFieldTrial( | 2927 field_trial = base::FieldTrialList::CreateFieldTrial( |
2927 "AutocompleteDynamicTrial_2", "EnableZeroSuggest"); | 2928 "AutocompleteDynamicTrial_2", "EnableZeroSuggest"); |
2928 field_trial->group(); | 2929 field_trial->group(); |
2929 | 2930 |
2930 // Invalid page URL. | 2931 // Invalid page URL. |
2931 EXPECT_FALSE(SearchProvider::CanSendURL( | 2932 EXPECT_FALSE(SearchProvider::CanSendURL( |
2932 GURL("badpageurl"), | 2933 GURL("badpageurl"), |
2933 GURL("https://www.google.com/complete/search"), &google_template_url, | 2934 GURL("https://www.google.com/complete/search"), &google_template_url, |
2934 AutocompleteInput::OTHER, &profile_)); | 2935 metrics::OmniboxEventProto::OTHER, &profile_)); |
2935 | 2936 |
2936 // Invalid page classification. | 2937 // Invalid page classification. |
2937 EXPECT_FALSE(SearchProvider::CanSendURL( | 2938 EXPECT_FALSE(SearchProvider::CanSendURL( |
2938 GURL("http://www.google.com/search"), | 2939 GURL("http://www.google.com/search"), |
2939 GURL("https://www.google.com/complete/search"), &google_template_url, | 2940 GURL("https://www.google.com/complete/search"), &google_template_url, |
2940 AutocompleteInput::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS, | 2941 metrics::OmniboxEventProto::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS, |
2941 &profile_)); | 2942 &profile_)); |
2942 | 2943 |
2943 // Invalid page classification. | 2944 // Invalid page classification. |
2944 EXPECT_FALSE(SearchProvider::CanSendURL( | 2945 EXPECT_FALSE(SearchProvider::CanSendURL( |
2945 GURL("http://www.google.com/search"), | 2946 GURL("http://www.google.com/search"), |
2946 GURL("https://www.google.com/complete/search"), &google_template_url, | 2947 GURL("https://www.google.com/complete/search"), &google_template_url, |
2947 AutocompleteInput::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS, | 2948 metrics::OmniboxEventProto::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS, |
2948 &profile_)); | 2949 &profile_)); |
2949 | 2950 |
2950 // HTTPS page URL on same domain as provider. | 2951 // HTTPS page URL on same domain as provider. |
2951 EXPECT_TRUE(SearchProvider::CanSendURL( | 2952 EXPECT_TRUE(SearchProvider::CanSendURL( |
2952 GURL("https://www.google.com/search"), | 2953 GURL("https://www.google.com/search"), |
2953 GURL("https://www.google.com/complete/search"), | 2954 GURL("https://www.google.com/complete/search"), |
2954 &google_template_url, AutocompleteInput::OTHER, &profile_)); | 2955 &google_template_url, metrics::OmniboxEventProto::OTHER, &profile_)); |
2955 | 2956 |
2956 // Non-HTTP[S] page URL on same domain as provider. | 2957 // Non-HTTP[S] page URL on same domain as provider. |
2957 EXPECT_FALSE(SearchProvider::CanSendURL( | 2958 EXPECT_FALSE(SearchProvider::CanSendURL( |
2958 GURL("ftp://www.google.com/search"), | 2959 GURL("ftp://www.google.com/search"), |
2959 GURL("https://www.google.com/complete/search"), &google_template_url, | 2960 GURL("https://www.google.com/complete/search"), &google_template_url, |
2960 AutocompleteInput::OTHER, &profile_)); | 2961 metrics::OmniboxEventProto::OTHER, &profile_)); |
2961 | 2962 |
2962 // Non-HTTP page URL on different domain. | 2963 // Non-HTTP page URL on different domain. |
2963 EXPECT_FALSE(SearchProvider::CanSendURL( | 2964 EXPECT_FALSE(SearchProvider::CanSendURL( |
2964 GURL("https://www.notgoogle.com/search"), | 2965 GURL("https://www.notgoogle.com/search"), |
2965 GURL("https://www.google.com/complete/search"), &google_template_url, | 2966 GURL("https://www.google.com/complete/search"), &google_template_url, |
2966 AutocompleteInput::OTHER, &profile_)); | 2967 metrics::OmniboxEventProto::OTHER, &profile_)); |
2967 | 2968 |
2968 // Non-HTTPS provider. | 2969 // Non-HTTPS provider. |
2969 EXPECT_FALSE(SearchProvider::CanSendURL( | 2970 EXPECT_FALSE(SearchProvider::CanSendURL( |
2970 GURL("http://www.google.com/search"), | 2971 GURL("http://www.google.com/search"), |
2971 GURL("http://www.google.com/complete/search"), &google_template_url, | 2972 GURL("http://www.google.com/complete/search"), &google_template_url, |
2972 AutocompleteInput::OTHER, &profile_)); | 2973 metrics::OmniboxEventProto::OTHER, &profile_)); |
2973 | 2974 |
2974 // Suggest disabled. | 2975 // Suggest disabled. |
2975 profile_.GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false); | 2976 profile_.GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false); |
2976 EXPECT_FALSE(SearchProvider::CanSendURL( | 2977 EXPECT_FALSE(SearchProvider::CanSendURL( |
2977 GURL("http://www.google.com/search"), | 2978 GURL("http://www.google.com/search"), |
2978 GURL("https://www.google.com/complete/search"), &google_template_url, | 2979 GURL("https://www.google.com/complete/search"), &google_template_url, |
2979 AutocompleteInput::OTHER, &profile_)); | 2980 metrics::OmniboxEventProto::OTHER, &profile_)); |
2980 profile_.GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); | 2981 profile_.GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); |
2981 | 2982 |
2982 // Incognito. | 2983 // Incognito. |
2983 EXPECT_FALSE(SearchProvider::CanSendURL( | 2984 EXPECT_FALSE(SearchProvider::CanSendURL( |
2984 GURL("http://www.google.com/search"), | 2985 GURL("http://www.google.com/search"), |
2985 GURL("https://www.google.com/complete/search"), &google_template_url, | 2986 GURL("https://www.google.com/complete/search"), &google_template_url, |
2986 AutocompleteInput::OTHER, profile_.GetOffTheRecordProfile())); | 2987 metrics::OmniboxEventProto::OTHER, profile_.GetOffTheRecordProfile())); |
2987 | 2988 |
2988 // Tab sync not enabled. | 2989 // Tab sync not enabled. |
2989 profile_.GetPrefs()->SetBoolean(sync_driver::prefs::kSyncKeepEverythingSynced, | 2990 profile_.GetPrefs()->SetBoolean(sync_driver::prefs::kSyncKeepEverythingSynced, |
2990 false); | 2991 false); |
2991 profile_.GetPrefs()->SetBoolean(sync_driver::prefs::kSyncTabs, false); | 2992 profile_.GetPrefs()->SetBoolean(sync_driver::prefs::kSyncTabs, false); |
2992 EXPECT_FALSE(SearchProvider::CanSendURL( | 2993 EXPECT_FALSE(SearchProvider::CanSendURL( |
2993 GURL("http://www.google.com/search"), | 2994 GURL("http://www.google.com/search"), |
2994 GURL("https://www.google.com/complete/search"), &google_template_url, | 2995 GURL("https://www.google.com/complete/search"), &google_template_url, |
2995 AutocompleteInput::OTHER, &profile_)); | 2996 metrics::OmniboxEventProto::OTHER, &profile_)); |
2996 profile_.GetPrefs()->SetBoolean(sync_driver::prefs::kSyncTabs, true); | 2997 profile_.GetPrefs()->SetBoolean(sync_driver::prefs::kSyncTabs, true); |
2997 | 2998 |
2998 // Tab sync is encrypted. | 2999 // Tab sync is encrypted. |
2999 ProfileSyncService* service = | 3000 ProfileSyncService* service = |
3000 ProfileSyncServiceFactory::GetInstance()->GetForProfile(&profile_); | 3001 ProfileSyncServiceFactory::GetInstance()->GetForProfile(&profile_); |
3001 syncer::ModelTypeSet encrypted_types = service->GetEncryptedDataTypes(); | 3002 syncer::ModelTypeSet encrypted_types = service->GetEncryptedDataTypes(); |
3002 encrypted_types.Put(syncer::SESSIONS); | 3003 encrypted_types.Put(syncer::SESSIONS); |
3003 service->OnEncryptedTypesChanged(encrypted_types, false); | 3004 service->OnEncryptedTypesChanged(encrypted_types, false); |
3004 EXPECT_FALSE(SearchProvider::CanSendURL( | 3005 EXPECT_FALSE(SearchProvider::CanSendURL( |
3005 GURL("http://www.google.com/search"), | 3006 GURL("http://www.google.com/search"), |
3006 GURL("https://www.google.com/complete/search"), &google_template_url, | 3007 GURL("https://www.google.com/complete/search"), &google_template_url, |
3007 AutocompleteInput::OTHER, &profile_)); | 3008 metrics::OmniboxEventProto::OTHER, &profile_)); |
3008 encrypted_types.Remove(syncer::SESSIONS); | 3009 encrypted_types.Remove(syncer::SESSIONS); |
3009 service->OnEncryptedTypesChanged(encrypted_types, false); | 3010 service->OnEncryptedTypesChanged(encrypted_types, false); |
3010 | 3011 |
3011 // Check that there were no side effects from previous tests. | 3012 // Check that there were no side effects from previous tests. |
3012 EXPECT_TRUE(SearchProvider::CanSendURL( | 3013 EXPECT_TRUE(SearchProvider::CanSendURL( |
3013 GURL("http://www.google.com/search"), | 3014 GURL("http://www.google.com/search"), |
3014 GURL("https://www.google.com/complete/search"), &google_template_url, | 3015 GURL("https://www.google.com/complete/search"), &google_template_url, |
3015 AutocompleteInput::OTHER, &profile_)); | 3016 metrics::OmniboxEventProto::OTHER, &profile_)); |
3016 } | 3017 } |
3017 | 3018 |
3018 TEST_F(SearchProviderTest, TestDeleteMatch) { | 3019 TEST_F(SearchProviderTest, TestDeleteMatch) { |
3019 AutocompleteMatch match(provider_, 0, true, | 3020 AutocompleteMatch match(provider_, 0, true, |
3020 AutocompleteMatchType::SEARCH_SUGGEST); | 3021 AutocompleteMatchType::SEARCH_SUGGEST); |
3021 match.RecordAdditionalInfo( | 3022 match.RecordAdditionalInfo( |
3022 SearchProvider::kDeletionUrlKey, | 3023 SearchProvider::kDeletionUrlKey, |
3023 "https://www.google.com/complete/deleteitem?q=foo"); | 3024 "https://www.google.com/complete/deleteitem?q=foo"); |
3024 | 3025 |
3025 // Test a successful deletion request. | 3026 // Test a successful deletion request. |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3178 | 3179 |
3179 // The expiration time is always updated. | 3180 // The expiration time is always updated. |
3180 provider_->GetSessionToken(); | 3181 provider_->GetSessionToken(); |
3181 base::TimeTicks expiration_time_1 = provider_->token_expiration_time_; | 3182 base::TimeTicks expiration_time_1 = provider_->token_expiration_time_; |
3182 base::PlatformThread::Sleep(kSmallDelta); | 3183 base::PlatformThread::Sleep(kSmallDelta); |
3183 provider_->GetSessionToken(); | 3184 provider_->GetSessionToken(); |
3184 base::TimeTicks expiration_time_2 = provider_->token_expiration_time_; | 3185 base::TimeTicks expiration_time_2 = provider_->token_expiration_time_; |
3185 EXPECT_GT(expiration_time_2, expiration_time_1); | 3186 EXPECT_GT(expiration_time_2, expiration_time_1); |
3186 EXPECT_GE(expiration_time_2, expiration_time_1 + kSmallDelta); | 3187 EXPECT_GE(expiration_time_2, expiration_time_1 + kSmallDelta); |
3187 } | 3188 } |
OLD | NEW |