Methods
-
pause()
-
Pauses the MutationObserver. Call
resume
to start it back up. -
resume()
-
Resumes the MutationObserver after a
pause
. -
start()
-
Initiate
MutationHandler.observer
on theouter parent document
.Uses
addObserver
to instrument.Our internal handler
will be called if something happens. -
stop()
-
Disable internal MutationObserver instance. Use this when uninstrumenting the site we're on.
-
add_event_resource(resource)
-
Adds a resource to the current event.
Might fail (return -1) if: a) There are no pending events b) The current event is complete c) There's no passed-in resource
Parameters:
Name Type Description resource
Resource
Returns:
Event index, or -1 on failure
-
addEvent(resource)
-
If an event has triggered a resource to be fetched we add it to the list of pending events here and wait for it to eventually resolve.
Parameters:
Name Type Description resource
object Resource
object we are waiting forReturns:
Type: index
If we are already waiting for an event of this type null otherwise index in the
queue
. -
calculateSpaTimings(resource)
-
Calculates SPA Back-End and Front-End timings for Hard and Soft SPA navigations.
Parameters:
Name Type Description resource
object Resouce to calculate for
-
clearTimeout(index)
-
If this instance of the
MutationHandler
has atimer
set, clear itParameters:
Name Type Description index
number Index of the event in pending_events array
-
completeEvent( [index])
-
Completes the current event, marking the end time as 'now'.
Parameters:
Name Type Argument Description index
number <optional>
Optional Event index, defaults to last event
-
load_finished(index, loadEventEnd)
-
Decrement the number of
nodes_to_wait
for thePendingEvent Object
.If the nodes_to_wait is decremented to 0 and the event type was SPA:
When we're finished waiting on the last node, the MVC engine (eg AngularJS) might still be doing some processing (eg on an XHR) before it adds some additional content (eg IMGs) to the page. We should wait a while (1 second) longer to see if this happens. If something else is added, we'll continue to wait for that content to complete. If nothing else is added, the end event will be the timestamp for when this load_finished(), not 1 second from now.
Parameters:
Name Type Description index
number Index of the event found in the pending_events array
loadEventEnd
TimeStamp TimeStamp at which the resource was finished loading
-
monitorMO(index)
-
Clear the flag preventing DOM mutation monitoring
Parameters:
Name Type Description index
number Index of the event in pending_events array
-
nodesWaitingFor( [index])
-
Determines how many nodes are being waited on
Parameters:
Name Type Argument Description index
number <optional>
Optional Event index, defaults to last event
Returns:
Type: number
Number of nodes being waited on
-
queue_is_empty()
-
Determines if the resources queue is empty
Returns:
Type: boolean
True if there are no outstanding resources
-
sendEvent(index)
-
If called with an event in the
pending events list
trigger a beacon for this event.When the beacon is sent for this event is depending on either having a crumb, in which case this beacon will be sent immediately. If that is not the case we wait 5 seconds and attempt to send the event again.
Parameters:
Name Type Description index
number Index in event list to send
Returns:
Type: undefined
Returns early if the event already completed
-
sendResource(resource, eventIndex)
-
Creates and triggers sending a beacon for a Resource that has finished loading.
Parameters:
Name Type Description resource
Resource The Resource to send a beacon on
eventIndex
number index of the event in the pending_events array
-
setTimeout(timeout, index)
-
Will create a new timer waiting for
timeout
milliseconds to wait until a resources load time has ended or should have ended. If the timeout expires the Resource atindex
will be marked as timedout and result in an error Resource marked withXHR_STATUS_TIMEOUT
as status information.Parameters:
Name Type Description timeout
number time ot wait for the resource to be loaded
index
number Index of the
Resource
in ourMutationHandler#pending_events
-
timedout(index)
-
Sends a Beacon for the
Resource
atindex
with the statusXHR_STATUS_TIMEOUT
code, If there are multiple resources attached to thepending_events
array atindex
.Parameters:
Name Type Description index
number Index of the event in pending_events array
-
wait_for_node(node, index)
-
Determines if we should wait for resources that would be fetched by the specified node.
Parameters:
Name Type Description node
Element DOM node
index
number Event index
Type Definitions
-
load_cb(ev)
-
Once an asset has been loaded and the resource appeared in the page we check if it was part of the interesting events on the page and mark it as finished.
Parameters:
Name Type Description ev
Event Load event Object
-
mutation_cb(mutations)
-
Callback called once
Mutation Observer instance
noticed a mutation on the page. This method will determine if a mutation on the page is interesting or not.Parameters:
Name Type Description mutations
Array.<Mutation> Mutation array describing changes to the DOM