Commit Graph

29 Commits

Author SHA1 Message Date
Yanzhen Yu
6d3b9c2345 Upgrade the DOM mutation observer
This is an important patch contains some crtical bug fixes for
the DOM mutation observer.
Previously the observer did not handle complex DOM movement very
well. So in this patch we optimized this by distinguishing moved
node better and added a resolving queue to avoid the error caused
by ordering.
2019-06-05 16:39:29 +08:00
Yanzhen Yu
107296eee3 add the inline stylesheet option when recording 2019-05-12 21:10:34 +08:00
Yanzhen Yu
2d8d4b0c19 fix #62 accept RegExp type block class config 2019-04-14 16:11:54 +08:00
Yanzhen Yu
faed623986 resume with time offset when after wait stylesheet load 2019-04-09 17:00:02 +08:00
Yanzhen Yu
059cbe4fd8 move browser related APIs into runtime 2019-04-02 21:29:14 +08:00
Yanzhen Yu
c04e4bf0a5 impl #23 add custom privacy selectors 2019-04-02 00:25:08 +08:00
Yanzhen Yu
406e7a8d39 update mutation observer handler
1. deep delete from adds set when node was dropped
2. remove node from dropped set when node was added again
2019-02-03 23:07:35 +08:00
Yanzhen Yu
a69bf87f7f check whether the removed node's ancestors has been removed 2019-02-01 23:13:00 +08:00
yz-yu
22330207eb improve mouse record and replay (#49)
Increase the throttle value of collecting mouse move and add a
transition time to the replayer's mouse. This may decrease the
size of mouse move data and make the replay movement more smooth.
Another change is to move and hover when click event is replayed.
This is to improve the replay of some programmatic click, such as
E2E tests.
2019-01-25 18:25:35 +08:00
yz-yu
3daedfa284 fix remove node observer and check on the result of getNode (#43)
* check removed node and its parent before collect

* add more more checks on the result of getNode
2019-01-21 19:18:51 +08:00
Yanzhen Yu
8f24cb78b3 fix block strategy
If an element was blocked, its child nodes should also be blocked.
The interactions and mutations on the element and its child nodes
also need to be blocked.
2018-12-30 21:46:23 +08:00
Yanzhen Yu
db86ca13fa fix some safari's scroll related issue 2018-12-25 16:30:36 +08:00
Yanzhen Yu
097321619c check is dropped and is removed by ancestors instead of only check parent 2018-12-20 15:29:02 +08:00
Yanzhen Yu
2c9db926c0 resolve #1 add ignore and block strategy for privacy purpose 2018-12-02 23:23:21 +08:00
Yanzhen Yu
78967192fc return stopper function as the result of record 2018-12-02 22:37:28 +08:00
Yanzhen Yu
69c6d96455 update dependencies
In this commit, we updated rrweb-snapshot to 0.6.0 which including
a breaking change in data structure.
2018-11-13 16:21:05 +08:00
Yanzhen Yu
e9add18029 Implement #2: simulate hover event 2018-11-01 13:31:09 +08:00
Yanzhen Yu
cff1617959 fix mutation filter in recorder and change the order of apply mutations in replayer
This change include two critical fix for both recorder and replayer.

In the recorder, previously we filter text and attribute mutations by check its target id,
but this was a wrong approach because removed node also has id at the callback moment.
We corrected this by checking whether the mirror map still has the target id in its keys.

In the replayer side, the issue was we got exceptions when calling insertBefore which says
the ref node was not the child node of the caller node. This will happen when the previous
or next sibling has been removed in the same callback but the previousId or nextId was
recorded.
After apply remove node mutations before add node mutations, we can make sure the removed
siblings will not exist in the mirror map when apply add node mutations. When we get node
from mirror map with an removed id, we will get null and pass it to insertBefore which
is valid.
As a side note, this apply order is safe because we ensured all the remove node mutations
do not include removing newly added nodes in the same callback.
2018-10-31 12:06:41 +08:00
Yanzhen Yu
7b9e57bd6c filter text and attributes mutations which target tot a removed node 2018-10-23 11:48:48 +08:00
Yanzhen Yu
68949a08c3 check added nodes from removed nodes and dropped nodes 2018-10-23 11:28:15 +08:00
Yanzhen Yu
d588f738b8 rewrite mutation observer handler with lazy child list calculation 2018-10-22 23:08:05 +08:00
Yanzhen Yu
a88a79d821 add meta event and fix childList observer, also update related replayer 2018-10-22 10:48:56 +08:00
Yanzhen Yu
85a56d2047 fix scroll value and record viewport when loaded 2018-10-12 13:08:03 +08:00
Yanzhen Yu
40f29e5353 add input event observer and hook the value setter 2018-10-11 16:12:32 +08:00
Yanzhen Yu
46ab1d6e80 serialize newly added nodes and update id node map when childList changed 2018-10-09 10:52:20 +08:00
Yanzhen Yu
1f10b70d30 add scroll and viewport resize observers 2018-10-09 10:33:24 +08:00
Yanzhen Yu
64d4c541ee add mouse interactions observer 2018-10-08 18:37:40 +08:00
Yanzhen Yu
a33b24a676 add mouse movement observer 2018-10-08 17:46:15 +08:00
Yanzhen Yu
427acff3d6 change observed mutations into serializable records 2018-10-08 15:47:21 +08:00