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