Source code
Revision control
Copy as Markdown
Other Tools
/* 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
import { GeckoViewUtils } from "resource://gre/modules/GeckoViewUtils.sys.mjs";
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};
XPCOMUtils.defineLazyServiceGetter(
lazy,
"TrackingDBService",
"@mozilla.org/tracking-db-service;1",
Ci.nsITrackingDBService
);
const { debug, warn } = GeckoViewUtils.initLogging("GeckoViewTrackingDB");
export const GeckoViewTrackingDB = {
async onEvent(aEvent, aData, aCallback) {
debug`onEvent ${aEvent} ${aData}`;
try {
switch (aEvent) {
case "GeckoView:TrackingDB:GetEventsByDateRange": {
const events = await lazy.TrackingDBService.getEventsByDateRange(
aData.dateFrom,
aData.dateTo
);
const serialized = [];
for (const row of events) {
serialized.push({
type: row.getResultByName("type"),
count: row.getResultByName("count"),
date: row.getResultByName("timestamp"),
});
}
aCallback.onSuccess({ events: serialized });
break;
}
case "GeckoView:TrackingDB:SumAllEvents": {
const sum = await lazy.TrackingDBService.sumAllEvents();
aCallback.onSuccess({ sum });
break;
}
case "GeckoView:TrackingDB:GetEarliestRecordedDate": {
const date = await lazy.TrackingDBService.getEarliestRecordedDate();
aCallback.onSuccess({ date: date ?? 0 });
break;
}
}
} catch (ex) {
warn`Error in ${aEvent}: ${ex}`;
aCallback.onError(`Error in ${aEvent}: ${ex}`);
}
},
};