test_metrics_service_client.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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
  3. // found in the LICENSE file.
  4. #ifndef COMPONENTS_METRICS_TEST_TEST_METRICS_SERVICE_CLIENT_H_
  5. #define COMPONENTS_METRICS_TEST_TEST_METRICS_SERVICE_CLIENT_H_
  6. #include <stdint.h>
  7. #include <set>
  8. #include <string>
  9. #include "base/memory/raw_ptr.h"
  10. #include "components/metrics/metrics_log_store.h"
  11. #include "components/metrics/metrics_log_uploader.h"
  12. #include "components/metrics/metrics_service_client.h"
  13. #include "components/metrics/test/test_metrics_log_uploader.h"
  14. namespace metrics {
  15. // A simple concrete implementation of the MetricsServiceClient interface, for
  16. // use in tests.
  17. class TestMetricsServiceClient : public MetricsServiceClient {
  18. public:
  19. static const char kBrandForTesting[];
  20. TestMetricsServiceClient();
  21. TestMetricsServiceClient(const TestMetricsServiceClient&) = delete;
  22. TestMetricsServiceClient& operator=(const TestMetricsServiceClient&) = delete;
  23. ~TestMetricsServiceClient() override;
  24. // MetricsServiceClient:
  25. variations::SyntheticTrialRegistry* GetSyntheticTrialRegistry() override;
  26. metrics::MetricsService* GetMetricsService() override;
  27. void SetMetricsClientId(const std::string& client_id) override;
  28. bool ShouldUploadMetricsForUserId(uint64_t user_id) override;
  29. int32_t GetProduct() override;
  30. std::string GetApplicationLocale() override;
  31. const network_time::NetworkTimeTracker* GetNetworkTimeTracker() override;
  32. bool GetBrand(std::string* brand_code) override;
  33. SystemProfileProto::Channel GetChannel() override;
  34. bool IsExtendedStableChannel() override;
  35. std::string GetVersionString() override;
  36. void CollectFinalMetricsForLog(base::OnceClosure done_callback) override;
  37. std::unique_ptr<MetricsLogUploader> CreateUploader(
  38. const GURL& server_url,
  39. const GURL& insecure_server_url,
  40. base::StringPiece mime_type,
  41. MetricsLogUploader::MetricServiceType service_type,
  42. const MetricsLogUploader::UploadCallback& on_upload_complete) override;
  43. base::TimeDelta GetStandardUploadInterval() override;
  44. bool IsReportingPolicyManaged() override;
  45. EnableMetricsDefault GetMetricsReportingDefaultState() override;
  46. std::string GetAppPackageNameIfLoggable() override;
  47. bool ShouldResetClientIdsOnClonedInstall() override;
  48. MetricsLogStore::StorageLimits GetStorageLimits() const override;
  49. // Adds/removes |user_id| from the set of user ids that have metrics consent
  50. // as true.
  51. void AllowMetricUploadForUserId(uint64_t user_id);
  52. void RemoveMetricUploadForUserId(uint64_t user_id);
  53. const std::string& get_client_id() const { return client_id_; }
  54. // Returns a weak ref to the last created uploader.
  55. TestMetricsLogUploader* uploader() { return uploader_; }
  56. void set_version_string(const std::string& str) { version_string_ = str; }
  57. void set_product(int32_t product) { product_ = product; }
  58. void set_reporting_is_managed(bool managed) {
  59. reporting_is_managed_ = managed;
  60. }
  61. void set_is_extended_stable_channel(bool is_extended_stable_channel) {
  62. is_extended_stable_channel_ = is_extended_stable_channel;
  63. }
  64. void set_enable_default(EnableMetricsDefault enable_default) {
  65. enable_default_ = enable_default;
  66. }
  67. void set_should_reset_client_ids_on_cloned_install(bool state) {
  68. should_reset_client_ids_on_cloned_install_ = state;
  69. }
  70. void set_max_ongoing_log_size(size_t bytes) {
  71. storage_limits_.max_ongoing_log_size = bytes;
  72. }
  73. private:
  74. std::string client_id_;
  75. std::string version_string_{"5.0.322.0-64-devel"};
  76. int32_t product_ = ChromeUserMetricsExtension::CHROME;
  77. bool reporting_is_managed_ = false;
  78. bool is_extended_stable_channel_ = false;
  79. EnableMetricsDefault enable_default_ = EnableMetricsDefault::DEFAULT_UNKNOWN;
  80. bool should_reset_client_ids_on_cloned_install_ = false;
  81. MetricsLogStore::StorageLimits storage_limits_ =
  82. MetricsServiceClient::GetStorageLimits();
  83. std::set<uint64_t> allowed_user_ids_;
  84. // A weak ref to the last created TestMetricsLogUploader.
  85. raw_ptr<TestMetricsLogUploader> uploader_ = nullptr;
  86. };
  87. } // namespace metrics
  88. #endif // COMPONENTS_METRICS_TEST_TEST_METRICS_SERVICE_CLIENT_H_