summaryrefslogtreecommitdiffstats
path: root/mobile/android/actors/GeckoViewExperimentDelegateParent.sys.mjs
blob: 5e83ef906379b110f4956dd476c175c5a79e45f0 (plain)
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
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

import { GeckoViewActorParent } from "resource://gre/modules/GeckoViewActorParent.sys.mjs";

export class GeckoViewExperimentDelegateParent extends GeckoViewActorParent {
  constructor() {
    super();
  }

  /**
   * Gets experiment information on a given feature.
   *
   * @param feature the experiment item to retrieve information on
   * @returns a promise of success with a JSON message or failure
   */
  async getExperimentFeature(feature) {
    return this.eventDispatcher.sendRequestForResult({
      type: "GeckoView:GetExperimentFeature",
      feature,
    });
  }

  /**
   * Records an exposure event, that the experiment area was encountered, on a given feature.
   *
   * @param feature the experiment item to record an exposure event of
   * @returns a promise of success or failure
   */
  async recordExposure(feature) {
    return this.eventDispatcher.sendRequestForResult({
      type: "GeckoView:RecordExposure",
      feature,
    });
  }

  /**
   * Records an exposure event on a specific experiment feature and element.
   *
   * Note: Use recordExposure, if the slug is not known.
   *
   * @param feature the experiment item to record an exposure event of
   * @param slug a specific experiment element
   * @returns a promise of success or failure
   */
  async recordExperimentExposure(feature, slug) {
    return this.eventDispatcher.sendRequestForResult({
      type: "GeckoView:RecordExperimentExposure",
      feature,
      slug,
    });
  }

  /**
   * For recording malformed configuration.
   *
   * @param feature the experiment item to record an exposure event of
   * @param part malformed information to send
   * @returns a promise of success or failure
   */
  async recordExperimentMalformedConfig(feature, part) {
    return this.eventDispatcher.sendRequestForResult({
      type: "GeckoView:RecordMalformedConfig",
      feature,
      part,
    });
  }
}