Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How do I build an installer for my plugin?

5 views
Skip to first unread message

edburns

unread,
Sep 12, 2008, 9:50:16 AM9/12/08
to
Hello, I have a native .dll plugin for Win32 that works with Firefox 2
[1]. For someone to use this plugin, they currently have to go
through a lot of nonsense including configuring a .properties file and
running a "build" command from inside of NetBeans.

I want the experience to be much easier. Ideally I'd like to use the
addon manager to do this. Can someone please help direct me?

Requirements

* The installer must put at least three binary files in the plugins
directory that is a sibling of the firefox.exe

nppluglet.dll
jmfplayer.jar
SimplePluglet.jar

* The installer must append some content to the "prefs.js" file for
the currently active profile. This content is:

user_pref("plugin.allow_alien_star_handler", true);
user_pref("plugin.default_plugin_disabled", false);
user_pref("plugin.override_internal_types", true);

* The installer must require the user to restart firefox.

Any help is greatly apprecaited.

Sincerely,

Ed Burns


[1] http://www.mozilla.org/projects/blackwood/java-plugins/

edburns

unread,
Sep 13, 2008, 9:07:34 PM9/13/08
to
> Any help is greatly apprecaited.

Mook, from ##developers shared these links:

Mook> edburns: http://developer.mozilla.org/En/Bundles should help
Mook> edburns: yep, see http://developer.mozilla.org/en/Building_an_Extension#Defaults_Files

Thanks Mook, Timelyx, and WeirdAl.

edburns

unread,
Oct 6, 2008, 9:12:22 AM10/6/08
to
Hello,

I'm building an xpi called pluglet.xpi. Here is the structure of
pluglet.xpi

$ zip -r ../pluglet.xpi *
adding: components/pluglet.xpt (deflated 34%)
adding: install.rdf (deflated 48%)
adding: platform/WINNT_x86-msvc/components/pluglet.dll (deflated
77%)
adding: platform/WINNT_x86-msvc/plugins/nppluglet.dll (deflated 86%)

In my nppluglet.dll, I want to do a do_GetService() on a contract id
declared in pluglet.xpt.

The pluglet.xpt is built with this line:

/cygdrive/f/Projects/mozilla/FIREFOX_2_0_0_3_RELEASE_A/mozilla/firefox-
win32_d.obj/../build/cygwin-wrapper ../../../dist/bin/xpt_link.exe
_xpidlgen/pluglet.xpt _xpidlgen/nsIPluglet.xpt _xpidlgen/
iPlugletEngine.xpt _xpidlgen/iPlugletManager.xpt

The iPlugletEngine.xpt is built from iPlugletEngine.idl, which
declares the contractID:

%{C++
#ifndef JNI_H
#include "jni.h"
#endif

#define PLUGLETENGINE_CID \
{ /* C1E694F3-9BE1-11d3-837C-0004AC56C49E */ \
0xc1e694f3, \
0x9be1, \
0x11d3, \
{ 0x83, 0x7c, 0x0, 0x4, 0xac, 0x56, 0xc4, 0x9e } \
}

#define PLUGLETENGINE_ContractID \
"@mozilla.org/blackwood/pluglet-engine;1"

%}

When I install the xpt and view a page calling for nppluglet.dll, this
code gets executed:

nsCOMPtr<nsISupports> plugletEngine = nsnull;
nsresult rv;

plugletEngine = do_GetService(PLUGLETENGINE_ContractID, &rv);
if (NS_SUCCEEDED(rv)) {
// success code here
}

I find that the do_GetService fails.

If I replace PLUGLETENGINE_ContractID with, say,
NS_IOSERVICE_CONTRACTID, I find the do_GetService() succeeds.

This leads me to believe that my pluglet.xpt is not getting inspected
for its contents.

Can someone please tell me how to test this assertion?

Thanks,

Ed


edburns

unread,
Oct 6, 2008, 9:39:33 AM10/6/08
to

> Can someone please tell me how to test this assertion?

I should add that the xpcom component I'm trying to call from my npapi
plugin uses this apporach to register itself:

NS_GENERIC_FACTORY_CONSTRUCTOR(PlugletEngine)

static const nsModuleComponentInfo components[] =
{
{ "PlugletEngine",
PLUGLETENGINE_CID,
PLUGLETENGINE_ContractID,
PlugletEngineConstructor,
PlugletEngineRegistration,
PlugletEngineUnregistration
}
};
NS_IMPL_NSGETMODULE(PlugletEngineModule, components)

Where PlugletEngineRegistration contains:

rv = catman->AddCategoryEntry("xpcom-startup",
"PlugletEngine",
PLUGLETENGINE_ContractID,
PR_TRUE,
PR_TRUE,
&previous);

Perhaps the xpcom-startup trick doesn't work for xpcom components in
an extension?

Ed

Mook

unread,
Oct 6, 2008, 10:08:01 AM10/6/08
to
edburns wrote:
> plugletEngine = do_GetService(PLUGLETENGINE_ContractID, &rv);
> if (NS_SUCCEEDED(rv)) {
> // success code here
> }
>
> I find that the do_GetService fails.
Does
http://developer.mozilla.org/En/Troubleshooting_XPCOM_components_registration
help? Check that the component is registered (by trying to get it
from JS, even if it does nothing useful).

I don't know enough to be able to tell if you need to manually get the
service manager instead of using do_GetService. (To make sure you're
using the right XPCOM component manager - I expect you are...)
http://mxr.mozilla.org/mozilla/source/modules/plugin/tools/sdk/samples/simple/plugin.cpp#82


--
Mook

edburns

unread,
Oct 8, 2008, 11:19:19 AM10/8/08
to

> I don't know enough to be able to tell if you need to manually get the
> service manager instead of using do_GetService.  (To make sure you're
> using the right XPCOM component manager - I expect you are...)http://mxr.mozilla.org/mozilla/source/modules/plugin/tools/sdk/sample...

Thanks Mook, turns out I had a linker problem. My XPCOM component was
packaged in a DLL. This DLL was created with a link line that
included jvm.lib, an import library from the JDK. When firefox tried
to load my DLL, and the OS could not load the jvm.dll on which my DLL
depends (through its inclusion of jvm.lib): due to the directory
containing jvm.dll not being in the PATH, the XPCOM component DLL
failed to load, but there was no error message to that effect.

On #developers, biesi helped me eliminate my link time dependency on
jvm.lib by using GetProcAddress. Now I have the following challenges:


From the function that uses GetProcAddress to load the functions from
jvm.dll, call some code that:

1. Sets the following preferences in a way that they will take effect
on
the currently running browser instance:

user_pref("plugin.allow_alien_star_handler", true);
user_pref("plugin.default_plugin_disabled", false);
user_pref("plugin.override_internal_types", true);

2. Sets the following environment variables:

SET PATH=C:\PROGRA~1\Java\jdk1.6.0\jre\bin\client
SET Path=C:\PROGRA~1\Java\jdk1.6.0\jre\bin\client
SET path=C:\PROGRA~1\Java\jdk1.6.0\jre\bin\client
SET CLASSPATH=F:\Projects\chaff\PLUGLET_DIST\pluglet_workarea\lib
\pluglet-1_1_a2.jar;C:\JMF2.1.1e\lib\jmf.jar;F:\Projects\chaff
\PLUGLET_DIST\pluglet_workarea\netbeans\build\classes

This should take me a long way to having an XPI install of pluglet.

edburns

unread,
Oct 10, 2008, 8:55:42 PM10/10/08
to
Why would this call

nsCOMPtr<nsIProfileInternal> profileMgr
(do_GetService(NS_PROFILE_CONTRACTID, &rv));

return rv == 2147746132 (NS_ERROR_FACTORY_NOT_REGISTERED)

When invoked at the top of this callstack:

PlugletEngine::PopulateClasspath() line 138
PlugletEngine::SatisfyJavaPreconditions() line 150
PlugletEngine::StartJVM() line 281
PlugletEngine::GetJNIEnv(PlugletEngine * const 0x00bf166c, JNIEnv_ * *
0x00125ea4) line 361
PlugletLoader::Initialize() line 62 + 27 bytes
NS_PluginInitialize() line 152
NP_Initialize(_NPNetscapeFuncs * 0x075a1c10 struct _NPNetscapeFuncs
ns4xPlugin::CALLBACKS) line 164
ns4xPlugin::CreatePlugin(nsIServiceManagerObsolete * 0x003fd1d4, const
char * 0x03711570, const char * 0x00000000, PRLibrary * 0x0459fda0,
nsIPlugin * * 0x0371146c) line 780 + 8 bytes
nsPluginHostImpl::GetPluginFactory(nsPluginHostImpl * const
0x0360346c, const char * 0x0759a364, nsIPlugin * * 0x001260b4) line
4674 + 40 bytes
nsPluginHostImpl::SetUpDefaultPluginInstance(const char * 0x045378e8,
nsIURI * 0x03848378, nsIPluginInstanceOwner * 0x036688e8) line 4014 +
65 bytes
nsPluginHostImpl::InstantiateEmbeddedPlugin(nsPluginHostImpl * const
0x0360346c, const char * 0x045378e8, nsIURI * 0x03848378,
nsIPluginInstanceOwner * 0x036688e8) line 3482 + 23 bytes
nsObjectFrame::InstantiatePlugin(nsPresContext * 0x0377ed40,
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...},
nsIPluginHost * 0x0360346c, const char * 0x045378e8, nsIURI *
0x03848378) line 1366 + 27 bytes
nsObjectFrame::Reflow(nsObjectFrame * const 0x0385d5d8, nsPresContext
* 0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 1239 + 51 bytes
nsLineLayout::ReflowFrame(nsIFrame * 0x0385d5d8, unsigned int & 0,


[Rest of callstack included below]

I tried having nsIProfile be the nsCOMPtr type and got the same
result.

Any ideas?


nsHTMLReflowMetrics * 0x00000000, int & 0) line 995 + 43 bytes
nsBlockFrame::ReflowInlineFrame(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, nsIFrame *
0x0385d5d8, unsigned char * 0x00126aeb) line 4058 + 22 bytes
nsBlockFrame::DoReflowInlineFrames(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, int * 0x00126eb0,
unsigned char * 0x00126bf3, int 0, int 0, int 1) line 3897 + 32 bytes
nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x00126eb0, int 0, int 0) line
3778 + 50 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x00126eb0, int 0) line 2771 +
37 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}, int 1) line
2301 + 35 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x0385d480, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 903 + 17 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 1,
nsCollapsingMargin & {...}, int 0, int 0, nsMargin & {...},
nsHTMLReflowState & {...}, unsigned int & 0) line 605 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...},
nsLineList_iterator {...}, int * 0x00127b18) line 3492 + 66 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x00127b18, int 0) line 2651 +
27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}, int 1) line
2301 + 35 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x0385d050, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 903 + 17 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 1,
nsCollapsingMargin & {...}, int 0, int 0, nsMargin & {...},
nsHTMLReflowState & {...}, unsigned int & 0) line 605 + 42 bytes
nsBlockFrame::ReflowFloat(nsBlockReflowState & {...},
nsPlaceholderFrame * 0x0385d0a4, nsFloatCache * 0x03668850, unsigned
int & 0) line 6029 + 54 bytes
nsBlockReflowState::FlowAndPlaceFloat(nsFloatCache * 0x03668850, int *
0x001285f4, unsigned int & 0, int 0) line 853
nsBlockReflowState::AddFloat(nsLineLayout & {...}, nsPlaceholderFrame
* 0x0385d0a4, int 0, unsigned int & 0) line 634 + 24 bytes
nsLineLayout::AddFloat(nsPlaceholderFrame * 0x0385d0a4, unsigned int &
0) line 261
nsLineLayout::ReflowFrame(nsIFrame * 0x0385d0a4, unsigned int & 0,
nsHTMLReflowMetrics * 0x00000000, int & 0) line 1017 + 22 bytes
nsBlockFrame::ReflowInlineFrame(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, nsIFrame *
0x0385d0a4, unsigned char * 0x0012889f) line 4058 + 22 bytes
nsBlockFrame::DoReflowInlineFrames(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, int * 0x00128c64,
unsigned char * 0x001289a7, int 0, int 0, int 1) line 3897 + 32 bytes
nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x00128c64, int 0, int 0) line
3778 + 50 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x00128c64, int 0) line 2771 +
37 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}, int 1) line
2301 + 35 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x044bea88, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 903 + 17 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 1,
nsCollapsingMargin & {...}, int 0, int 0, nsMargin & {...},
nsHTMLReflowState & {...}, unsigned int & 0) line 605 + 42 bytes
nsBlockFrame::ReflowFloat(nsBlockReflowState & {...},
nsPlaceholderFrame * 0x044beadc, nsFloatCache * 0x036687b8, unsigned
int & 0) line 6029 + 54 bytes
nsBlockReflowState::FlowAndPlaceFloat(nsFloatCache * 0x036687b8, int *
0x00129740, unsigned int & 0, int 0) line 853
nsBlockReflowState::AddFloat(nsLineLayout & {...}, nsPlaceholderFrame
* 0x044beadc, int 0, unsigned int & 0) line 634 + 24 bytes
nsLineLayout::AddFloat(nsPlaceholderFrame * 0x044beadc, unsigned int &
0) line 261
nsLineLayout::ReflowFrame(nsIFrame * 0x044beadc, unsigned int & 0,
nsHTMLReflowMetrics * 0x00000000, int & 0) line 1017 + 22 bytes
nsBlockFrame::ReflowInlineFrame(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, nsIFrame *
0x044beadc, unsigned char * 0x001299eb) line 4058 + 22 bytes
nsBlockFrame::DoReflowInlineFrames(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, int * 0x00129db0,
unsigned char * 0x00129af3, int 0, int 0, int 1) line 3897 + 32 bytes
nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x00129db0, int 0, int 0) line
3778 + 50 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x00129db0, int 0) line 2771 +
37 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}, int 1) line
2301 + 35 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x044be2a0, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 903 + 17 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 1,
nsCollapsingMargin & {...}, int 0, int 0, nsMargin & {...},
nsHTMLReflowState & {...}, unsigned int & 0) line 605 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...},
nsLineList_iterator {...}, int * 0x0012aa18) line 3492 + 66 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x0012aa18, int 0) line 2651 +
27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}, int 1) line
2301 + 35 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x036ae214, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 903 + 17 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 1,
nsCollapsingMargin & {...}, int 0, int 1, nsMargin & {...},
nsHTMLReflowState & {...}, unsigned int & 0) line 605 + 42 bytes
nsBlockFrame::ReflowFloat(nsBlockReflowState & {...},
nsPlaceholderFrame * 0x036ae268, nsFloatCache * 0x037bc5d8, unsigned
int & 0) line 6029 + 54 bytes
nsBlockReflowState::FlowAndPlaceFloat(nsFloatCache * 0x037bc5d8, int *
0x0012b4f4, unsigned int & 0, int 0) line 853
nsBlockReflowState::AddFloat(nsLineLayout & {...}, nsPlaceholderFrame
* 0x036ae268, int 0, unsigned int & 0) line 634 + 24 bytes
nsLineLayout::AddFloat(nsPlaceholderFrame * 0x036ae268, unsigned int &
0) line 261
nsLineLayout::ReflowFrame(nsIFrame * 0x036ae268, unsigned int & 0,
nsHTMLReflowMetrics * 0x00000000, int & 0) line 1017 + 22 bytes
nsBlockFrame::ReflowInlineFrame(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, nsIFrame *
0x036ae268, unsigned char * 0x0012b79f) line 4058 + 22 bytes
nsBlockFrame::DoReflowInlineFrames(nsBlockReflowState & {...},
nsLineLayout & {...}, nsLineList_iterator {...}, int * 0x0012bb64,
unsigned char * 0x0012b8a7, int 0, int 1, int 1) line 3897 + 32 bytes
nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x0012bb64, int 1, int 0) line
3778 + 50 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x0012bb64, int 1) line 2771 +
37 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}, int 1) line
2301 + 35 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x036ad454, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 903 + 17 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 1,
nsCollapsingMargin & {...}, int 0, int 1, nsMargin & {...},
nsHTMLReflowState & {...}, unsigned int & 0) line 605 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...},
nsLineList_iterator {...}, int * 0x0012c7cc) line 3492 + 66 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...},
nsLineList_iterator {...}, int 1, int * 0x0012c7cc, int 1) line 2651 +
27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}, int 1) line
2301 + 35 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x035ca3c4, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 903 + 17 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x035ca3c4, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 905 + 31
bytes
CanvasFrame::Reflow(CanvasFrame * const 0x053b6cf0, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 536
nsContainerFrame::ReflowChild(nsIFrame * 0x053b6cf0, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, int 0, int 0, unsigned int 3, unsigned int & 0) line 905 + 31
bytes
nsHTMLScrollFrame::ReflowScrolledFrame(const ScrollReflowState &
{...}, int 0, int 1, nsHTMLReflowMetrics * 0x0012d0c0, int 1) line 515
+ 54 bytes
nsHTMLScrollFrame::ReflowContents(ScrollReflowState * 0x0012d268,
const nsHTMLReflowMetrics & {...}) line 570 + 27 bytes
nsHTMLScrollFrame::Reflow(nsHTMLScrollFrame * const 0x053b6e34,
nsPresContext * 0x0377ed40, nsHTMLReflowMetrics & {...}, const
nsHTMLReflowState & {...}, unsigned int & 0) line 768 + 16 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x053b6e34, nsPresContext *
0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 905 + 31
bytes
ViewportFrame::Reflow(ViewportFrame * const 0x053b6c60, nsPresContext
* 0x0377ed40, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 239 + 43 bytes
IncrementalReflow::Dispatch(nsPresContext * 0x0377ed40,
nsHTMLReflowMetrics & {...}, const nsSize & {...}, nsIRenderingContext
& {...}) line 912
PresShell::ProcessReflowCommands(int 0) line 6928
PresShell::FlushPendingNotifications(PresShell * const 0x03862d28,
mozFlushType Flush_Layout) line 5391
nsDocument::FlushPendingNotifications(mozFlushType Flush_Layout) line
4325
nsHTMLDocument::FlushPendingNotifications(mozFlushType Flush_Layout)
line 1311
nsHTMLExternalObjSH::GetPluginInstance(nsIXPConnectWrappedNative *
0x038d1208, nsIPluginInstance * * 0x0012d8a0) line 8796
nsHTMLExternalObjSH::PostCreate(nsHTMLExternalObjSH * const
0x045df8b0, nsIXPConnectWrappedNative * 0x038d1208, JSContext *
0x033e5008, JSObject * 0x0378de58) line 8855 + 36 bytes
XPCWrappedNative::GetNewOrUsed(XPCCallContext & {...}, nsISupports *
0x035aaa10, XPCWrappedNativeScope * 0x0349f498, XPCNativeInterface *
0x00c9c430, int 0, XPCWrappedNative * * 0x0012da74) line 466 + 69
bytes
XPCConvert::NativeInterface2JSObject(XPCCallContext & {...},
nsIXPConnectJSObjectHolder * * 0x0012db84, nsISupports * 0x035aaa10,
const nsID * 0x02147a90 iid_NS_ISUPPORTS_IID, JSObject * 0x033a8870,
int 0, int 0, unsigned int * 0x0012db44) line 1078 + 34 bytes
nsXPConnect::WrapNative(nsXPConnect * const 0x00c4b0d8, JSContext *
0x033e5008, JSObject * 0x033a8870, nsISupports * 0x035aaa10, const
nsID & {...}, nsIXPConnectJSObjectHolder * * 0x0012db84) line 595 + 36
bytes
nsDOMClassInfo::WrapNative(JSContext * 0x033e5008, JSObject *
0x0378de90, nsISupports * 0x035aaa10, const nsID & {...}, long *
0x0012e55c, nsIXPConnectJSObjectHolder * * 0x0012dbbc) line 1413 + 70
bytes
nsArraySH::GetProperty(nsArraySH * const 0x034bdaf8,
nsIXPConnectWrappedNative * 0x036d7628, JSContext * 0x033e5008,
JSObject * 0x0378de90, long 1, long * 0x0012e55c, int * 0x0012dc4c)
line 7134 + 56 bytes
nsNamedArraySH::GetProperty(nsNamedArraySH * const 0x034bdaf8,
nsIXPConnectWrappedNative * 0x036d7628, JSContext * 0x033e5008,
JSObject * 0x0378de90, long 1, long * 0x0012e55c, int * 0x0012dc4c)
line 7184
XPC_WN_Helper_GetProperty(JSContext * 0x033e5008, JSObject *
0x0378de90, long 1, long * 0x0012e55c) line 952 + 47 bytes
js_NativeGet(JSContext * 0x033e5008, JSObject * 0x0378de90, JSObject *
0x0378de90, JSScopeProperty * 0x0331bff0, long * 0x0012e55c) line 3409
+ 234 bytes
js_GetProperty(JSContext * 0x033e5008, JSObject * 0x0378de90, long 1,
long * 0x0012e55c) line 3556 + 25 bytes
js_Interpret(JSContext * 0x033e5008, unsigned char * 0x04c3bd29, long
* 0x0012e644) line 3733 + 1654 bytes
js_Execute(JSContext * 0x033e5008, JSObject * 0x033a8870, JSScript *
0x04c3bce0, JSStackFrame * 0x00000000, unsigned int 0, long *
0x0012e754) line 1654 + 19 bytes
JS_EvaluateUCScriptForPrincipals(JSContext * 0x033e5008, JSObject *
0x033a8870, JSPrincipals * 0x0353a2cc, const unsigned short *
0x036dda40, unsigned int 986, const char * 0x04cfff68, unsigned int
45, long * 0x0012e754) line 4301 + 25 bytes
nsJSContext::EvaluateString(const nsAString_internal & {...}, void *
0x033a8870, nsIPrincipal * 0x0353a2c8, const char * 0x04cfff68,
unsigned int 45, const char * 0x00000000, nsAString_internal *
0x00000000, int * 0x0012e7b8) line 1100 + 67 bytes
nsScriptLoader::EvaluateScript(nsScriptLoadRequest * 0x0531da50, const
nsString & {...}) line 810 + 83 bytes
nsScriptLoader::ProcessRequest(nsScriptLoadRequest * 0x0531da50) line
711 + 22 bytes
nsScriptLoader::DoProcessScriptElement(nsIScriptElement * 0x035e49ec,
nsIScriptLoaderObserver * 0x035e49e8, int * 0x0012edd4) line 644 + 23
bytes
nsScriptLoader::ProcessScriptElement(nsScriptLoader * const
0x03653890, nsIScriptElement * 0x035e49ec, nsIScriptLoaderObserver *
0x035e49e8) line 395 + 20 bytes
nsHTMLScriptElement::MaybeProcessScript() line 659 + 118 bytes
nsHTMLScriptElement::BindToTree(nsIDocument * 0x036f1538, nsIContent *
0x048c1ec0, nsIContent * 0x00000000, int 1) line 456
nsGenericElement::AppendChildTo(nsIContent * 0x035e49c8, int 0) line
2873 + 23 bytes
HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode & {...}) line
4174
HTMLContentSink::AddLeaf(HTMLContentSink * const 0x0490f0d8, const
nsIParserNode & {...}) line 3038 + 15 bytes
CNavDTD::AddLeaf(const nsIParserNode * 0x0459c528) line 3572 + 25
bytes
CNavDTD::HandleScriptToken(const nsIParserNode * 0x0459c528) line 2177
+ 12 bytes
CNavDTD::OpenContainer(const nsCParserNode * 0x0459c528, nsHTMLTag
eHTMLTag_script, int 1, nsEntryStack * 0x00000000) line 3225 + 12
bytes
CNavDTD::HandleDefaultStartToken(CToken * 0x038296e8, nsHTMLTag
eHTMLTag_script, nsCParserNode * 0x0459c528) line 1281 + 20 bytes
CNavDTD::HandleStartToken(CToken * 0x038296e8) line 1668 + 20 bytes
CNavDTD::HandleToken(CNavDTD * const 0x038d2b58, CToken * 0x00000000,
nsIParser * 0x035c42a8) line 955 + 12 bytes
CNavDTD::BuildModel(CNavDTD * const 0x038d2b58, nsIParser *
0x035c42a8, nsITokenizer * 0x0368d0c8, nsITokenObserver * 0x00000000,
nsIContentSink * 0x0490f0d8) line 458 + 20 bytes
nsParser::BuildModel(nsParser * const 0x035c42a8) line 2164 + 34 bytes
nsParser::ResumeParse(int 1, int 1, int 1) line 2031 + 12 bytes
nsParser::ContinueInterruptedParsing(nsParser * const 0x035c42a8) line
1480 + 19 bytes
nsContentSink::ScriptEvaluated(nsContentSink * const 0x0490f08c,
unsigned int 0, nsIScriptElement * 0x0359b3ac, int 0, int 1) line 279
nsScriptLoaderObserverProxy::ScriptEvaluated(nsScriptLoaderObserverProxy
* const 0x034ac038, unsigned int 0, nsIScriptElement * 0x0359b3ac, int
0, int 1) line 134 + 39 bytes
nsScriptLoader::FireScriptEvaluated(unsigned int 0,
nsScriptLoadRequest * 0x035254d0) line 749
nsScriptLoader::ProcessRequest(nsScriptLoadRequest * 0x035254d0) line
714
nsScriptLoader::OnStreamComplete(nsScriptLoader * const 0x03653894,
nsIStreamLoader * 0x045a3918, nsISupports * 0x035254d0, unsigned int
0, unsigned int 28036, const unsigned char * 0x04906790) line 1093
nsStreamLoader::OnStopRequest(nsStreamLoader * const 0x045a391c,
nsIRequest * 0x035d7330, nsISupports * 0x035254d0, unsigned int 0)
line 137
nsFileChannel::OnStopRequest(nsFileChannel * const 0x035d7338,
nsIRequest * 0x04644b08, nsISupports * 0x00000000, unsigned int 0)
line 549
nsInputStreamPump::OnStateStop() line 564
nsInputStreamPump::OnInputStreamReady(nsInputStreamPump * const
0x04644b0c, nsIAsyncInputStream * 0x035d74c0) line 400 + 11 bytes
nsInputStreamReadyEvent::EventHandler(PLEvent * 0x03787744) line 121
PL_HandleEvent(PLEvent * 0x03787744) line 688 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00c61cc0) line 623 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x000e036e, unsigned int 49586,
unsigned int 0, long 12983488) line 1408 + 9 bytes
USER32! 7e418734()
USER32! 7e418816()
USER32! 7e4189cd()
USER32! 7e418a10()
nsAppShell::Run(nsAppShell * const 0x00c834f0) line 135
nsAppStartup::Run(nsAppStartup * const 0x00c83430) line 151 + 26 bytes
XRE_main(int 1, char * * 0x003f79c8, const nsXREAppData * 0x0042401c
kAppData) line 2695 + 35 bytes
main(int 1, char * * 0x003f79c8) line 61 + 18 bytes
mainCRTStartup() line 338 + 17 bytes
KERNEL32! 7c817067()

Benjamin Smedberg

unread,
Oct 20, 2008, 8:46:21 AM10/20/08
to
edburns wrote:
> Why would this call
>
> nsCOMPtr<nsIProfileInternal> profileMgr
> (do_GetService(NS_PROFILE_CONTRACTID, &rv));
>
> return rv == 2147746132 (NS_ERROR_FACTORY_NOT_REGISTERED)
>
> When invoked at the top of this callstack:

Because nsIProfile/nsIProfileInternal are not implemented in Firefox (and
are in fact removed from the codebase). They haven't worked since well
before Firefox 1.0

--BDS

0 new messages