| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/translate/core/browser/translate_ranker_impl.h" | 5 #include "components/translate/core/browser/translate_ranker_impl.h" |
| 6 | 6 |
| 7 #include <initializer_list> | 7 #include <initializer_list> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "base/feature_list.h" | 10 #include "base/feature_list.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "components/ukm/test_ukm_service.h" | 27 #include "components/ukm/test_ukm_service.h" |
| 28 #include "components/ukm/ukm_source.h" | 28 #include "components/ukm/ukm_source.h" |
| 29 #include "net/url_request/test_url_fetcher_factory.h" | 29 #include "net/url_request/test_url_fetcher_factory.h" |
| 30 #include "net/url_request/url_request_test_util.h" | 30 #include "net/url_request/url_request_test_util.h" |
| 31 #include "testing/gtest/include/gtest/gtest.h" | 31 #include "testing/gtest/include/gtest/gtest.h" |
| 32 #include "url/gurl.h" | 32 #include "url/gurl.h" |
| 33 | 33 |
| 34 namespace { | 34 namespace { |
| 35 | 35 |
| 36 using translate::kTranslateRankerEnforcement; | 36 using translate::kTranslateRankerEnforcement; |
| 37 using translate::kTranslateRankerLogging; | |
| 38 using translate::kTranslateRankerQuery; | 37 using translate::kTranslateRankerQuery; |
| 39 using translate::kTranslateRankerDecisionOverride; | 38 using translate::kTranslateRankerDecisionOverride; |
| 40 using translate::TranslateDownloadManager; | 39 using translate::TranslateDownloadManager; |
| 41 using translate::TranslateRankerFeatures; | 40 using translate::TranslateRankerFeatures; |
| 42 using translate::TranslatePrefs; | 41 using translate::TranslatePrefs; |
| 43 using translate::TranslateRankerImpl; | 42 using translate::TranslateRankerImpl; |
| 44 | 43 |
| 45 constexpr uint32_t kModelVersion = 1234; | 44 constexpr uint32_t kModelVersion = 1234; |
| 46 | 45 |
| 47 class TranslateRankerImplTest : public ::testing::Test { | 46 class TranslateRankerImplTest : public ::testing::Test { |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 metrics::TranslateEventProto tep; | 326 metrics::TranslateEventProto tep; |
| 328 // If we don't have a model, returns true. | 327 // If we don't have a model, returns true. |
| 329 EXPECT_TRUE( | 328 EXPECT_TRUE( |
| 330 ranker->ShouldOfferTranslation(*translate_prefs_, "en", "fr", &tep)); | 329 ranker->ShouldOfferTranslation(*translate_prefs_, "en", "fr", &tep)); |
| 331 EXPECT_NE(0U, tep.ranker_request_timestamp_sec()); | 330 EXPECT_NE(0U, tep.ranker_request_timestamp_sec()); |
| 332 EXPECT_EQ(0U, tep.ranker_version()); | 331 EXPECT_EQ(0U, tep.ranker_version()); |
| 333 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED, tep.ranker_response()); | 332 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED, tep.ranker_response()); |
| 334 } | 333 } |
| 335 | 334 |
| 336 TEST_F(TranslateRankerImplTest, RecordAndFlushEvents) { | 335 TEST_F(TranslateRankerImplTest, RecordAndFlushEvents) { |
| 337 InitFeatures({kTranslateRankerLogging}, {}); | |
| 338 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f); | 336 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f); |
| 339 std::vector<metrics::TranslateEventProto> flushed_events; | 337 std::vector<metrics::TranslateEventProto> flushed_events; |
| 340 | 338 |
| 341 GURL url0("https://www.google.com"); | 339 GURL url0("https://www.google.com"); |
| 342 GURL url1("https://www.gmail.com"); | 340 GURL url1("https://www.gmail.com"); |
| 343 | 341 |
| 344 // Check that flushing an empty cache will return an empty vector. | 342 // Check that flushing an empty cache will return an empty vector. |
| 345 ranker->FlushTranslateEvents(&flushed_events); | 343 ranker->FlushTranslateEvents(&flushed_events); |
| 346 EXPECT_EQ(0U, flushed_events.size()); | 344 EXPECT_EQ(0U, flushed_events.size()); |
| 347 | 345 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 365 | 363 |
| 366 ASSERT_EQ(2U, GetTestUkmService()->sources_count()); | 364 ASSERT_EQ(2U, GetTestUkmService()->sources_count()); |
| 367 EXPECT_EQ( | 365 EXPECT_EQ( |
| 368 url0.spec(), | 366 url0.spec(), |
| 369 GetTestUkmService()->GetSourceForUrl(url0.spec().c_str())->url().spec()); | 367 GetTestUkmService()->GetSourceForUrl(url0.spec().c_str())->url().spec()); |
| 370 EXPECT_EQ( | 368 EXPECT_EQ( |
| 371 url1.spec(), | 369 url1.spec(), |
| 372 GetTestUkmService()->GetSourceForUrl(url1.spec().c_str())->url().spec()); | 370 GetTestUkmService()->GetSourceForUrl(url1.spec().c_str())->url().spec()); |
| 373 } | 371 } |
| 374 | 372 |
| 375 TEST_F(TranslateRankerImplTest, LoggingDisabled) { | |
| 376 InitFeatures({}, {kTranslateRankerLogging}); | |
| 377 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f); | |
| 378 std::vector<metrics::TranslateEventProto> flushed_events; | |
| 379 | |
| 380 ranker->FlushTranslateEvents(&flushed_events); | |
| 381 EXPECT_EQ(0U, flushed_events.size()); | |
| 382 | |
| 383 ranker->RecordTranslateEvent(0, GURL(), &tep1_); | |
| 384 ranker->RecordTranslateEvent(1, GURL(), &tep2_); | |
| 385 ranker->RecordTranslateEvent(2, GURL(), &tep3_); | |
| 386 | |
| 387 // Logging is disabled, so no events should be cached. | |
| 388 ranker->FlushTranslateEvents(&flushed_events); | |
| 389 EXPECT_EQ(0U, flushed_events.size()); | |
| 390 EXPECT_EQ(0ul, GetTestUkmService()->sources_count()); | |
| 391 } | |
| 392 | |
| 393 TEST_F(TranslateRankerImplTest, LoggingDisabledViaOverride) { | 373 TEST_F(TranslateRankerImplTest, LoggingDisabledViaOverride) { |
| 394 InitFeatures({kTranslateRankerLogging}, {}); | |
| 395 std::unique_ptr<translate::TranslateRankerImpl> ranker = | 374 std::unique_ptr<translate::TranslateRankerImpl> ranker = |
| 396 GetRankerForTest(0.0f); | 375 GetRankerForTest(0.0f); |
| 397 std::vector<metrics::TranslateEventProto> flushed_events; | 376 std::vector<metrics::TranslateEventProto> flushed_events; |
| 398 | 377 |
| 399 ranker->FlushTranslateEvents(&flushed_events); | 378 ranker->FlushTranslateEvents(&flushed_events); |
| 400 EXPECT_EQ(0U, flushed_events.size()); | 379 EXPECT_EQ(0U, flushed_events.size()); |
| 401 | 380 |
| 402 ranker->RecordTranslateEvent(0, GURL(), &tep1_); | 381 ranker->RecordTranslateEvent(0, GURL(), &tep1_); |
| 403 ranker->RecordTranslateEvent(1, GURL(), &tep2_); | 382 ranker->RecordTranslateEvent(1, GURL(), &tep2_); |
| 404 ranker->RecordTranslateEvent(2, GURL(), &tep3_); | 383 ranker->RecordTranslateEvent(2, GURL(), &tep3_); |
| 405 | 384 |
| 406 // Logging is disabled, so no events should be cached. | 385 // Logging is enabled by default, so events should be cached. |
| 407 ranker->FlushTranslateEvents(&flushed_events); | 386 ranker->FlushTranslateEvents(&flushed_events); |
| 408 EXPECT_EQ(3U, flushed_events.size()); | 387 EXPECT_EQ(3U, flushed_events.size()); |
| 409 | 388 |
| 410 // Override the feature setting to disable logging. | 389 // Override the feature setting to disable logging. |
| 411 ranker->EnableLogging(false); | 390 ranker->EnableLogging(false); |
| 412 | 391 |
| 413 ranker->RecordTranslateEvent(0, GURL(), &tep1_); | 392 ranker->RecordTranslateEvent(0, GURL(), &tep1_); |
| 414 ranker->RecordTranslateEvent(1, GURL(), &tep2_); | 393 ranker->RecordTranslateEvent(1, GURL(), &tep2_); |
| 415 ranker->RecordTranslateEvent(2, GURL(), &tep3_); | 394 ranker->RecordTranslateEvent(2, GURL(), &tep3_); |
| 416 | 395 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 445 EXPECT_TRUE(ranker->ShouldOverrideDecision(2, GURL(), &tep)); | 424 EXPECT_TRUE(ranker->ShouldOverrideDecision(2, GURL(), &tep)); |
| 446 | 425 |
| 447 std::vector<metrics::TranslateEventProto> flushed_events; | 426 std::vector<metrics::TranslateEventProto> flushed_events; |
| 448 ranker->FlushTranslateEvents(&flushed_events); | 427 ranker->FlushTranslateEvents(&flushed_events); |
| 449 EXPECT_EQ(0U, flushed_events.size()); | 428 EXPECT_EQ(0U, flushed_events.size()); |
| 450 ASSERT_EQ(2, tep.decision_overrides_size()); | 429 ASSERT_EQ(2, tep.decision_overrides_size()); |
| 451 ASSERT_EQ(1, tep.decision_overrides(0)); | 430 ASSERT_EQ(1, tep.decision_overrides(0)); |
| 452 ASSERT_EQ(2, tep.decision_overrides(1)); | 431 ASSERT_EQ(2, tep.decision_overrides(1)); |
| 453 ASSERT_EQ(0, tep.event_type()); | 432 ASSERT_EQ(0, tep.event_type()); |
| 454 } | 433 } |
| OLD | NEW |