Bug 1620325 - Add browser sessionId to Onboarding and Activity-Stream event pings r=pdahiya

Differential Revision: https://phabricator.services.mozilla.com/D65597

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Nan Jiang 2020-03-05 21:53:39 +00:00
Родитель aae2ad8790
Коммит cccdcc7909
6 изменённых файлов: 53 добавлений и 0 удалений

Просмотреть файл

@ -12,6 +12,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
PingCentre: "resource:///modules/PingCentre.jsm",
ClientID: "resource://gre/modules/ClientID.jsm",
Services: "resource://gre/modules/Services.jsm",
TelemetrySession: "resource://gre/modules/TelemetrySession.jsm",
});
XPCOMUtils.defineLazyServiceGetters(this, {
gUUIDGenerator: ["@mozilla.org/uuid-generator;1", "nsIUUIDGenerator"],
@ -25,6 +26,11 @@ XPCOMUtils.defineLazyPreferenceGetter(
XPCOMUtils.defineLazyGetter(this, "telemetryClientId", () =>
ClientID.getClientID()
);
XPCOMUtils.defineLazyGetter(
this,
"browserSessionId",
() => TelemetrySession.getMetadata("").sessionId
);
// This is for PingCentre client to capture "activity-stream" experiment strings.
// Although we could change it to anything else, such as "messaging-system", that would
// require us to have the same value contained in the Normandy slugs.
@ -71,6 +77,7 @@ class AboutWelcomeTelemetry {
addon_version: Services.appinfo.appBuildID,
locale: Services.locale.appLocaleAsBCP47,
client_id: await telemetryClientId,
browser_session_id: browserSessionId,
};
return ping;

Просмотреть файл

@ -264,6 +264,7 @@ and losing focus. | :one:
| `displayed` | [required] 1: a SPOC is displayed; 0: non-displayed | :one:
| `reason` | [required] The reason if a SPOC is not displayed, "n/a" for the displayed, one of ("frequency_cap", "blocked_by_user", "flight_duplicate", "probability_selection", "below_min_score", "out_of_position", "n/a") | :one:
| `full_recalc` | [required] Is it a full SPOCS recalculation: 0: false; 1: true. Recalculation case: 1). fetch SPOCS from Pocket endpoint. Non-recalculation cases: 1). An impression updates the SPOCS; 2). Any action that triggers the `selectLayoutRender ` | :one:
| `browser_session_id` | [Optional] The unique identifier for a browser session, retrieved from TelemetrySession | :one:
**Where:**

Просмотреть файл

@ -49,6 +49,7 @@ This ping is submitted once upon Activity Stream initialization if either about:
"action": "activity_stream_event",
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -80,6 +81,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown" ],
  "client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"action": "activity_stream_event",
@ -100,6 +102,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
  "client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -117,6 +120,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
  "client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -142,6 +146,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -165,6 +170,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -186,6 +192,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -205,6 +212,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -223,6 +231,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -244,6 +253,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -267,6 +277,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -292,6 +303,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -314,6 +326,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -336,6 +349,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -359,6 +373,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -382,6 +397,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -399,6 +415,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -416,6 +433,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
@ -439,6 +457,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"user_prefs": 59,
"page": "n/a",
"session_id": "n/a",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3"
}
```
@ -448,6 +467,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
{
"event": "TOP_SITES_EDIT",
"source": "TOP_SITES_SOURCE",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
// "-1" Is used for prepending a new TopSite at the front of the list, while
// any other possible value is used for editing an existing TopSite slot.
"action_position": [-1 | "0..TOP_SITES_LENGTH"]
@ -459,6 +479,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
```js
{
"event": "PREVIEW_REQUEST",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
"source": "TOP_SITES"
}
```
@ -479,6 +500,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": "about:welcome",
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
"addon_version": "20180710100040",
"locale": "en-US",
"user_prefs": 7
@ -497,6 +519,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": "about:welcome",
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
"addon_version": "20180710100040",
"locale": "en-US",
"user_prefs": 7
@ -1025,6 +1048,7 @@ CFR impression ping has two forms, in which the message_id could be of different
"locale": "en-US",
"message_id": "EXTENDED_TRIPLETS_1",
"event": "IMPRESSION",
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
"event_context": { "page": ["about:welcome" | "about:home" | "about:newtab"] }
}
```
@ -1058,6 +1082,7 @@ This reports the user's interaction with Activity Stream Router.
"source": "ONBOARDING",
"message_id": "onboarding_message_1",
"event": ["IMPRESSION" | "CLICK_BUTTION" | "INSTALL" | "BLOCK"],
"browser_session_id": "e7e52665-7db3-f348-9918-e93160eb2ef3",
"event_context": { "page": ["about:welcome" | "about:home" | "about:newtab"] }
}
```

Просмотреть файл

@ -72,6 +72,7 @@ ChromeUtils.defineModuleGetter(
XPCOMUtils.defineLazyModuleGetters(this, {
TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.jsm",
TelemetrySession: "resource://gre/modules/TelemetrySession.jsm",
});
XPCOMUtils.defineLazyServiceGetters(this, {
@ -121,6 +122,12 @@ const ONBOARDING_ALLOWED_PAGE_VALUES = [
"about:newtab",
];
XPCOMUtils.defineLazyGetter(
this,
"browserSessionId",
() => TelemetrySession.getMetadata("").sessionId
);
this.TelemetryFeed = class TelemetryFeed {
constructor(options) {
this.sessions = new Map();
@ -665,6 +672,7 @@ this.TelemetryFeed = class TelemetryFeed {
*/
async applyOnboardingPolicy(ping, session) {
ping.client_id = await this.telemetryClientId;
ping.browser_session_id = browserSessionId;
// Attach page info to `event_context` if there is a session associated with this ping
if (ping.action === "onboarding_user_event" && session && session.page) {
let event_context;
@ -710,6 +718,7 @@ this.TelemetryFeed = class TelemetryFeed {
async sendEventPing(ping) {
delete ping.action;
ping.client_id = await this.telemetryClientId;
ping.browser_session_id = browserSessionId;
if (ping.value && typeof ping.value === "object") {
ping.value = JSON.stringify(ping.value);
}

Просмотреть файл

@ -876,6 +876,7 @@ describe("TelemetryFeed", () => {
assert.equal(pingType, "onboarding");
assert.propertyVal(ping, "client_id", FAKE_TELEMETRY_ID);
assert.propertyVal(ping, "message_id", "onboarding_message_01");
assert.propertyVal(ping, "browser_session_id", "fake_session_id");
});
it("should include page to event_context if there is a session", async () => {
const data = {
@ -1091,6 +1092,7 @@ describe("TelemetryFeed", () => {
const expectedPayload = {
client_id: FAKE_TELEMETRY_ID,
event: "CLICK",
browser_session_id: "fake_session_id",
};
assert.calledWith(instance.sendStructuredIngestionEvent, expectedPayload);
});
@ -1108,6 +1110,7 @@ describe("TelemetryFeed", () => {
const expectedPayload = {
client_id: FAKE_TELEMETRY_ID,
event: "CLICK",
browser_session_id: "fake_session_id",
value: JSON.stringify({ foo: "bar" }),
};
assert.calledWith(instance.sendStructuredIngestionEvent, expectedPayload);

Просмотреть файл

@ -400,6 +400,14 @@ const TEST_GLOBAL = {
return false;
},
},
TelemetrySession: {
getMetadata(reason) {
return {
reason,
sessionId: "fake_session_id",
};
},
},
};
overrider.set(TEST_GLOBAL);