File: variations_service_client.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (96 lines) | stat: -rw-r--r-- 3,992 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_VARIATIONS_SERVICE_VARIATIONS_SERVICE_CLIENT_H_
#define COMPONENTS_VARIATIONS_SERVICE_VARIATIONS_SERVICE_CLIENT_H_

#include <string>

#include "base/files/file_path.h"
#include "base/memory/scoped_refptr.h"
#include "base/version.h"
#include "components/variations/proto/study.pb.h"
#include "components/variations/seed_response.h"
#include "components/version_info/channel.h"

namespace network {
class SharedURLLoaderFactory;
}

namespace network_time {
class NetworkTimeTracker;
}

class PrefService;

namespace variations {

// An abstraction of operations that depend on the embedder's (e.g. Chrome)
// environment.
class VariationsServiceClient {
 public:
  virtual ~VariationsServiceClient() = default;

  // Returns the version to use for variations seed simulation.
  virtual base::Version GetVersionForSimulation() = 0;

  virtual scoped_refptr<network::SharedURLLoaderFactory>
  GetURLLoaderFactory() = 0;
  virtual network_time::NetworkTimeTracker* GetNetworkTimeTracker() = 0;

  // Returns whether the embedder overrides the value of the restrict parameter.
  // |parameter| is an out-param that will contain the value of the restrict
  // parameter if true is returned.
  virtual bool OverridesRestrictParameter(std::string* parameter) = 0;

  // Gets the channel to use for variations. The --fake-variations-channel
  // override switch takes precedence over the embedder-provided channel.
  // If that switch is not set, it will return the embedder-provided channel,
  // (which could be UNKNOWN).
  version_info::Channel GetChannelForVariations();

  // Returns the current form factor of the device.
  virtual Study::FormFactor GetCurrentFormFactor();

  // Returns the directory in which to store variations seed files. Only clients
  // on platforms that support dedicated seed files should override this.
  virtual base::FilePath GetVariationsSeedFileDir();

  // If a native variations service that directly fetches the seed from the
  // server is implemented, returns the SeedResponse from the native variations
  // seed store, and removes the seed from the native storage given that we can
  // assume that the returned seed would be stored into Chrome Prefs. Otherwise,
  // returns nullptr.
  virtual std::unique_ptr<SeedResponse> TakeSeedFromNativeVariationsSeedStore();

  // Returns whether the client is enterprise.
  // TODO(manukh): crbug.com/1003025. This is inconsistent with UMA which
  // analyzes brand_code to determine if the client is an enterprise user:
  // - For android, linux, and iOS, they are consistent because both UMA and
  //   chromium consider all such devices as non-enterprise.
  // - For mac and chromeOS, they are inconsistent because UMA does not consider
  //   any such devices as enterprise, but chromium does.
  // - For windows, both consider some clients as enterprise, but use different
  //   chromium doesn't use brand_code so they may have inconsistent results.
  // That being said, studies restricted by finch won't need to filter on UMA as
  // well. But this could be confusing and could prevent using UMA filters on a
  // non finch-filtered study to analyze the finch-filtered launch potential.
  virtual bool IsEnterprise() = 0;

  // Removes stored Google Groups variations information for deleted profiles.
  // Must be called at startup, prior to the variations Google Groups being
  // read.
  // This is a no-op on platforms that do not support multiple profiles.
  virtual void RemoveGoogleGroupsFromPrefsForDeletedProfiles(
      PrefService* local_state) = 0;

 private:
  // Gets the channel of the embedder. But all variations callers should use
  // |GetChannelForVariations()| instead.
  virtual version_info::Channel GetChannel() = 0;
};

}  // namespace variations

#endif  // COMPONENTS_VARIATIONS_SERVICE_VARIATIONS_SERVICE_CLIENT_H_