in so many different directories, that I think it's the best way.
I've pulled and clobber_all'd my tree and got
r=dp
on this checkin.
Here are the touched files:
M mozilla/embedding/browser/activex/src/control/MozillaBrowser.cpp
M mozilla/embedding/browser/activex/src/control/MozillaBrowser.h
M mozilla/js/src/xpconnect/shell/xpcshell.cpp
M mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp
M mozilla/xpcom/build/nsXPComInit.cpp
M mozilla/xpcom/components/nsComponentManager.cpp
M mozilla/xpcom/components/nsIServiceManager.h
M mozilla/xpcom/components/nsServiceManager.cpp
M mozilla/xpcom/io/nsSpecialSystemDirectory.cpp
M mozilla/xpcom/io/nsSpecialSystemDirectory.h
M mozilla/xpcom/tests/TestBuffers.cpp
M mozilla/xpcom/tests/TestPipes.cpp
M mozilla/xpcom/tests/TestShutdown.cpp
M mozilla/xpcom/tests/windows/TestHelloXPLoop.cpp
M mozilla/xpcom/tools/registry/regExport.cpp
M mozilla/xpcom/tools/registry/regxpcom.cpp
M mozilla/xpinstall/stub/xpistub.cpp
M mozilla/webshell/embed/ActiveX/MozillaBrowser.cpp
M mozilla/webshell/embed/ActiveX/MozillaBrowser.h
M mozilla/webshell/tests/viewer/nsMacMain.cpp
M mozilla/webshell/tests/viewer/nsPhMain.cpp
M mozilla/webshell/tests/viewer/nsWinMain.cpp
M mozilla/webshell/tests/viewer/unix/gtk/nsGtkMain.cpp
M mozilla/xpfe/appshell/src/nsFileLocations.cpp
M mozilla/xpfe/bootstrap/nsAppRunner.cpp
The heart of this checkin is a change in the signature and symantics
of NS_InitXPCOM.
The new signature is
extern NS_COM nsresult
NS_InitXPCOM(nsIServiceManager* *result, nsFileSpec* binDirectory);
I filed a bug for this problem:
b=23157
The original manifestation of this bug was in mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp It used the current process directory to find resources, which is not correct when the current process is not mozilla.exe.
I have added a new type to nsSpecialSystemDirectory, Moz_BinDirectory, and made nsResProtocolHandler use that value.
fixed the webshell leak in <textarea> and <input type=text|password>
the problem was the new nsWebShell::SetDocument() call was indirectly
causing nsHTMLDocument to instantiate a parser and fire off a parse.
bad circular references ensued. The fix is to use the "aCommand" param
to pass a hint to the nsHTMLDocument, telling it there's no need to
involve a parser.
in the simple case, we no longer leak webshells. That is, if you open
mozilla.exe, look at a page (whether it has a text control on it or
not), and shut down the app, no webshell is leaked. If I browse around,
sometimes we still leak a webshell somewhere. I haven't figured out
exactly where that is yet. A guess is history, which is in the process
of being reworked anyway.
r=mscott
a=chofmann