зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
aae2ad8790
Коммит
cccdcc7909
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче