diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-03 17:44:55 +0100 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-03 17:44:55 +0100 |
commit | 8114b67b64e17482e46c2eaa77dd6a6156130dba (patch) | |
tree | 6bc5c58f4e642f3cbd139a5ef6216993e9a195e4 /devtools/client/netmonitor/reducers/timing-markers.js | |
parent | 28d03f81da77b3841180055d1b728d33a46d28ed (diff) | |
download | UXP-8114b67b64e17482e46c2eaa77dd6a6156130dba.tar UXP-8114b67b64e17482e46c2eaa77dd6a6156130dba.tar.gz UXP-8114b67b64e17482e46c2eaa77dd6a6156130dba.tar.lz UXP-8114b67b64e17482e46c2eaa77dd6a6156130dba.tar.xz UXP-8114b67b64e17482e46c2eaa77dd6a6156130dba.zip |
moebius#93: DevTools: Network - DOMContentLoaded and load
Issue #31
Improvements: #34
https://github.com/MoonchildProductions/moebius/pull/93
Diffstat (limited to 'devtools/client/netmonitor/reducers/timing-markers.js')
-rw-r--r-- | devtools/client/netmonitor/reducers/timing-markers.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/reducers/timing-markers.js b/devtools/client/netmonitor/reducers/timing-markers.js new file mode 100644 index 000000000..cb500b2c4 --- /dev/null +++ b/devtools/client/netmonitor/reducers/timing-markers.js @@ -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; |