Skip to content
This repository has been archived by the owner on Nov 1, 2022. It is now read-only.

Commit

Permalink
Issue #1606: Add PocketIdMeasurement
Browse files Browse the repository at this point in the history
  • Loading branch information
psymoon authored and pocmo committed Jan 8, 2019
1 parent 758e1e3 commit 270e991
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/* 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/. */

package org.mozilla.telemetry.measurement;

import android.content.SharedPreferences;

import org.mozilla.telemetry.config.TelemetryConfiguration;

import java.util.UUID;

/**
* A unique, randomly generated UUID for this pocket client for fire-tv instance.
* This is distinct from the telemetry clientId. The clientId should not be able to be tied to the pocketId in any way.
*/
public class PocketIdMeasurement extends TelemetryMeasurement {
private static final String FIELD_NAME = "pocketId";

private static final String PREFERENCE_POCKET_ID = "pocket_id";

private TelemetryConfiguration configuration;
private String pocketId;

public PocketIdMeasurement(TelemetryConfiguration configuration) {
super(FIELD_NAME);

this.configuration = configuration;
}

@Override
public Object flush() {
if (pocketId == null) {
pocketId = generateClientId(configuration);
}

return pocketId;
}

private static synchronized String generateClientId(final TelemetryConfiguration configuration) {
final SharedPreferences preferences = configuration.getSharedPreferences();

if (preferences.contains(PREFERENCE_POCKET_ID)) {
// We already generated a pocket id in the past. Let's use it.
return preferences.getString(PREFERENCE_POCKET_ID, /* unused default value */ null);
}

final String pocketId = UUID.randomUUID().toString();

preferences.edit()
.putString(PREFERENCE_POCKET_ID, pocketId)
.apply();

return pocketId;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
import org.mozilla.telemetry.measurement.LocaleMeasurement;
import org.mozilla.telemetry.measurement.OperatingSystemMeasurement;
import org.mozilla.telemetry.measurement.OperatingSystemVersionMeasurement;
import org.mozilla.telemetry.measurement.PocketIdMeasurement;
import org.mozilla.telemetry.measurement.ProcessStartTimestampMeasurement;
import org.mozilla.telemetry.measurement.SequenceMeasurement;
import org.mozilla.telemetry.measurement.SettingsMeasurement;
import org.mozilla.telemetry.measurement.TimezoneOffsetMeasurement;

/**
Expand All @@ -30,14 +30,14 @@ public class TelemetryPocketEventPingBuilder extends TelemetryPingBuilder {
public TelemetryPocketEventPingBuilder(TelemetryConfiguration configuration) {
super(configuration, TYPE, VERSION);

addMeasurement(new PocketIdMeasurement(configuration));
addMeasurement(new ProcessStartTimestampMeasurement(configuration));
addMeasurement(new SequenceMeasurement(configuration, this));
addMeasurement(new LocaleMeasurement());
addMeasurement(new OperatingSystemMeasurement());
addMeasurement(new OperatingSystemVersionMeasurement());
addMeasurement(new CreatedTimestampMeasurement());
addMeasurement(new TimezoneOffsetMeasurement());
addMeasurement(new SettingsMeasurement(configuration));
addMeasurement(eventsMeasurement = new EventsMeasurement(configuration));
}

Expand Down

0 comments on commit 270e991

Please sign in to comment.