On Wed Nov 9 21:43:30 2022 +0000, Jacek Caban wrote:
Any navigation (except for fragment-only) should do that, basically every web page has its own document object. You could use document.location.href = "..."; or anything alike. We already have `test_put_href()`, but I'm not sure if it will be convenient as it also tests all embedding API effects of navigation.
It looks like native IE indeed breaks COM rules here. I moved the tests to `events.c` since we have pluggable protocol handler and we're testing events anyway, but for some reason I couldn't use `put_href`, `replace` or `superNavigate` on native to navigate using the pluggable protocol; it just spawned a new IE process with the destination?!? (even though it's a "virtual" page on the same domain)
Navigation worked fine on Wine and did call the custom pluggable protocol handler…
Using `IPersistMoniker_Load` seems to work fine, though. I'm not sure if this actually "navigates" the page. Should I be concerned? However, testing this on native:
* The same IHTMLDocument2 doc obj is used after the "navigation", and * It does change the compat mode (I navigate to diff compat mode page) for that doc obj, and * It stops exposing `IEventTarget` (if navigating to a quirks page from ie9) or starts exposing it (if navigation to a ie9 page from quirks)
This means it does break the COM rules, right? Or is my test messed up?
I haven't yet added tests for events to see what happens, but I should also look into DISPIDs forwarding since they suffer from same problem with breaking the "rules" (but this time of IDispatch), since the same name will map to a potentially different DISPID (some aren't even available in quirks mode). Wouldn't surprise me if native also breaks those though.
Is using `IPersistMoniker_Load` to navigate fine? Or at the very least, for what I'm testing, even if it's not a real navigation. It does change the document node, so I guess it's enough to test this, right?