Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_FIELD_TRIAL_H_ | 5 #ifndef COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_FIELD_TRIAL_H_ |
| 6 #define COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_FIELD_TRIAL_H_ | 6 #define COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_FIELD_TRIAL_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 HUPScoringParams() : experimental_scoring_enabled(false) {} | 88 HUPScoringParams() : experimental_scoring_enabled(false) {} |
| 89 | 89 |
| 90 bool experimental_scoring_enabled; | 90 bool experimental_scoring_enabled; |
| 91 | 91 |
| 92 ScoreBuckets typed_count_buckets; | 92 ScoreBuckets typed_count_buckets; |
| 93 | 93 |
| 94 // Used only when the typed count is 0. | 94 // Used only when the typed count is 0. |
| 95 ScoreBuckets visited_count_buckets; | 95 ScoreBuckets visited_count_buckets; |
| 96 }; | 96 }; |
| 97 | 97 |
| 98 // The set of parameters customizing PhysicalWebProvider relevance scoring. | |
|
Mark P
2016/12/21 23:21:41
This approach works but I feel it's a little heavy
mattreynolds
2016/12/22 00:23:40
Agreed, this is cleaner and less error-prone. Done
| |
| 99 struct PhysicalWebScoringParams { | |
| 100 PhysicalWebScoringParams() : experimental_scoring_enabled(false) {} | |
| 101 | |
| 102 bool experimental_scoring_enabled; | |
| 103 | |
| 104 // The base relevance score for PhysicalWebProvider suggestions when the user | |
| 105 // has not entered any text in the omnibox. | |
| 106 int zero_suggest_base_relevance; | |
| 107 | |
| 108 // The base relevance score for PhysicalWebprovider suggestions after the user | |
| 109 // has typed a query in the omnibox. | |
| 110 int after_typing_base_relevance; | |
| 111 }; | |
| 112 | |
| 98 // This class manages the Omnibox field trials. | 113 // This class manages the Omnibox field trials. |
| 99 class OmniboxFieldTrial { | 114 class OmniboxFieldTrial { |
| 100 public: | 115 public: |
| 101 // A mapping that contains multipliers indicating that matches of the | 116 // A mapping that contains multipliers indicating that matches of the |
| 102 // specified type should have their relevance score multiplied by the | 117 // specified type should have their relevance score multiplied by the |
| 103 // given number. Omitted types are assumed to have multipliers of 1.0. | 118 // given number. Omitted types are assumed to have multipliers of 1.0. |
| 104 typedef std::map<AutocompleteMatchType::Type, float> DemotionMultipliers; | 119 typedef std::map<AutocompleteMatchType::Type, float> DemotionMultipliers; |
| 105 | 120 |
| 106 // A vector that maps from the number of matching pages to the document | 121 // A vector that maps from the number of matching pages to the document |
| 107 // specificity score used in HistoryQuick provider / ScoredHistoryMatch | 122 // specificity score used in HistoryQuick provider / ScoredHistoryMatch |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 367 // field trial. | 382 // field trial. |
| 368 | 383 |
| 369 // Returns the conditions under which the UI code should display the title | 384 // Returns the conditions under which the UI code should display the title |
| 370 // of a URL more prominently than the URL for an input of type |input_type|. | 385 // of a URL more prominently than the URL for an input of type |input_type|. |
| 371 // Normally the URL is displayed more prominently. Returns NEVER_EMPHASIZE | 386 // Normally the URL is displayed more prominently. Returns NEVER_EMPHASIZE |
| 372 // if the experiment isn't active. | 387 // if the experiment isn't active. |
| 373 static EmphasizeTitlesCondition GetEmphasizeTitlesConditionForInput( | 388 static EmphasizeTitlesCondition GetEmphasizeTitlesConditionForInput( |
| 374 metrics::OmniboxInputType::Type input_type); | 389 metrics::OmniboxInputType::Type input_type); |
| 375 | 390 |
| 376 // --------------------------------------------------------- | 391 // --------------------------------------------------------- |
| 392 // For PhysicalWebProvider related experiments. | |
| 393 | |
| 394 // Returns whether the user is in a Physical Web field trial where the | |
| 395 // PhysicalWebProvider should be used to get suggestions when the user clicks | |
| 396 // on the omnibox but has not typed anything yet. | |
| 397 static bool InPhysicalWebZeroSuggestFieldTrial(); | |
| 398 | |
| 399 // Returns whether the user is in a Physical Web field trial and URL-based | |
| 400 // suggestions can continue to appear after the user has started typing. | |
| 401 static bool InPhysicalWebAfterTypingFieldTrial(); | |
| 402 | |
| 403 // Initializes the PhysicalWebProvider |scoring_params| based on the active | |
| 404 // Physical Web scoring experiment. If there is no such experiment, this | |
| 405 // function simply sets |scoring_params|->experimental_scoring_enabled to | |
| 406 // false. | |
| 407 static void GetExperimentalPhysicalWebScoringParams( | |
| 408 PhysicalWebScoringParams* scoring_params); | |
| 409 | |
| 410 // --------------------------------------------------------- | |
| 377 // Exposed publicly for the sake of unittests. | 411 // Exposed publicly for the sake of unittests. |
| 378 static const char kBundledExperimentFieldTrialName[]; | 412 static const char kBundledExperimentFieldTrialName[]; |
| 379 // Rule names used by the bundled experiment. | 413 // Rule names used by the bundled experiment. |
| 380 static const char kDisableProvidersRule[]; | 414 static const char kDisableProvidersRule[]; |
| 381 static const char kShortcutsScoringMaxRelevanceRule[]; | 415 static const char kShortcutsScoringMaxRelevanceRule[]; |
| 382 static const char kSearchHistoryRule[]; | 416 static const char kSearchHistoryRule[]; |
| 383 static const char kDemoteByTypeRule[]; | 417 static const char kDemoteByTypeRule[]; |
| 384 static const char kHQPBookmarkValueRule[]; | 418 static const char kHQPBookmarkValueRule[]; |
| 385 static const char kHQPTypedValueRule[]; | 419 static const char kHQPTypedValueRule[]; |
| 386 static const char kHQPDiscountFrecencyWhenFewVisitsRule[]; | 420 static const char kHQPDiscountFrecencyWhenFewVisitsRule[]; |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 398 static const char kHQPNumMatchesScoresRule[]; | 432 static const char kHQPNumMatchesScoresRule[]; |
| 399 static const char kHQPNumTitleWordsRule[]; | 433 static const char kHQPNumTitleWordsRule[]; |
| 400 static const char kHQPAlsoDoHUPLikeScoringRule[]; | 434 static const char kHQPAlsoDoHUPLikeScoringRule[]; |
| 401 static const char kHUPSearchDatabaseRule[]; | 435 static const char kHUPSearchDatabaseRule[]; |
| 402 static const char kPreventUWYTDefaultForNonURLInputsRule[]; | 436 static const char kPreventUWYTDefaultForNonURLInputsRule[]; |
| 403 static const char kKeywordRequiresRegistryRule[]; | 437 static const char kKeywordRequiresRegistryRule[]; |
| 404 static const char kKeywordRequiresPrefixMatchRule[]; | 438 static const char kKeywordRequiresPrefixMatchRule[]; |
| 405 static const char kKeywordScoreForSufficientlyCompleteMatchRule[]; | 439 static const char kKeywordScoreForSufficientlyCompleteMatchRule[]; |
| 406 static const char kHQPAllowDupMatchesForScoringRule[]; | 440 static const char kHQPAllowDupMatchesForScoringRule[]; |
| 407 static const char kEmphasizeTitlesRule[]; | 441 static const char kEmphasizeTitlesRule[]; |
| 442 static const char kPhysicalWebZeroSuggestRule[]; | |
| 443 static const char kPhysicalWebAfterTypingRule[]; | |
| 408 | 444 |
| 409 // Parameter names used by the HUP new scoring experiments. | 445 // Parameter names used by the HUP new scoring experiments. |
| 410 static const char kHUPNewScoringEnabledParam[]; | 446 static const char kHUPNewScoringEnabledParam[]; |
| 411 static const char kHUPNewScoringTypedCountRelevanceCapParam[]; | 447 static const char kHUPNewScoringTypedCountRelevanceCapParam[]; |
| 412 static const char kHUPNewScoringTypedCountHalfLifeTimeParam[]; | 448 static const char kHUPNewScoringTypedCountHalfLifeTimeParam[]; |
| 413 static const char kHUPNewScoringTypedCountScoreBucketsParam[]; | 449 static const char kHUPNewScoringTypedCountScoreBucketsParam[]; |
| 414 static const char kHUPNewScoringTypedCountUseDecayFactorParam[]; | 450 static const char kHUPNewScoringTypedCountUseDecayFactorParam[]; |
| 415 static const char kHUPNewScoringVisitedCountRelevanceCapParam[]; | 451 static const char kHUPNewScoringVisitedCountRelevanceCapParam[]; |
| 416 static const char kHUPNewScoringVisitedCountHalfLifeTimeParam[]; | 452 static const char kHUPNewScoringVisitedCountHalfLifeTimeParam[]; |
| 417 static const char kHUPNewScoringVisitedCountScoreBucketsParam[]; | 453 static const char kHUPNewScoringVisitedCountScoreBucketsParam[]; |
| 418 static const char kHUPNewScoringVisitedCountUseDecayFactorParam[]; | 454 static const char kHUPNewScoringVisitedCountUseDecayFactorParam[]; |
| 419 | 455 |
| 420 // Parameter names used by the HQP experimental scoring experiments. | 456 // Parameter names used by the HQP experimental scoring experiments. |
| 421 static const char kHQPExperimentalScoringBucketsParam[]; | 457 static const char kHQPExperimentalScoringBucketsParam[]; |
| 422 static const char kHQPExperimentalScoringTopicalityThresholdParam[]; | 458 static const char kHQPExperimentalScoringTopicalityThresholdParam[]; |
| 423 | 459 |
| 460 // Parameter names used by the Physical Web experimental scoring experiments. | |
| 461 static const char kPhysicalWebExperimentalScoringParam[]; | |
| 462 static const char kPhysicalWebZeroSuggestBaseRelevanceParam[]; | |
| 463 static const char kPhysicalWebAfterTypingBaseRelevanceParam[]; | |
| 464 | |
| 424 // The amount of time to wait before sending a new suggest request after the | 465 // The amount of time to wait before sending a new suggest request after the |
| 425 // previous one unless overridden by a field trial parameter. | 466 // previous one unless overridden by a field trial parameter. |
| 426 // Non-const because some unittests modify this value. | 467 // Non-const because some unittests modify this value. |
| 427 static int kDefaultMinimumTimeBetweenSuggestQueriesMs; | 468 static int kDefaultMinimumTimeBetweenSuggestQueriesMs; |
| 428 | 469 |
| 429 private: | 470 private: |
| 430 friend class OmniboxFieldTrialTest; | 471 friend class OmniboxFieldTrialTest; |
| 431 | 472 |
| 432 // The bundled omnibox experiment comes with a set of parameters | 473 // The bundled omnibox experiment comes with a set of parameters |
| 433 // (key-value pairs). Each key indicates a certain rule that applies in | 474 // (key-value pairs). Each key indicates a certain rule that applies in |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 445 // prioritize different wildcard contexts, see the implementation. How to | 486 // prioritize different wildcard contexts, see the implementation. How to |
| 446 // interpret the value is left to the caller; this is rule-dependent. | 487 // interpret the value is left to the caller; this is rule-dependent. |
| 447 static std::string GetValueForRuleInContext( | 488 static std::string GetValueForRuleInContext( |
| 448 const std::string& rule, | 489 const std::string& rule, |
| 449 metrics::OmniboxEventProto::PageClassification page_classification); | 490 metrics::OmniboxEventProto::PageClassification page_classification); |
| 450 | 491 |
| 451 DISALLOW_IMPLICIT_CONSTRUCTORS(OmniboxFieldTrial); | 492 DISALLOW_IMPLICIT_CONSTRUCTORS(OmniboxFieldTrial); |
| 452 }; | 493 }; |
| 453 | 494 |
| 454 #endif // COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_FIELD_TRIAL_H_ | 495 #endif // COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_FIELD_TRIAL_H_ |
| OLD | NEW |