- this had the effect of making things visible which should have been invisible
- not sure what I was thinking with 'potentially non-standard browsers', maybe I thought I was covering return values from getPropertyValue of null or false. Could potentially add explicit tests for null or false, but as there is no evidence for these non-standard browsers, leaving as-is
* Hygiene: clean up the xhtml namespace attribute; this is an artefact of the `serializeToString` method which we are using (I think) to be consistent with whitespace and to clean up invalid attributes. I'm removing as was confused as am adding tests related to doctypes
* Record when a document is in `compatMode` and trigger this mode on the iframe upon replay
https://developer.mozilla.org/en-US/docs/Web/API/Document/compatMode
the included DOCTYPE was picked up from https://stackoverflow.com/questions/18976213/ - there may be better ways of triggering compatMode
* Don't write an extra DOCTYPE if there's one already present in the snapshot. Rely instead on whatever doctype is there to trigger the BackCompat mode
* Modify to write the correct doctype if we can sniff xhtml - don't have any evidence that this will make a difference
* Dev convenience: Ignore files generated by editors
* Typo fix
* Was getting a 2000ms timeout on the 'before' hook I believe
* Change certain tests to go directly to their localhost page instead of loading the html content programmatically in order to avoid triggering an incorrect BackCompat mode (incorrect in that the html content has a correct doctype)
* Add test based on motivating site that had images lined up in a square which were all different sizes; very old style percentage width/height attributes were doing the right thing in quirksmode, which is what we are testing for here
* Fixup rrweb test html to include a valid doctype and avoid BackCompat to ensure we're not accidentally testing against quirks modes. I didn't find an elegant way of avoiding the `BackCompat` when adding a minimal iframe, so some BackCompat has slipped in here, I don't think there's much harm
* `setTimeout` and `clearTimeout` are global functions. Think the window versions of them were for the following reason: https://stackoverflow.com/questions/60245787/
* Comments and extra test here helped me understand which inserts were expected and which are to be ignored
* Add a test for the style setProperty/removeProperty added in #671
* Add a test to ensure that listeners get added correctly in nested iframes - particularly important for those which rely on prototype monkeypatching
* Pass in the window object from the current iframe so that monkeypatching applies to all windows
* Satisfy typings
* No need to insert an iframe as there's one already set up for us
* Enable the console logger to also intercept log messages within iframes
* There's no tests for FontFace but presumably the monkeypatching here works similarly to the others
* Keep blocked root elements as placeholders
`serializeNode` turns blocked elements into placeholder nodes so we need to make sure we don't remove these elements from the mutations when they get added.
We do however need to keep removing any children of these blocked elements from getting added or mutated.
* Update packages/rrweb/src/record/mutation.ts
A previous patch has refactored the canvas image loading process
and it does not use <img /> anymore, so the counter is no longer
need.
commit: 4a72ff0b3cdf9920ea38bca8f69eedbfe52c99904a0036f3fc1cd7c1e0248a37R725