On Thu Nov 10 18:16:38 2022 +0000, Gabriel Ivăncescu wrote:
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?
`IPersistMoniker_Load` probably gives valid results in this case, but it's less similar to real-world use, so I think it would be interesting to try find out what's wrong with using `put_href`. One thing I can think of is to report MIME type from our pluggable protocol handler, does reporting `BINDSTATUS_MIMETYPEAVAILABLE` (or even `BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE`) help?
And yes, it sounds like native indeed breaks COM rules.