Bug 1405047 - Export 43262ffa - chore(ping-centre): Shield ID filtering should happen per ping sent (#3618)
MozReview-Commit-ID: 7vWMHvweBSq
--- a/browser/extensions/activity-stream/install.rdf.in
+++ b/browser/extensions/activity-stream/install.rdf.in
@@ -3,17 +3,17 @@
#filter substitution
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>activity-stream@mozilla.org</em:id>
<em:type>2</em:type>
<em:bootstrap>true</em:bootstrap>
<em:unpack>false</em:unpack>
- <em:version>2017.10.02.1059-019fdbda</em:version>
+ <em:version>2017.10.02.1060-43262ffa</em:version>
<em:name>Activity Stream</em:name>
<em:description>A rich visual history feed and a reimagined home page make it easier than ever to find exactly what you're looking for in Firefox.</em:description>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>@MOZ_APP_VERSION@</em:minVersion>
--- a/browser/extensions/activity-stream/lib/TelemetryFeed.jsm
+++ b/browser/extensions/activity-stream/lib/TelemetryFeed.jsm
@@ -16,16 +16,17 @@ XPCOMUtils.defineLazyModuleGetter(this,
"resource://activity-stream/common/PerfService.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PingCentre",
"resource:///modules/PingCentre.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "gUUIDGenerator",
"@mozilla.org/uuid-generator;1",
"nsIUUIDGenerator");
+const ACTIVITY_STREAM_ID = "activity-stream";
const ACTIVITY_STREAM_ENDPOINT_PREF = "browser.newtabpage.activity-stream.telemetry.ping.endpoint";
// This is a mapping table between the user preferences and its encoding code
const USER_PREFS_ENCODING = {
"showSearch": 1 << 0,
"showTopSites": 1 << 1,
"feeds.section.topstories": 1 << 2
};
@@ -155,22 +156,20 @@ this.TelemetryFeed = class TelemetryFeed
_onTelemetryPrefChange(prefVal) {
this.telemetryEnabled = prefVal;
}
/**
* Lazily initialize PingCentre to send pings
*/
get pingCentre() {
- const ACTIVITY_STREAM_ID = "activity-stream";
Object.defineProperty(this, "pingCentre",
{
value: new PingCentre({
topic: ACTIVITY_STREAM_ID,
- filter: ACTIVITY_STREAM_ID,
overrideEndpointPref: ACTIVITY_STREAM_ENDPOINT_PREF
})
});
return this.pingCentre;
}
/**
* Get encoded user preferences, multiple prefs will be combined via bitwise OR operator
@@ -358,17 +357,18 @@ this.TelemetryFeed = class TelemetryFeed
action: "activity_stream_session",
perf: session.perf
}
);
}
async sendEvent(event_object) {
if (this.telemetryEnabled) {
- this.pingCentre.sendPing(event_object);
+ this.pingCentre.sendPing(event_object,
+ {filter: ACTIVITY_STREAM_ID});
}
}
handleImpressionStats(action) {
const payload = action.data;
let guidSet;
let index;
--- a/browser/modules/PingCentre.jsm
+++ b/browser/modules/PingCentre.jsm
@@ -33,17 +33,16 @@ const FHR_UPLOAD_ENABLED_PREF = "datarep
*/
class PingCentre {
constructor(options) {
if (!options.topic) {
throw new Error("Must specify topic.");
}
this._topic = options.topic;
- this._filter = options.filter;
this._prefs = Services.prefs.getBranch("");
this._setPingEndpoint(options.topic, options.overrideEndpointPref);
this._enabled = this._prefs.getBoolPref(TELEMETRY_PREF);
this._onTelemetryPrefChange = this._onTelemetryPrefChange.bind(this);
this._prefs.addObserver(TELEMETRY_PREF, this._onTelemetryPrefChange);
@@ -87,33 +86,34 @@ class PingCentre {
_onTelemetryPrefChange(aSubject, aTopic, prefKey) {
this._enabled = this._prefs.getBoolPref(prefKey);
}
_onFhrPrefChange(aSubject, aTopic, prefKey) {
this._fhrEnabled = this._prefs.getBoolPref(prefKey);
}
- _createExperimentsString(activeExperiments) {
+ _createExperimentsString(activeExperiments, filter) {
let experimentsString = "";
for (let experimentID in activeExperiments) {
if (!activeExperiments[experimentID] ||
!activeExperiments[experimentID].branch ||
- (this._filter && !experimentID.includes(this._filter))) {
+ (filter && !experimentID.includes(filter))) {
continue;
}
let expString = `${experimentID}:${activeExperiments[experimentID].branch}`;
experimentsString = experimentsString.concat(`${expString};`);
}
return experimentsString;
}
- async sendPing(data) {
+ async sendPing(data, options) {
+ let filter = options && options.filter;
let experiments = TelemetryEnvironment.getActiveExperiments();
- let experimentsString = this._createExperimentsString(experiments);
+ let experimentsString = this._createExperimentsString(experiments, filter);
if (!this.enabled) {
return Promise.resolve();
}
let clientID = data.client_id || await this.telemetryClientId;
let locale = data.locale || Services.locale.getAppLocalesAsLangTags().pop();
const payload = Object.assign({
locale,