| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // FieldTrial is a class for handling details of statistical experiments | 5 // FieldTrial is a class for handling details of statistical experiments |
| 6 // performed by actual users in the field (i.e., in a shipped or beta product). | 6 // performed by actual users in the field (i.e., in a shipped or beta product). |
| 7 // All code is called exclusively on the UI thread currently. | 7 // All code is called exclusively on the UI thread currently. |
| 8 // | 8 // |
| 9 // The simplest example is an experiment to see whether one of two options | 9 // The simplest example is an experiment to see whether one of two options |
| 10 // produces "better" results across our user population. In that scenario, UMA | 10 // produces "better" results across our user population. In that scenario, UMA |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 | 436 |
| 437 // Remove an observer. | 437 // Remove an observer. |
| 438 static void RemoveObserver(Observer* observer); | 438 static void RemoveObserver(Observer* observer); |
| 439 | 439 |
| 440 // Notify all observers that a group has been finalized for |field_trial|. | 440 // Notify all observers that a group has been finalized for |field_trial|. |
| 441 static void NotifyFieldTrialGroupSelection(FieldTrial* field_trial); | 441 static void NotifyFieldTrialGroupSelection(FieldTrial* field_trial); |
| 442 | 442 |
| 443 // Return the number of active field trials. | 443 // Return the number of active field trials. |
| 444 static size_t GetFieldTrialCount(); | 444 static size_t GetFieldTrialCount(); |
| 445 | 445 |
| 446 // If one-time randomization is enabled, returns a weak pointer to the |
| 447 // corresponding EntropyProvider. Otherwise, returns NULL. The returned |
| 448 // entropy provider is owned by the global FieldTrialList and is guaranteed to |
| 449 // remain valid until the global FieldTrialList is destroyed. |
| 450 static const FieldTrial::EntropyProvider* |
| 451 GetEntropyProviderForOneTimeRandomization(); |
| 452 |
| 446 private: | 453 private: |
| 447 // A map from FieldTrial names to the actual instances. | 454 // A map from FieldTrial names to the actual instances. |
| 448 typedef std::map<std::string, FieldTrial*> RegistrationMap; | 455 typedef std::map<std::string, FieldTrial*> RegistrationMap; |
| 449 | 456 |
| 450 // If one-time randomization is enabled, returns a weak pointer to the | |
| 451 // corresponding EntropyProvider. Otherwise, returns NULL. | |
| 452 static const FieldTrial::EntropyProvider* | |
| 453 GetEntropyProviderForOneTimeRandomization(); | |
| 454 | |
| 455 // Helper function should be called only while holding lock_. | 457 // Helper function should be called only while holding lock_. |
| 456 FieldTrial* PreLockedFind(const std::string& name); | 458 FieldTrial* PreLockedFind(const std::string& name); |
| 457 | 459 |
| 458 // Register() stores a pointer to the given trial in a global map. | 460 // Register() stores a pointer to the given trial in a global map. |
| 459 // This method also AddRef's the indicated trial. | 461 // This method also AddRef's the indicated trial. |
| 460 // This should always be called after creating a new FieldTrial instance. | 462 // This should always be called after creating a new FieldTrial instance. |
| 461 static void Register(FieldTrial* trial); | 463 static void Register(FieldTrial* trial); |
| 462 | 464 |
| 463 static FieldTrialList* global_; // The singleton of this class. | 465 static FieldTrialList* global_; // The singleton of this class. |
| 464 | 466 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 478 | 480 |
| 479 // List of observers to be notified when a group is selected for a FieldTrial. | 481 // List of observers to be notified when a group is selected for a FieldTrial. |
| 480 scoped_refptr<ObserverListThreadSafe<Observer> > observer_list_; | 482 scoped_refptr<ObserverListThreadSafe<Observer> > observer_list_; |
| 481 | 483 |
| 482 DISALLOW_COPY_AND_ASSIGN(FieldTrialList); | 484 DISALLOW_COPY_AND_ASSIGN(FieldTrialList); |
| 483 }; | 485 }; |
| 484 | 486 |
| 485 } // namespace base | 487 } // namespace base |
| 486 | 488 |
| 487 #endif // BASE_METRICS_FIELD_TRIAL_H_ | 489 #endif // BASE_METRICS_FIELD_TRIAL_H_ |
| OLD | NEW |