Source code

Revision control

Copy as Markdown

Other Tools

/* Copyright 2013 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export class PdfJsTelemetryContent {
static onViewerIsUsed() {
Glean.pdfjs.used.add(1);
}
}
export class PdfJsTelemetry {
static report(aData) {
const { type } = aData;
switch (type) {
case "pageInfo":
this.onTimeToView(aData.timestamp);
break;
case "editing":
this.onEditing(aData);
break;
case "buttons":
case "gv-buttons":
{
const id = aData.data.id.replace(
/([A-Z])/g,
c => `_${c.toLowerCase()}`
);
if (type === "buttons") {
this.onButtons(id);
} else {
this.onGeckoview(id);
}
}
break;
}
}
static onTimeToView(ms) {
Glean.pdfjs.timeToView.accumulateSingleSample(ms);
}
static onEditing({ type, data }) {
if (type !== "editing" || !data) {
return;
}
switch (data.type) {
case "freetext":
case "ink":
Glean.pdfjs.editing[data.type].add(1);
return;
case "print":
case "save":
{
Glean.pdfjs.editing[data.type].add(1);
if (!data.stats) {
return;
}
const numbers = ["one", "two", "three", "four", "five"];
Glean.pdfjsEditingHighlight[data.type].add(1);
Glean.pdfjsEditingHighlight.numberOfColors[
numbers[data.stats.highlight.numberOfColors - 1]
].add(1);
}
return;
case "stamp":
if (data.action === "added") {
Glean.pdfjs.editing.stamp.add(1);
return;
}
Glean.pdfjs.stamp[data.action].add(1);
for (const key of [
"alt_text_keyboard",
"alt_text_decorative",
"alt_text_description",
"alt_text_edit",
]) {
if (data[key]) {
Glean.pdfjs.stamp[key].add(1);
}
}
return;
case "highlight":
case "free_highlight":
switch (data.action) {
case "added":
Glean.pdfjsEditingHighlight.kind[data.type].add(1);
Glean.pdfjsEditingHighlight.method[data.methodOfCreation].add(1);
Glean.pdfjsEditingHighlight.color[data.color].add(1);
if (data.type === "free_highlight") {
Glean.pdfjsEditingHighlight.thickness.accumulateSingleSample(
data.thickness
);
}
break;
case "color_changed":
Glean.pdfjsEditingHighlight.color[data.color].add(1);
Glean.pdfjsEditingHighlight.colorChanged.add(1);
break;
case "thickness_changed":
Glean.pdfjsEditingHighlight.thickness.accumulateSingleSample(
data.thickness
);
Glean.pdfjsEditingHighlight.thicknessChanged.add(1);
break;
case "deleted":
Glean.pdfjsEditingHighlight.deleted.add(1);
break;
case "edited":
Glean.pdfjsEditingHighlight.edited.add(1);
break;
case "toggle_visibility":
Glean.pdfjsEditingHighlight.toggleVisibility.add(1);
break;
}
break;
}
}
static onButtons(id) {
Glean.pdfjs.buttons[id].add(1);
}
static onGeckoview(id) {
Glean.pdfjs.geckoview[id].add(1);
}
}