mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-20 19:33:08 +09:00
52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
/* 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
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
const I = require("devtools/client/shared/vendor/immutable");
|
|
const { ADD_TIMING_MARKER,
|
|
CLEAR_TIMING_MARKERS } = require("../constants");
|
|
|
|
const TimingMarkers = I.Record({
|
|
firstDocumentDOMContentLoadedTimestamp: -1,
|
|
firstDocumentLoadTimestamp: -1,
|
|
});
|
|
|
|
function addTimingMarker(state, action) {
|
|
if (action.marker.name == "document::DOMContentLoaded" &&
|
|
state.firstDocumentDOMContentLoadedTimestamp == -1) {
|
|
return state.set("firstDocumentDOMContentLoadedTimestamp",
|
|
action.marker.unixTime / 1000);
|
|
}
|
|
|
|
if (action.marker.name == "document::Load" &&
|
|
state.firstDocumentLoadTimestamp == -1) {
|
|
return state.set("firstDocumentLoadTimestamp",
|
|
action.marker.unixTime / 1000);
|
|
}
|
|
|
|
return state;
|
|
}
|
|
|
|
function clearTimingMarkers(state) {
|
|
return state.withMutations(st => {
|
|
st.remove("firstDocumentDOMContentLoadedTimestamp");
|
|
st.remove("firstDocumentLoadTimestamp");
|
|
});
|
|
}
|
|
|
|
function timingMarkers(state = new TimingMarkers(), action) {
|
|
switch (action.type) {
|
|
case ADD_TIMING_MARKER:
|
|
return addTimingMarker(state, action);
|
|
|
|
case CLEAR_TIMING_MARKERS:
|
|
return clearTimingMarkers(state);
|
|
|
|
default:
|
|
return state;
|
|
}
|
|
}
|
|
|
|
module.exports = timingMarkers;
|