зеркало из https://github.com/mozilla/gecko-dev.git
c8154dcd0e
Currently to serialize principals stored in JSScript we have a rather complex schema. First there is the transcode callback that the embedding must provide to transcode principals using XDR API. Second we use rather complex glue code to implement that callback in terms of writing/reading nsIObjectOutputStream/ nsIObjectInputStream. This glue code is duplicated in 3 places. All this can be avoided if we simply delegate transcoding of principals to the caller. In addition, at least in the case of the cached startup scripts we do not even need to transcode the principals as the the cached scripts always have the system principal so we can skip all the transcode complexity there. The patch implemnts this idea. In particular, the code in JS engine responsible for transcoding of principals is replaced by the single API function JS_XDRSetPrincipals that the embedding can use to set principals for decoded scripts and functions. Then the startup cache uses this to set the principals for the decoded script to the system principals. The other two places in nsJSContext::Serialize and XBL_SerializeFunction that need to serialize principals together with a function or script now uses common utilities in nsXPConnect so the serialization complexity resides in the single place. |
||
---|---|---|
.. | ||
Makefile.in | ||
nsJSPrincipals.h | ||
nsNullPrincipal.h | ||
nsPrincipal.h | ||
nsScriptSecurityManager.h | ||
nsSystemPrincipal.h |