moebius#93: DevTools: Network - DOMContentLoaded and load

Issue #31
Improvements: #34
https://github.com/MoonchildProductions/moebius/pull/93
This commit is contained in:
janekptacijarabaci 2018-03-03 17:44:55 +01:00 committed by Roy Tam
commit ed8a17ae7d
12 changed files with 132 additions and 4 deletions

View file

@ -6,10 +6,12 @@
const { combineReducers } = require("devtools/client/shared/vendor/redux");
const filters = require("./filters");
const requests = require("./requests");
const timingMarkers = require("./timing-markers");
const ui = require("./ui");
module.exports = combineReducers({
filters,
requests,
timingMarkers,
ui,
});

View file

@ -7,5 +7,6 @@ DevToolsModules(
'filters.js',
'index.js',
'requests.js',
'timing-markers.js',
'ui.js',
)

View file

@ -0,0 +1,52 @@
/* 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;