There are two changes here:
1) We allow setting .body even if the root element is not an <html:html>. This is what the spec says to do, and what we used to do before the changes in bug
366200. No tests for this yet, pending https://github.com/whatwg/html/issues/3403 getting resolved.
2) We use GetBody(), not GetBodyElement(), to look for an existing thing to replace. This matters if there are <frameset>s involved.
Tag UXP Issue #1344
Tag UXP Issue #252
CheckForOutdatedParent()
This was only used to check for cases when document.open() changed the
global, and elements being inserted into the document needing a new
reflector as a result.
Since document.open() no longer changes the global, this code is no
longer needed.
This changes the work we do for document.open() in the following ways:
- We no longer create a new Window when doing document.open().
We use the same Window but remove all the event listeners on the
existing DOM tree and Window before removing the document's existing
children to provide a clean slate document to use for .write().
- We no longer create a session history entry (previously would be a
wyciwyg URI). We now replace the current one, effectively losing the
entry for the original document.
- We now support document.open() on windowless documents.
https://bugzilla.mozilla.org/show_bug.cgi?id=1244768
I happened to find an older version of the promise-based media playback patch in Bugzilla, the one that was originally submitted for review. It had the DocShell changes I already knew how to deal with, and had fewer of the audio wrapper and nsISupports changes that were confusing me in the later patch. I was able to do a better job getting this back into a UXP-appropriate configuration than I could have with the final version.
I'm honestly still a little unsure about some of the minor refactoring done in the patch itself, insisting on already_AddRefed promises and such, but I don't really know how to avoid those completely. Still, I think it's better than it was.
This updates our behavior for computed DOM styling to no longer return
null on elements that have no display, but return a 0-length (empty)
style instead and don't throw. For this we stop looking at having a
presentation for the style and just look at the document instead.
This resolves#1219
This patch implements:
- noModule getter/setter for HTMLScriptElement
- the nomodule attribute for HTMLScriptElement
- the logic in nsScriptLoader that denies the loading of a nomodule script
- tests
Tag #618
This should do it for all the commits to files I changed, but while I'm in here I could probably go ahead and turn ALL the singular if defined statements into ifdef statements by using grep/find on the tree. On the other hand, perhaps we should do that as a separate issue so that this doesn't become a case of scope creep.
82dd4adb0e/components/desktop/firefox/patches/firefox-49-npapi.patch
The first fix was something I found on Oracle's patchset and allowed me to use the last Flash Player compiled for Solaris, from all the way back in 2012. Still works with most Flash content.
The second is an evolution of what I had to do to get Interlink to compile. For Interlink, I basically had to copy the contents of any boolean values from confvars.sh into the empty moz.configure file, otherwise nothing would get configured. I decided to test whether Pale Moon had the same issue, and it turned out that it wasn't as bad as on Interlink, but it was still pure luck that the browser component built at all, because MOZ_PHOENIX and other important flags were apparently not being defined at all, hence why I couldn't get half the extensions to be compatible at first.
I don't know why this is the case, but apparently configure.in isn't able to import values from confvars.sh. old-configure.in seems immune to the problem that application-specific configure.in files were experiencing, though. confvars.sh itself seems to work fine with values that aren't passed along via configure.in, though. So it's the interface between those two files that is messed up.
This is mostly ifdefs, but as you can see, Solaris is actually a lot like Linux. They're both more SysV than BSD at core, and most of the differences have more to do with Solaris not using glibc than anything else.
I still need to audit a lot of these changes and understand why they're needed and what the alternative approaches are. After this patch, most of the core functionality needed to build Solaris is here.