Initial checkin

git-svn-id: svn://10.0.0.236/trunk@19353 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rods%netscape.com 1999-02-02 18:37:20 +00:00
parent 58cccc3007
commit beddf1b292
43 changed files with 5329 additions and 267 deletions

View File

@ -1,43 +1,25 @@
<html>
<head>
<title> SilentDownload Test Page</title>
<title> AppProcesses Test Page</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
var task = SilentDownloadManager.Find("Silent Download Task 1");
var appCore = AppProcessesManager.Find("MailAppCore");
if (task==null)
if (appCore==null)
{
alert("\nSD: Task Not Found - New Task");
dump("\nAppProcess: Process Not Found - New Process");
task = new SilentDownloadTask();
task.Init( "Silent Download Task 1",
"http://grok/u/dougt/silentdl/tests/sol.exe",
"http://warp/u/dougt/silentdl/tests/sol.html");
appCore = new MailProcess();
if (appCore == null) {
dump("\nnAppProcess: Process was null");
} else {
appCore.Init("MailAppCore");
dump("\nnAppProcess: Process was created");
}
}
switch (task.state)
{
case SilentDownloadTask.SDL_NOT_INITED:
case SilentDownloadTask.SDL_NOT_ADDED:
case SilentDownloadTask.SDL_STARTED:
case SilentDownloadTask.SDL_SUSPENDED:
case SilentDownloadTask.SDL_DOWNLOADING_NOW:
case SilentDownloadTask.SDL_ERROR:
break;
case SilentDownloadTask.SDL_COMPLETED:
alert("\nSD: Task Complete");
break;
}
// -->
</SCRIPT>

View File

@ -1,238 +0,0 @@
<html>
<head>
<script LANGUAGE="JavaScript">
<!--
function ClearForm(form)
{
form.id.value = "";
form.url.value = "";
form.script.value = "";
form.state.value = "";
form.next_byte.value = "";
form.outFile.value = "";
form.errorMsg.value = "";
}
function DisplayTask(form)
{
var task = SilentDownloadManager.Find(form.id.value);
if (task==null)
{
ClearForm(form);
}
else
{
form.id.value = task.id;
form.url.value = task.url;
form.script.value = task.script;
if (task.state == SilentDownloadTask.SDL_NOT_INITED)
{
form.state.value = "SDL_NOT_INITED";
}
else if (task.state == SilentDownloadTask.SDL_NOT_ADDED)
{
form.state.value = "SDL_NOT_ADDED";
}
else if (task.state == SilentDownloadTask.SDL_STARTED)
{
form.state.value = "SDL_STARTED";
}
else if (task.state == SilentDownloadTask.SDL_SUSPENDED)
{
form.state.value = "SDL_SUSPENDED";
}
else if (task.state == SilentDownloadTask.SDL_COMPLETED)
{
form.state.value = "SDL_COMPLETED";
}
else if (task.state == SilentDownloadTask.SDL_DOWNLOADING_NOW)
{
form.state.value = "SDL_DOWNLOADING_NOW";
}
else if (task.state == SilentDownloadTask.SDL_ERROR)
{
form.state.value = "SDL_ERROR";
}
form.next_byte.value = task.nextByte;
form.outFile.value = task.outFile;
form.errorMsg.value = task.errorMsg;
}
}
function AddTask(form)
{
task = new SilentDownloadTask();
task.Init( form.id.value,
form.url.value,
form.script.value);
// SilentDownloadManager.Add(task);
FindTask(form);
}
function FindTask(form)
{
var task = SilentDownloadManager.Find(form.id.value);
if (task==null)
{
ClearForm(form);
alert("\nTask Not Found.");
}
else
{
DisplayTask(form);
}
}
function RemoveTask(form)
{
var task = SilentDownloadManager.Find(form.id.value);
if (task==null)
{
alert("\nTask Not Found.");
}
else
{
task.Remove();
// SilentDownloadManager.Remove(task);
ClearForm(form);
}
}
function SuspendTask(form)
{
var task = SilentDownloadManager.Find(form.id.value);
if (task==null)
{
alert("\nTask Not Found.");
}
else
{
task.Suspend();
DisplayTask(form);
}
}
function ResumeTask(form)
{
var task = SilentDownloadManager.Find(form.id.value);
if (task==null)
{
alert("\nTask Not Found.");
}
else
{
task.Resume();
DisplayTask(form);
}
}
function DownloadloadTaskNow(form)
{
var task = SilentDownloadManager.Find(form.id.value);
if (task==null)
{
alert("\nTask Not Found.");
}
else
{
task.DownloadNow();
DisplayTask(form);
}
}
// End -->
</script>
</head>
<body>
<center>
<p><form ENCTYPE="text/plain" onSubmit="return submitForms()"></center>
<center><table BORDER=2>
<tr>
<td ALIGN=CENTER><b>ID:</b></td>
<td ALIGN=CENTER><input TYPE="text" NAME="id" SIZE=60 MAXLENGTH=120 ></td>
</tr>
<tr>
<td ALIGN=CENTER><b>URL:</b></td>
<td ALIGN=CENTER><input TYPE="text" NAME="url" SIZE=60 MAXLENGTH=120 ></td>
</tr>
<tr>
<td ALIGN=CENTER><b>Script:</b></td>
<td ALIGN=CENTER><input TYPE="text" NAME="script" SIZE=60 MAXLENGTH=120></td>
</tr>
</table>
<center><table BORDER=2>
<tr>
<td ALIGN=CENTER><b>State:</b></td>
<td ALIGN=CENTER><input TYPE="text" NAME="state" SIZE=60 MAXLENGTH=120></td>
</tr>
<tr>
<td ALIGN=CENTER><b>Next Byte:</b></td>
<td ALIGN=CENTER><input TYPE="text" NAME="next_byte" SIZE=60 MAXLENGTH=120></td>
</tr>
<tr>
<td ALIGN=CENTER><b>Out File:</b></td>
<td ALIGN=CENTER><input TYPE="text" NAME="outFile" SIZE=60 MAXLENGTH=120></td>
</tr>
<tr>
<td ALIGN=CENTER><b>Error Message:</b></td>
<td ALIGN=CENTER><input TYPE="text" NAME="errorMsg" SIZE=60 MAXLENGTH=120></td>
</tr>
</table></center>
<center>
<p>
<table BORDER=0>
<td ALIGN=CENTER><input TYPE=BUTTON VALUE="Add Task " onClick="AddTask(this.form)"></td>
<td ALIGN=CENTER><input TYPE=BUTTON VALUE="Find Task" onClick="FindTask(this.form)"></td>
<td ALIGN=CENTER><input TYPE=BUTTON VALUE="Remove Task" onClick="RemoveTask(this.form)"</td>
</table>
<table BORDER=0>
<td ALIGN=CENTER><input TYPE=BUTTON VALUE="Suspend Task " onClick="SuspendTask(this.form)"></td>
<td ALIGN=CENTER><input TYPE=BUTTON VALUE="Resume Task" onClick="ResumeTask(this.form)"></td>
<td ALIGN=CENTER><input TYPE=BUTTON VALUE="Download Task Now" onClick="DownloadloadTaskNow(this.form)"</td>
</table>
<BR><input TYPE=BUTTON VALUE="Clear Form" onClick="ClearForm(this.form)">
</form>
</center>
</body>
</html>

View File

@ -0,0 +1,10 @@
#
# This is a list of local files which get copied to the mozilla:dist:appcores directory
#
nsIDOMAppCores.h
nsIDOMBaseAppCore.h
nsIDOMMailCore.h
nsIDOMToolbarCore.h
nsIDOMBrowserApprCore.h
nsAppCoresCIDs.h

View File

@ -0,0 +1,33 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
DEPTH = ..
topsrcdir = @top_srcdir@
VPATH = @srcdir@
srcdir = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = silentdl
LIBRARY_NAME = silentdl
EXPORTS = nsSilentDownload.h nsIDOMSilentDownloadTask.h nsIDOMSilentDownload.h
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
include $(topsrcdir)/config/rules.mk

View File

@ -0,0 +1,13 @@
interface AppCores
{
/* IID: { 0x18c2f981, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}} */
void Startup();
void Shutdown();
void Add(in BaseAppCore appcore);
void Remove(in BaseAppCore appcore);
BaseAppCore Find(in wstring id);
};

View File

@ -0,0 +1,14 @@
interface BaseAppCore
{
/* IID: { 0xbe5c13bd, 0xba9f, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56}} */
readonly attribute wstring id;
void BaseAppCore();
void Init(in wstring id);
};

View File

@ -0,0 +1,19 @@
interface BrowserAppCore : BaseAppCore
{
/* IID: { 0xb0ffb697, 0xbab4, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56}} */
void BrowserAppCore();
void back();
void forward();
void loadUrl(in wstring url);
void setToolbarWindow(in Window win);
void setContentWindow(in Window win);
void disableCallback(in wstring script);
void enableCallback(in wstring script);
};

View File

@ -0,0 +1,14 @@
interface MailCore : BaseAppCore
{
/* IID: { 0x18c2f980, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}} */
void MailCore();
void SendMail(in wstring addrTo, in wstring subject, in wstring msg);
void MailCompleteCallback(in wstring script);
void SetWindow(in Window win);
};

View File

@ -0,0 +1,13 @@
interface ToolbarCore : BaseAppCore
{
/* IID: { 0xbf4ae23e, 0xba9b, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56}} */
void ToolbarCore();
void SetWindow(in Window win);
void SetStatus(in wstring msg);
};

View File

@ -0,0 +1,95 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=..\..
IGNORE_MANIFEST=1
MAKE_OBJ_TYPE = DLL
MODULE=appcores
DLL=.\$(OBJDIR)\$(MODULE).dll
DEFINES=-D_IMPL_NS_DOM -DWIN32_LEAN_AND_MEAN
LCFLAGS = \
$(LCFLAGS) \
$(DEFINES) \
$(NULL)
LINCS= \
-I$(XPDIST)\public\js \
-I$(XPDIST)\public\netlib \
-I$(XPDIST)\public\network \
-I$(XPDIST)\public\dom \
-I$(XPDIST)\public\xpcom \
-I$(XPDIST)\public\util \
-I$(XPDIST)\public\nspr2 \
-I$(XPDIST)\public\pref \
-I$(XPDIST)\public\raptor \
$(NULL)
LLIBS = \
$(DIST)\lib\netlib.lib \
$(DIST)\lib\xpcom32.lib \
$(DIST)\lib\xppref32.lib \
$(DIST)\lib\xplib.lib \
$(DIST)\lib\js3250.lib \
$(DIST)\lib\jsdombase_s.lib \
$(DIST)\lib\raptorbase.lib \
$(DIST)\lib\raptorgfxwin.lib \
$(LIBNSPR) \
$(DIST)\lib\libplc21.lib \
$(NULL)
OBJS = \
.\$(OBJDIR)\nsBaseAppCore.obj \
.\$(OBJDIR)\nsMailCore.obj \
.\$(OBJDIR)\nsAppCoresNameSet.obj \
.\$(OBJDIR)\nsToolbarCore.obj \
.\$(OBJDIR)\nsBrowserAppCore.obj \
.\$(OBJDIR)\nsMailCoreFactory.obj \
.\$(OBJDIR)\nsToolbarCoreFactory.obj \
.\$(OBJDIR)\nsBrowserAppCoreFactory.obj \
.\$(OBJDIR)\nsAppCoresManager.obj \
.\$(OBJDIR)\nsAppCoresManagerFactory.obj \
.\$(OBJDIR)\nsJSBaseAppCore.obj \
.\$(OBJDIR)\nsJSAppCores.obj \
.\$(OBJDIR)\nsJSMailCore.obj \
.\$(OBJDIR)\nsJSToolbarCore.obj \
.\$(OBJDIR)\nsJSBrowserAppCore.obj \
.\$(OBJDIR)\nsAppCores.obj \
$(NULL)
EXPORTS= \
nsIDOMAppCores.h \
nsIDOMBaseAppCore.h \
nsIDOMMailCore.h \
nsIDOMToolbarCore.h \
nsIDOMBrowserApprCore.h \
nsAppCoresCIDs.h
include <$(DEPTH)\config\rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(MODULE).dll $(DIST)\bin
$(MAKE_INSTALL) .\$(OBJDIR)\$(MODULE).lib $(DIST)\lib
clobber::
rm -f $(DIST)\lib\$(MODULE).lib
rm -f $(DIST)\bin\$(MODULE).dll

View File

@ -0,0 +1,146 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsAppCoresCIDs.h"
#include "nsAppCoresManagerFactory.h"
#include "nsMailCoreFactory.h"
#include "nsToolbarCoreFactory.h"
#include "nsBrowserAppCoreFactory.h"
#include "nsIFactory.h"
#include "nsRepository.h"
#include "pratom.h"
static PRInt32 gLockCnt = 0;
static PRInt32 gInstanceCnt = 0;
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
static NS_DEFINE_IID(kMailCoreCID, NS_MailCore_CID);
static NS_DEFINE_IID(kToolbarCoreCID, NS_TOOLBARCORE_CID);
static NS_DEFINE_IID(kBrowserAppCoreCID, NS_BROWSERAPPCORE_CID);
static NS_DEFINE_IID(kAppCoresCID, NS_AppCores_CID);
////////////////////////////////////////////////////////////////////////////////
// DLL Entry Points:
////////////////////////////////////////////////////////////////////////////////
extern "C" NS_EXPORT PRBool
NSCanUnload(void)
{
return PRBool (gInstanceCnt == 0 && gLockCnt == 0);
}
extern "C" NS_EXPORT nsresult
NSRegisterSelf(const char *path)
{
printf("*** AppCores is being registered\n");
nsRepository::RegisterFactory(kAppCoresCID, path, PR_TRUE, PR_TRUE);
nsRepository::RegisterFactory(kMailCoreCID, path, PR_TRUE, PR_TRUE);
nsRepository::RegisterFactory(kToolbarCoreCID, path, PR_TRUE, PR_TRUE);
nsRepository::RegisterFactory(kBrowserAppCoreCID, path, PR_TRUE, PR_TRUE);
return NS_OK;
}
extern "C" NS_EXPORT nsresult
NSUnregisterSelf(const char *path)
{
printf("*** AppCores is being unregistered\n");
nsRepository::UnregisterFactory(kAppCoresCID, path);
nsRepository::UnregisterFactory(kMailCoreCID, path);
nsRepository::UnregisterFactory(kToolbarCoreCID, path);
nsRepository::UnregisterFactory(kBrowserAppCoreCID, path);
return NS_OK;
}
extern "C" NS_EXPORT nsresult
NSGetFactory(const nsCID &aClass, nsISupports* serviceMgr, nsIFactory **aFactory)
{
if (aFactory == NULL)
{
return NS_ERROR_NULL_POINTER;
}
*aFactory = NULL;
nsISupports *inst;
if ( aClass.Equals(kAppCoresCID) )
{
inst = new nsAppCoresManagerFactory();
}
else if ( aClass.Equals(kMailCoreCID) )
{
inst = new nsMailCoreFactory();
}
else if ( aClass.Equals(kToolbarCoreCID) )
{
inst = new nsToolbarCoreFactory();
}
else if ( aClass.Equals(kBrowserAppCoreCID) )
{
inst = new nsBrowserAppCoreFactory();
}
else
{
return NS_ERROR_ILLEGAL_VALUE;
}
if (inst == NULL)
{
return NS_ERROR_OUT_OF_MEMORY;
}
nsresult res = inst->QueryInterface(kIFactoryIID, (void**) aFactory);
if (res != NS_OK)
{
delete inst;
}
return res;
}
extern "C" void
IncInstanceCount(){
PR_AtomicIncrement(&gInstanceCnt);
}
extern "C" void
IncLockCount(){
PR_AtomicIncrement(&gLockCnt);
}
extern "C" void
DecInstanceCount(){
PR_AtomicDecrement(&gInstanceCnt);
}
extern "C" void
DecLockCount(){
PR_AtomicDecrement(&gLockCnt);
}

View File

@ -0,0 +1,64 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsAppCores_h___
#define nsAppCores_h___
#include "nsISupports.h"
#include "nsIFactory.h"
#include "nscore.h"
#include "prio.h"
////////////////////////////////////////////////////////////////////////////////
// DLL Entry Points:
////////////////////////////////////////////////////////////////////////////////
extern "C" NS_EXPORT nsresult
NSGetFactory(const nsCID &aClass, nsISupports* serviceMgr, nsIFactory **aFactory);
extern "C" NS_EXPORT PRBool
NSCanUnload(void);
extern "C" NS_EXPORT nsresult
NSRegisterSelf(const char *path);
extern "C" NS_EXPORT nsresult
NSUnregisterSelf(const char *path);
extern "C" void
IncInstanceCount();
extern "C" void
IncLockCount();
extern "C" void
DecInstanceCount();
extern "C" void
DecLockCount();
#endif

View File

@ -0,0 +1,52 @@
#ifndef nsAppCoresCIDs_h___
#define nsAppCoresCIDs_h___
#define NS_AppCores_CID \
{ /* 18c2f982-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f982, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#define NS_AppCoresFactory_CID \
{ /* 18c2f984-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f984, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#define NS_MailCore_CID \
{ /* 18c2f983-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f983, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#define NS_MailCoreFactory_CID \
{ /* 18c2f985-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f985, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#define NS_TOOLBARCORE_CID \
{ /* BF4AE23E-BA9B-11d2-96C4-0060B0FB9956 */ \
0xbf4ae23e, 0xba9b, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56} \
}
#define NS_TOOLBARCORE_FACTORY_CID \
{ /* BF4AE23F-BA9B-11d2-96C4-0060B0FB9956 */ \
00xbf4ae23f, 0xba9b, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56} \
}
#define NS_BROWSERAPPCORE_CID \
{ /* BF4AE23E-BA9B-11d2-96C4-0060B0FB9956 */ \
0x108d75a0, 0xbab5, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56} \
}
#define NS_BROWSERAPPCORE_FACTORY_CID \
{ /* BF4AE23F-BA9B-11d2-96C4-0060B0FB9956 */ \
0x108d759f, 0xbab5, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56} \
}
#endif /* nsAppCoresCIDs_h___ */

View File

@ -0,0 +1,338 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsAppCoresCIDs.h"
#include "nsAppCores.h"
#include "nsAppCoresManager.h"
#include "nsAppCoresNameSet.h"
#include "nscore.h"
#include "nsIFactory.h"
#include "nsISupports.h"
#include "nsRepository.h"
#include "nsIScriptObjectOwner.h"
#include "nsIScriptGlobalObject.h"
#include "pratom.h"
#include "prmem.h"
#include "prio.h"
#include "mkutils.h"
#include "prefapi.h"
#include "nsIURL.h"
#include "nsINetlibURL.h"
#include "nsINetService.h"
#include "nsIInputStream.h"
#include "nsIStreamListener.h"
#include "nsIDOMAppCores.h"
#include "nsIDOMMailCore.h"
/* For Javascript Namespace Access */
#include "nsDOMCID.h"
#include "nsIServiceManager.h"
#include "nsINameSpaceManager.h"
#include "nsIScriptNameSetRegistry.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsIScriptExternalNameSet.h"
#include "nsITimer.h"
#include "nsITimerCallback.h"
#include "nsIBrowserWindow.h"
#include "nsIWebShell.h"
// Globals
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIScriptNameSetRegistryIID, NS_ISCRIPTNAMESETREGISTRY_IID);
static NS_DEFINE_IID(kCScriptNameSetRegistryCID, NS_SCRIPT_NAMESET_REGISTRY_CID);
static NS_DEFINE_IID(kIScriptExternalNameSetIID, NS_ISCRIPTEXTERNALNAMESET_IID);
static NS_DEFINE_IID(kInetServiceIID, NS_INETSERVICE_IID);
static NS_DEFINE_IID(kInetServiceCID, NS_NETSERVICE_CID);
static NS_DEFINE_IID(kInetLibURLIID, NS_INETLIBURL_IID);
static NS_DEFINE_IID(kIStreamListenerIID, NS_ISTREAMLISTENER_IID);
static NS_DEFINE_IID(kBrowserWindowCID, NS_BROWSER_WINDOW_CID);
static NS_DEFINE_IID(kIBrowserWindowIID, NS_IBROWSER_WINDOW_IID);
static NS_DEFINE_IID(kIMailCoreIID, NS_IDOMMAILCORE_IID);
static NS_DEFINE_IID(kIAppCoresIID, NS_IDOMAPPCORES_IID);
static NS_DEFINE_IID(kAppCoresCID, NS_AppCores_CID);
static NS_DEFINE_IID(kMailCoreCID, NS_MailCore_CID);
static NS_DEFINE_IID(kAppCoresFactoryCID, NS_AppCoresFactory_CID);
static NS_DEFINE_IID(kMailCoreFactoryCID, NS_MailCoreFactory_CID);
static SDL_TaskList *gTasks = nsnull;
static SDL_TaskList *gNextReadyTask = nsnull;
/////////////////////////////////////////////////////////////////////////
// nsAppCoresManager
/////////////////////////////////////////////////////////////////////////
nsAppCoresManager::nsAppCoresManager()
{
mScriptObject = nsnull;
IncInstanceCount();
NS_INIT_REFCNT();
}
//--------------------------------------------------------
nsAppCoresManager::~nsAppCoresManager()
{
DecInstanceCount();
}
NS_IMPL_ADDREF(nsAppCoresManager)
NS_IMPL_RELEASE(nsAppCoresManager)
//--------------------------------------------------------
NS_IMETHODIMP
nsAppCoresManager::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL)
{
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kIAppCoresIID) )
{
nsIDOMAppCores* tmp = this;
*aInstancePtr = (void*)tmp;
AddRef();
return NS_OK;
}
else if ( aIID.Equals(kIScriptObjectOwnerIID))
{
nsIScriptObjectOwner* tmp = this;
*aInstancePtr = (void*)tmp;
AddRef();
return NS_OK;
}
else if ( aIID.Equals(kISupportsIID) )
{
nsIDOMAppCores* tmp1 = this;
nsISupports* tmp2 = tmp1;
*aInstancePtr = (void*)tmp2;
AddRef();
return NS_OK;
}
return NS_NOINTERFACE;
}
//--------------------------------------------------------
NS_IMETHODIMP
nsAppCoresManager::GetScriptObject(nsIScriptContext *aContext, void** aScriptObject)
{
nsresult res = NS_OK;
if (nsnull == mScriptObject)
{
nsIScriptGlobalObject *global = aContext->GetGlobalObject();
res = NS_NewScriptAppCores(aContext, (nsISupports *)(nsIDOMAppCores*)this, global, (void**)&mScriptObject);
NS_IF_RELEASE(global);
}
*aScriptObject = mScriptObject;
return res;
}
//--------------------------------------------------------
NS_IMETHODIMP
nsAppCoresManager::SetScriptObject(void *aScriptObject)
{
mScriptObject = aScriptObject;
return NS_OK;
}
//--------------------------------------------------------
NS_IMETHODIMP
nsAppCoresManager::Startup()
{
/***************************************/
/* Add us to the Javascript Name Space */
/***************************************/
nsIScriptNameSetRegistry *registry;
nsresult result = nsServiceManager::GetService(kCScriptNameSetRegistryCID,
kIScriptNameSetRegistryIID,
(nsISupports **)&registry);
if (NS_OK == result)
{
nsAppCoresNameSet* nameSet = new nsAppCoresNameSet();
registry->AddExternalNameSet(nameSet);
/* FIX - do we need to release this service? When we do, it get deleted,and our name is lost. */
}
return result;
}
//--------------------------------------------------------
NS_IMETHODIMP
nsAppCoresManager::Shutdown()
{
return NS_OK;
}
//--------------------------------------------------------
NS_IMETHODIMP
nsAppCoresManager::Add(nsIDOMBaseAppCore* aTask)
{
if (aTask == NULL)
return NS_ERROR_FAILURE;
/* Check to see if we already have this task in our list */
SDL_TaskList *node = gTasks;
nsString nodeIDString;
nsString addIDString;
aTask->GetId(addIDString);
while (node != NULL)
{
node->task->GetId(nodeIDString);
if (nodeIDString == addIDString)
{
/*we already have this ID in our list, ignore */
return NS_OK;
}
node = node->next;
}
/* add the task to our list */
SDL_TaskList* taskNode = (SDL_TaskList*)PR_MALLOC(sizeof(SDL_TaskList));
aTask->AddRef();
taskNode->next = gTasks;
taskNode->task = aTask;
gTasks = taskNode;
/* Lets set the next task to run to this one */
gNextReadyTask = taskNode;
return NS_OK;
}
//--------------------------------------------------------
NS_IMETHODIMP
nsAppCoresManager::Remove(nsIDOMBaseAppCore* aTask)
{
if (aTask == NULL)
return NS_ERROR_FAILURE;
/* Remove from our list */
SDL_TaskList *node = gTasks;
SDL_TaskList *lastnode = gTasks;
nsString nodeIDString;
nsString doomedIDString;
aTask->GetId(doomedIDString);
while (node != NULL)
{
node->task->GetId(nodeIDString);
if (nodeIDString == doomedIDString)
{
/* we want to delete this node */
if (node == gTasks)
{
gTasks = node->next;
}
else
{
lastnode->next = node->next;
}
node->task->Release();
PR_DELETE(node);
break;
}
lastnode = node;
node = node->next;
}
return NS_OK;
}
NS_IMETHODIMP
nsAppCoresManager::Find(const nsString& aId, nsIDOMBaseAppCore** aReturn)
{
*aReturn=nsnull;
SDL_TaskList *node = gTasks;
nsString nodeIDString;
while (node != NULL)
{
node->task->GetId(nodeIDString);
if (nodeIDString == aId)
{
*aReturn = node->task;
node->task->AddRef();
break;
}
node = node->next;
}
return NS_OK;
}

View File

@ -0,0 +1,71 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsAppCoresManager_h___
#define nsAppCoresManager_h___
#include "nscore.h"
#include "nsString.h"
#include "nsISupports.h"
#include "nsIScriptObjectOwner.h"
#include "nsIDOMAppCores.h"
#include "prio.h"
class nsIScriptContext;
class nsIDOMBaseAppCore;
////////////////////////////////////////////////////////////////////////////////
// nsAppCoresManager:
////////////////////////////////////////////////////////////////////////////////
typedef struct _SDL_TaskList SDL_TaskList;
typedef struct _SDL_TaskList
{
nsIDOMBaseAppCore *task;
SDL_TaskList *next;
} SDL_TaskList;
class nsAppCoresManager : public nsIScriptObjectOwner, public nsIDOMAppCores
{
public:
nsAppCoresManager();
~nsAppCoresManager();
NS_DECL_ISUPPORTS
NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
NS_IMETHOD SetScriptObject(void* aScriptObject);
NS_IMETHOD Startup();
NS_IMETHOD Shutdown();
NS_IMETHOD Add(nsIDOMBaseAppCore* aAppcore);
NS_IMETHOD Remove(nsIDOMBaseAppCore* aAppcore);
NS_IMETHOD Find(const nsString& aId, nsIDOMBaseAppCore** aReturn);
private:
void *mScriptObject;
};
#endif // nsAppCoresManager_h___

View File

@ -0,0 +1,129 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsAppCoresManagerFactory.h"
#include "nsAppCoresManager.h"
#include "nsAppCores.h"
#include "pratom.h"
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
/////////////////////////////////////////////////////////////////////////
// nsAppCoresImplFactory
/////////////////////////////////////////////////////////////////////////
nsAppCoresManagerFactory::nsAppCoresManagerFactory(void)
{
mRefCnt=0;
IncInstanceCount();
}
nsAppCoresManagerFactory::~nsAppCoresManagerFactory(void)
{
IncInstanceCount();
}
NS_IMETHODIMP
nsAppCoresManagerFactory::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL)
{
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kISupportsIID) )
{
*aInstancePtr = (void*) this;
}
else if ( aIID.Equals(kIFactoryIID) )
{
*aInstancePtr = (void*) this;
}
if (aInstancePtr == NULL)
{
return NS_ERROR_NO_INTERFACE;
}
AddRef();
return NS_OK;
}
NS_IMETHODIMP
nsAppCoresManagerFactory::AddRef(void)
{
return ++mRefCnt;
}
NS_IMETHODIMP
nsAppCoresManagerFactory::Release(void)
{
if (--mRefCnt ==0)
{
delete this;
return 0; // Don't access mRefCnt after deleting!
}
return mRefCnt;
}
NS_IMETHODIMP
nsAppCoresManagerFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult)
{
if (aResult == NULL)
{
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
/* do I have to use iSupports? */
nsAppCoresManager *inst = new nsAppCoresManager();
if (inst == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsresult result = inst->QueryInterface(aIID, aResult);
if (result != NS_OK)
delete inst;
return result;
}
NS_IMETHODIMP
nsAppCoresManagerFactory::LockFactory(PRBool aLock)
{
if (aLock)
IncLockCount();
else
DecLockCount();
return NS_OK;
}

View File

@ -0,0 +1,47 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsAppCoresManagerFactory_h___
#define nsAppCoresManagerFactory_h___
#include "nsIFactory.h"
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// nsAppCoresManagerFactory:
////////////////////////////////////////////////////////////////////////////////
class nsAppCoresManagerFactory : public nsIFactory
{
public:
nsAppCoresManagerFactory();
~nsAppCoresManagerFactory();
PRBool CanUnload(void);
NS_DECL_ISUPPORTS
NS_IMETHOD CreateInstance(nsISupports *aOuter,
REFNSIID aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
};
#endif // nsAppCoresManagerFactory_h___

View File

@ -0,0 +1,108 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
////////////////////////////////////////////////////////////////////////////////
// nsAppCoresNameSet
////////////////////////////////////////////////////////////////////////////////
#include "nsAppCoresNameSet.h"
#include "nsIScriptContext.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsIDOMAppCores.h"
#include "nsIDOMMailCore.h"
#include "nsIDOMToolbarCore.h"
#include "nsIDOMBrowserAppCore.h"
#include "nsAppCoresCIDs.h"
static NS_DEFINE_IID(kIScriptExternalNameSetIID, NS_ISCRIPTEXTERNALNAMESET_IID);
static NS_DEFINE_IID(kAppCoresCID, NS_AppCores_CID);
static NS_DEFINE_IID(kMailCoreCID, NS_MailCore_CID);
static NS_DEFINE_IID(kToolbarCoreCID, NS_TOOLBARCORE_CID);
static NS_DEFINE_IID(kBrowserAppCoreCID, NS_BROWSERAPPCORE_CID);
nsAppCoresNameSet::nsAppCoresNameSet()
{
NS_INIT_REFCNT();
}
nsAppCoresNameSet::~nsAppCoresNameSet()
{
}
NS_IMPL_ISUPPORTS(nsAppCoresNameSet, kIScriptExternalNameSetIID);
NS_IMETHODIMP
nsAppCoresNameSet::InitializeClasses(nsIScriptContext* aScriptContext)
{
nsresult result = NS_OK;
result = NS_InitAppCoresClass(aScriptContext, nsnull);
if (NS_OK != result) return result;
result = NS_InitMailCoreClass(aScriptContext, nsnull);
result = NS_InitToolbarCoreClass(aScriptContext, nsnull);
result = NS_InitBrowserAppCoreClass(aScriptContext, nsnull);
return result;
}
NS_IMETHODIMP
nsAppCoresNameSet::AddNameSet(nsIScriptContext* aScriptContext)
{
nsresult result = NS_OK;
nsIScriptNameSpaceManager* manager;
result = aScriptContext->GetNameSpaceManager(&manager);
if (NS_OK == result)
{
result = manager->RegisterGlobalName("MailCore",
kMailCoreCID,
PR_TRUE);
if (NS_OK != result) return result;
result = manager->RegisterGlobalName("ToolbarCore",
kToolbarCoreCID,
PR_TRUE);
if (NS_OK != result) return result;
result = manager->RegisterGlobalName("BrowserAppCore",
kBrowserAppCoreCID,
PR_TRUE);
if (NS_OK != result) return result;
result = manager->RegisterGlobalName("AppCoresManager",
kAppCoresCID,
PR_FALSE);
NS_RELEASE(manager);
}
return result;
}

View File

@ -0,0 +1,41 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsAppCoresNameSet_h___
#define nsAppCoresNameSet_h___
#include "nsISupports.h"
#include "nsIScriptExternalNameSet.h"
class nsIScriptContext;
////////////////////////////////////////////////////////////////////////////////
// nsAppCoresNameSet:
////////////////////////////////////////////////////////////////////////////////
class nsAppCoresNameSet : public nsIScriptExternalNameSet
{
public:
nsAppCoresNameSet();
~nsAppCoresNameSet();
NS_DECL_ISUPPORTS
NS_IMETHOD InitializeClasses(nsIScriptContext* aScriptContext);
NS_IMETHOD AddNameSet(nsIScriptContext* aScriptContext);
};
#endif // nsAppCoresNameSet_h___

View File

@ -0,0 +1,180 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsBaseAppCore.h"
#include "nsIScriptContextOwner.h"
#include "nsAppCoresManager.h"
#include "nsIDOMDocument.h"
#include "nsIDOMNode.h"
#include "nsIDOMElement.h"
#include "nsIScriptContext.h"
#include "nsIDOMWindow.h"
#include "nsIDocument.h"
// Globals
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIDOMBaseAppCoreIID, nsIDOMBaseAppCore::IID());
static NS_DEFINE_IID(kIDocumentIID, nsIDocument::IID());
/////////////////////////////////////////////////////////////////////////
// nsBaseAppCore
/////////////////////////////////////////////////////////////////////////
nsBaseAppCore::nsBaseAppCore()
{
mScriptObject = nsnull;
IncInstanceCount();
NS_INIT_REFCNT();
}
nsBaseAppCore::~nsBaseAppCore()
{
DecInstanceCount();
}
NS_IMPL_ADDREF(nsBaseAppCore)
NS_IMPL_RELEASE(nsBaseAppCore)
NS_IMETHODIMP
nsBaseAppCore::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL) {
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kIScriptObjectOwnerIID)) {
*aInstancePtr = (void*) ((nsIScriptObjectOwner*)this);
AddRef();
return NS_OK;
}
if ( aIID.Equals(kIDOMBaseAppCoreIID)) {
*aInstancePtr = (void*) ((nsIDOMBaseAppCore*)this);
AddRef();
return NS_OK;
}
else if ( aIID.Equals(kISupportsIID) ) {
*aInstancePtr = (void*)(nsISupports*)(nsIScriptObjectOwner*)this;
AddRef();
return NS_OK;
}
return NS_NOINTERFACE;
}
NS_IMETHODIMP
nsBaseAppCore::SetScriptObject(void *aScriptObject)
{
mScriptObject = aScriptObject;
return NS_OK;
}
NS_IMETHODIMP
nsBaseAppCore::Init(const nsString& aId)
{
mId = aId;
return NS_OK;
}
NS_IMETHODIMP
nsBaseAppCore::GetId(nsString& aId)
{
aId = mId;
return NS_OK;
}
//----------------------------------------
nsIScriptContext *
nsBaseAppCore::GetScriptContext(nsIDOMWindow * aWin)
{
nsIScriptContext * scriptContext = nsnull;
if (nsnull != aWin) {
nsIDOMDocument * domDoc;
aWin->GetDocument(&domDoc);
if (nsnull != domDoc) {
nsIDocument * doc;
if (NS_OK == domDoc->QueryInterface(kIDocumentIID,(void**)&doc)) {
nsIScriptContextOwner * owner = doc->GetScriptContextOwner();
if (nsnull != owner) {
owner->GetScriptContext(&scriptContext);
NS_RELEASE(owner);
}
NS_RELEASE(doc);
}
NS_RELEASE(domDoc);
}
}
return scriptContext;
}
//----------------------------------------
nsCOMPtr<nsIDOMNode> nsBaseAppCore::FindNamedDOMNode(const nsString &aName, nsIDOMNode * aParent, PRInt32 & aCount, PRInt32 aEndCount)
{
nsCOMPtr<nsIDOMNode> node;
aParent->GetFirstChild(getter_AddRefs(node));
while (node) {
nsString name;
node->GetNodeName(name);
//printf("FindNamedDOMNode[%s] %d == %d\n", nsAutoCString(name), aCount, aEndCount);
if (name.Equals(aName)) {
aCount++;
if (aCount == aEndCount)
return node;
}
PRBool hasChildren;
node->HasChildNodes(&hasChildren);
if (hasChildren) {
nsCOMPtr<nsIDOMNode> found(FindNamedDOMNode(aName, node, aCount, aEndCount));
if (found)
return found;
}
nsCOMPtr<nsIDOMNode> oldNode = node;
oldNode->GetNextSibling(getter_AddRefs(node));
}
node = nsnull;
return node;
} // nsToolbarCore::FindNamedDOMNode
//----------------------------------------
nsCOMPtr<nsIDOMNode> nsBaseAppCore::GetParentNodeFromDOMDoc(nsIDOMDocument * aDOMDoc)
{
nsCOMPtr<nsIDOMNode> node; // null
if (nsnull == aDOMDoc) {
return node;
}
nsCOMPtr<nsIDOMElement> element;
aDOMDoc->GetDocumentElement(getter_AddRefs(element));
if (element)
return nsCOMPtr<nsIDOMNode>(element);
return node;
} // nsToolbarCore::GetParentNodeFromDOMDoc

View File

@ -0,0 +1,63 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsBaseAppCore_h___
#define nsBaseAppCore_h___
#include "nsAppCores.h"
//#include "nscore.h"
#include "nsString.h"
#include "nsISupports.h"
#include "nsIScriptObjectOwner.h"
#include "nsIDOMBaseAppCore.h"
#include "nsCOMPtr.h"
class nsIDOMNode;
class nsIDOMDocument;
class nsIScriptContext;
class nsIDOMWindow;
////////////////////////////////////////////////////////////////////////////////
// nsBaseAppCore:
////////////////////////////////////////////////////////////////////////////////
class nsBaseAppCore : public nsIScriptObjectOwner, public nsIDOMBaseAppCore
{
public:
nsBaseAppCore();
~nsBaseAppCore();
NS_DECL_ISUPPORTS
//NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
NS_IMETHOD SetScriptObject(void* aScriptObject);
NS_IMETHOD Init(const nsString& aId);
NS_IMETHOD GetId(nsString& aId);
protected:
nsCOMPtr<nsIDOMNode> FindNamedDOMNode(const nsString &aName, nsIDOMNode * aParent, PRInt32 & aCount, PRInt32 aEndCount);
nsCOMPtr<nsIDOMNode> GetParentNodeFromDOMDoc(nsIDOMDocument * aDOMDoc);
nsIScriptContext * GetScriptContext(nsIDOMWindow * aWin);
nsString mId; /* User ID */
void *mScriptObject;
};
#endif // nsBaseAppCore_h___

View File

@ -0,0 +1,202 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsBrowserAppCore.h"
#include "nsIBrowserWindow.h"
#include "nsIWebShell.h"
#include "pratom.h"
#include "nsRepository.h"
#include "nsAppCores.h"
#include "nsAppCoresCIDs.h"
#include "nsAppCoresManager.h"
#include "nsIScriptContext.h"
#include "nsIScriptContextOwner.h"
#include "nsIDOMDocument.h"
#include "nsIDocument.h"
#include "nsIDOMWindow.h"
// Globals
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIBrowserAppCoreIID, NS_IDOMBROWSERAPPCORE_IID);
static NS_DEFINE_IID(kIDOMDocumentIID, nsIDOMDocument::IID());
static NS_DEFINE_IID(kIDocumentIID, nsIDocument::IID());
static NS_DEFINE_IID(kBrowserAppCoreCID, NS_BROWSERAPPCORE_CID);
/////////////////////////////////////////////////////////////////////////
// nsBrowserAppCore
/////////////////////////////////////////////////////////////////////////
nsBrowserAppCore::nsBrowserAppCore()
{
printf("Created nsBrowserAppCore\n");
mScriptObject = nsnull;
mToolbarWindow = nsnull;
mToolbarScriptContext = nsnull;
mContentWindow = nsnull;
mContentScriptContext = nsnull;
IncInstanceCount();
NS_INIT_REFCNT();
}
nsBrowserAppCore::~nsBrowserAppCore()
{
NS_IF_RELEASE(mToolbarWindow);
NS_IF_RELEASE(mToolbarScriptContext);
NS_IF_RELEASE(mContentWindow);
NS_IF_RELEASE(mContentScriptContext);
DecInstanceCount();
}
NS_IMPL_ADDREF(nsBrowserAppCore)
NS_IMPL_RELEASE(nsBrowserAppCore)
NS_IMETHODIMP
nsBrowserAppCore::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL) {
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kIBrowserAppCoreIID) ) {
*aInstancePtr = (void*) ((nsIDOMBrowserAppCore*)this);
AddRef();
return NS_OK;
}
return nsBaseAppCore::QueryInterface(aIID, aInstancePtr);
}
NS_IMETHODIMP
nsBrowserAppCore::GetScriptObject(nsIScriptContext *aContext, void** aScriptObject)
{
NS_PRECONDITION(nsnull != aScriptObject, "null arg");
nsresult res = NS_OK;
if (nsnull == mScriptObject)
{
res = NS_NewScriptBrowserAppCore(aContext,
(nsISupports *)(nsIDOMBrowserAppCore*)this,
nsnull,
&mScriptObject);
}
*aScriptObject = mScriptObject;
return res;
}
NS_IMETHODIMP
nsBrowserAppCore::Init(const nsString& aId)
{
nsBaseAppCore::Init(aId);
nsAppCoresManager* sdm = new nsAppCoresManager();
sdm->Add((nsIDOMBaseAppCore *)(nsBaseAppCore *)this);
delete sdm;
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::Back()
{
ExecuteScript(mToolbarScriptContext, mDisableScript);
ExecuteScript(mContentScriptContext, "window.back()");
ExecuteScript(mToolbarScriptContext, mEnableScript);
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::Forward()
{
ExecuteScript(mToolbarScriptContext, mDisableScript);
ExecuteScript(mContentScriptContext, "window.forward()");
ExecuteScript(mToolbarScriptContext, mEnableScript);
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::DisableCallback(const nsString& aScript)
{
mDisableScript = aScript;
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::EnableCallback(const nsString& aScript)
{
mEnableScript = aScript;
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::LoadUrl(const nsString& aUrl)
{
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::SetToolbarWindow(nsIDOMWindow* aWin)
{
mToolbarWindow = aWin;
NS_ADDREF(aWin);
mToolbarScriptContext = GetScriptContext(aWin);
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::SetContentWindow(nsIDOMWindow* aWin)
{
mContentWindow = aWin;
NS_ADDREF(aWin);
mContentScriptContext = GetScriptContext(aWin);
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCore::ExecuteScript(nsIScriptContext * aContext, const nsString& aScript)
{
if (nsnull != aContext) {
const char* url = "";
PRBool isUndefined = PR_FALSE;
nsString rVal;
aContext->EvaluateString(aScript, url, 0, rVal, &isUndefined);
}
return NS_OK;
}

View File

@ -0,0 +1,74 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsBrowserAppCore_h___
#define nsBrowserAppCore_h___
//#include "nsAppCores.h"
#include "nscore.h"
#include "nsString.h"
#include "nsISupports.h"
#include "nsIDOMBrowserAppCore.h"
#include "nsBaseAppCore.h"
class nsIBrowserWindow;
class nsIWebShell;
class nsIScriptContext;
class nsIDOMWindow;
////////////////////////////////////////////////////////////////////////////////
// nsBrowserAppCore:
////////////////////////////////////////////////////////////////////////////////
class nsBrowserAppCore : public nsBaseAppCore,
public nsIDOMBrowserAppCore
{
public:
nsBrowserAppCore();
~nsBrowserAppCore();
NS_DECL_ISUPPORTS
NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
NS_IMETHOD Init(const nsString& aId);
NS_IMETHOD GetId(nsString& aId) { return nsBaseAppCore::GetId(aId); }
NS_IMETHOD Back();
NS_IMETHOD Forward();
NS_IMETHOD LoadUrl(const nsString& aUrl);
NS_IMETHOD SetToolbarWindow(nsIDOMWindow* aWin);
NS_IMETHOD SetContentWindow(nsIDOMWindow* aWin);
NS_IMETHOD DisableCallback(const nsString& aScript);
NS_IMETHOD EnableCallback(const nsString& aScript);
protected:
NS_IMETHOD ExecuteScript(nsIScriptContext * aContext, const nsString& aScript);
nsString mEnableScript;
nsString mDisableScript;
nsIScriptContext *mToolbarScriptContext;
nsIScriptContext *mContentScriptContext;
nsIDOMWindow *mToolbarWindow;
nsIDOMWindow *mContentWindow;
};
#endif // nsBrowserAppCore_h___

View File

@ -0,0 +1,131 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsAppCores.h"
#include "nsBrowserAppCoreFactory.h"
#include "nsBrowserAppCore.h"
#include "pratom.h"
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
/////////////////////////////////////////////////////////////////////////
// nsBrowserAppCoreFactory
/////////////////////////////////////////////////////////////////////////
nsBrowserAppCoreFactory::nsBrowserAppCoreFactory(void)
{
mRefCnt=0;
IncInstanceCount();
}
nsBrowserAppCoreFactory::~nsBrowserAppCoreFactory(void)
{
DecInstanceCount();
}
NS_IMETHODIMP
nsBrowserAppCoreFactory::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL)
{
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kISupportsIID) )
{
*aInstancePtr = (void*) this;
}
else if ( aIID.Equals(kIFactoryIID) )
{
*aInstancePtr = (void*) this;
}
if (aInstancePtr == NULL)
{
return NS_ERROR_NO_INTERFACE;
}
AddRef();
return NS_OK;
}
NS_IMETHODIMP
nsBrowserAppCoreFactory::AddRef(void)
{
return ++mRefCnt;
}
NS_IMETHODIMP
nsBrowserAppCoreFactory::Release(void)
{
if (--mRefCnt ==0)
{
delete this;
return 0; // Don't access mRefCnt after deleting!
}
return mRefCnt;
}
NS_IMETHODIMP
nsBrowserAppCoreFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult)
{
if (aResult == NULL)
{
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
/* do I have to use iSupports? */
nsBrowserAppCore *inst = new nsBrowserAppCore();
if (inst == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsresult result = inst->QueryInterface(aIID, aResult);
if (result != NS_OK)
delete inst;
return result;
}
NS_IMETHODIMP
nsBrowserAppCoreFactory::LockFactory(PRBool aLock)
{
if (aLock)
IncLockCount();
else
DecLockCount();
return NS_OK;
}

View File

@ -0,0 +1,49 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsBrowserAppCoreFactory_h___
#define nsBrowserAppCoreFactory_h___
//#include "nscore.h"
//#include "nsString.h"
#include "nsIFactory.h"
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// nsBrowserAppCoreFactory:
////////////////////////////////////////////////////////////////////////////////
class nsBrowserAppCoreFactory : public nsIFactory
{
public:
nsBrowserAppCoreFactory();
~nsBrowserAppCoreFactory();
PRBool CanUnload(void);
NS_DECL_ISUPPORTS
NS_IMETHOD CreateInstance(nsISupports *aOuter,
REFNSIID aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
};
#endif // nsBrowserAppCoreFactory_h___

View File

@ -0,0 +1,70 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#ifndef nsIDOMAppCores_h__
#define nsIDOMAppCores_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
class nsIDOMBaseAppCore;
#define NS_IDOMAPPCORES_IID \
{ 0x18c2f981, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}}
class nsIDOMAppCores : public nsISupports {
public:
static const nsIID& IID() { static nsIID iid = NS_IDOMAPPCORES_IID; return iid; }
NS_IMETHOD Startup()=0;
NS_IMETHOD Shutdown()=0;
NS_IMETHOD Add(nsIDOMBaseAppCore* aAppcore)=0;
NS_IMETHOD Remove(nsIDOMBaseAppCore* aAppcore)=0;
NS_IMETHOD Find(const nsString& aId, nsIDOMBaseAppCore** aReturn)=0;
};
#define NS_DECL_IDOMAPPCORES \
NS_IMETHOD Startup(); \
NS_IMETHOD Shutdown(); \
NS_IMETHOD Add(nsIDOMBaseAppCore* aAppcore); \
NS_IMETHOD Remove(nsIDOMBaseAppCore* aAppcore); \
NS_IMETHOD Find(const nsString& aId, nsIDOMBaseAppCore** aReturn); \
#define NS_FORWARD_IDOMAPPCORES(_to) \
NS_IMETHOD Startup() { return _to##Startup(); } \
NS_IMETHOD Shutdown() { return _to##Shutdown(); } \
NS_IMETHOD Add(nsIDOMBaseAppCore* aAppcore) { return _to##Add(aAppcore); } \
NS_IMETHOD Remove(nsIDOMBaseAppCore* aAppcore) { return _to##Remove(aAppcore); } \
NS_IMETHOD Find(const nsString& aId, nsIDOMBaseAppCore** aReturn) { return _to##Find(aId, aReturn); } \
extern nsresult NS_InitAppCoresClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptAppCores(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMAppCores_h__

View File

@ -0,0 +1,57 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#ifndef nsIDOMBaseAppCore_h__
#define nsIDOMBaseAppCore_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
#define NS_IDOMBASEAPPCORE_IID \
{ 0xbe5c13bd, 0xba9f, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56}}
class nsIDOMBaseAppCore : public nsISupports {
public:
static const nsIID& IID() { static nsIID iid = NS_IDOMBASEAPPCORE_IID; return iid; }
NS_IMETHOD GetId(nsString& aId)=0;
NS_IMETHOD Init(const nsString& aId)=0;
};
#define NS_DECL_IDOMBASEAPPCORE \
NS_IMETHOD GetId(nsString& aId); \
NS_IMETHOD Init(const nsString& aId); \
#define NS_FORWARD_IDOMBASEAPPCORE(_to) \
NS_IMETHOD GetId(nsString& aId) { return _to##GetId(aId); } \
NS_IMETHOD Init(const nsString& aId) { return _to##Init(aId); } \
extern nsresult NS_InitBaseAppCoreClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptBaseAppCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMBaseAppCore_h__

View File

@ -0,0 +1,79 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#ifndef nsIDOMBrowserAppCore_h__
#define nsIDOMBrowserAppCore_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
#include "nsIDOMBaseAppCore.h"
class nsIDOMWindow;
#define NS_IDOMBROWSERAPPCORE_IID \
{ 0xb0ffb697, 0xbab4, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56}}
class nsIDOMBrowserAppCore : public nsIDOMBaseAppCore {
public:
static const nsIID& IID() { static nsIID iid = NS_IDOMBROWSERAPPCORE_IID; return iid; }
NS_IMETHOD Back()=0;
NS_IMETHOD Forward()=0;
NS_IMETHOD LoadUrl(const nsString& aUrl)=0;
NS_IMETHOD SetToolbarWindow(nsIDOMWindow* aWin)=0;
NS_IMETHOD SetContentWindow(nsIDOMWindow* aWin)=0;
NS_IMETHOD DisableCallback(const nsString& aScript)=0;
NS_IMETHOD EnableCallback(const nsString& aScript)=0;
};
#define NS_DECL_IDOMBROWSERAPPCORE \
NS_IMETHOD Back(); \
NS_IMETHOD Forward(); \
NS_IMETHOD LoadUrl(const nsString& aUrl); \
NS_IMETHOD SetToolbarWindow(nsIDOMWindow* aWin); \
NS_IMETHOD SetContentWindow(nsIDOMWindow* aWin); \
NS_IMETHOD DisableCallback(const nsString& aScript); \
NS_IMETHOD EnableCallback(const nsString& aScript); \
#define NS_FORWARD_IDOMBROWSERAPPCORE(_to) \
NS_IMETHOD Back() { return _to##Back(); } \
NS_IMETHOD Forward() { return _to##Forward(); } \
NS_IMETHOD LoadUrl(const nsString& aUrl) { return _to##LoadUrl(aUrl); } \
NS_IMETHOD SetToolbarWindow(nsIDOMWindow* aWin) { return _to##SetToolbarWindow(aWin); } \
NS_IMETHOD SetContentWindow(nsIDOMWindow* aWin) { return _to##SetContentWindow(aWin); } \
NS_IMETHOD DisableCallback(const nsString& aScript) { return _to##DisableCallback(aScript); } \
NS_IMETHOD EnableCallback(const nsString& aScript) { return _to##EnableCallback(aScript); } \
extern nsresult NS_InitBrowserAppCoreClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptBrowserAppCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMBrowserAppCore_h__

View File

@ -0,0 +1,63 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#ifndef nsIDOMMailCore_h__
#define nsIDOMMailCore_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
#include "nsIDOMBaseAppCore.h"
class nsIDOMWindow;
#define NS_IDOMMAILCORE_IID \
{ 0x18c2f980, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}}
class nsIDOMMailCore : public nsIDOMBaseAppCore {
public:
static const nsIID& IID() { static nsIID iid = NS_IDOMMAILCORE_IID; return iid; }
NS_IMETHOD SendMail(const nsString& aAddrTo, const nsString& aSubject, const nsString& aMsg)=0;
NS_IMETHOD MailCompleteCallback(const nsString& aScript)=0;
NS_IMETHOD SetWindow(nsIDOMWindow* aWin)=0;
};
#define NS_DECL_IDOMMAILCORE \
NS_IMETHOD SendMail(const nsString& aAddrTo, const nsString& aSubject, const nsString& aMsg); \
NS_IMETHOD MailCompleteCallback(const nsString& aScript); \
NS_IMETHOD SetWindow(nsIDOMWindow* aWin); \
#define NS_FORWARD_IDOMMAILCORE(_to) \
NS_IMETHOD SendMail(const nsString& aAddrTo, const nsString& aSubject, const nsString& aMsg) { return _to##SendMail(aAddrTo, aSubject, aMsg); } \
NS_IMETHOD MailCompleteCallback(const nsString& aScript) { return _to##MailCompleteCallback(aScript); } \
NS_IMETHOD SetWindow(nsIDOMWindow* aWin) { return _to##SetWindow(aWin); } \
extern nsresult NS_InitMailCoreClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptMailCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMMailCore_h__

View File

@ -0,0 +1,59 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#ifndef nsIDOMToolbarCore_h__
#define nsIDOMToolbarCore_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
#include "nsIDOMBaseAppCore.h"
class nsIDOMWindow;
#define NS_IDOMTOOLBARCORE_IID \
{ 0xbf4ae23e, 0xba9b, 0x11d2, \
{0x96, 0xc4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56}}
class nsIDOMToolbarCore : public nsIDOMBaseAppCore {
public:
static const nsIID& IID() { static nsIID iid = NS_IDOMTOOLBARCORE_IID; return iid; }
NS_IMETHOD SetWindow(nsIDOMWindow* aWin)=0;
NS_IMETHOD SetStatus(const nsString& aMsg)=0;
};
#define NS_DECL_IDOMTOOLBARCORE \
NS_IMETHOD SetWindow(nsIDOMWindow* aWin); \
NS_IMETHOD SetStatus(const nsString& aMsg); \
#define NS_FORWARD_IDOMTOOLBARCORE(_to) \
NS_IMETHOD SetWindow(nsIDOMWindow* aWin) { return _to##SetWindow(aWin); } \
NS_IMETHOD SetStatus(const nsString& aMsg) { return _to##SetStatus(aMsg); } \
extern nsresult NS_InitToolbarCoreClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptToolbarCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMToolbarCore_h__

View File

@ -0,0 +1,463 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#include "jsapi.h"
#include "nsJSUtils.h"
#include "nscore.h"
#include "nsIScriptContext.h"
#include "nsIJSScriptObject.h"
#include "nsIScriptObjectOwner.h"
#include "nsIScriptGlobalObject.h"
#include "nsIPtr.h"
#include "nsString.h"
#include "nsIDOMBaseAppCore.h"
#include "nsIDOMAppCores.h"
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID);
static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID);
static NS_DEFINE_IID(kIBaseAppCoreIID, NS_IDOMBASEAPPCORE_IID);
static NS_DEFINE_IID(kIAppCoresIID, NS_IDOMAPPCORES_IID);
NS_DEF_PTR(nsIDOMBaseAppCore);
NS_DEF_PTR(nsIDOMAppCores);
/***********************************************************************/
//
// AppCores Properties Getter
//
PR_STATIC_CALLBACK(JSBool)
GetAppCoresProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMAppCores *a = (nsIDOMAppCores*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
/***********************************************************************/
//
// AppCores Properties Setter
//
PR_STATIC_CALLBACK(JSBool)
SetAppCoresProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMAppCores *a = (nsIDOMAppCores*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
//
// AppCores finalizer
//
PR_STATIC_CALLBACK(void)
FinalizeAppCores(JSContext *cx, JSObject *obj)
{
nsJSUtils::nsGenericFinalize(cx, obj);
}
//
// AppCores enumerate
//
PR_STATIC_CALLBACK(JSBool)
EnumerateAppCores(JSContext *cx, JSObject *obj)
{
return nsJSUtils::nsGenericEnumerate(cx, obj);
}
//
// AppCores resolve
//
PR_STATIC_CALLBACK(JSBool)
ResolveAppCores(JSContext *cx, JSObject *obj, jsval id)
{
return nsJSUtils::nsGenericResolve(cx, obj, id);
}
//
// Native method Startup
//
PR_STATIC_CALLBACK(JSBool)
AppCoresStartup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMAppCores *nativeThis = (nsIDOMAppCores*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 0) {
if (NS_OK != nativeThis->Startup()) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function Startup requires 0 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method Shutdown
//
PR_STATIC_CALLBACK(JSBool)
AppCoresShutdown(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMAppCores *nativeThis = (nsIDOMAppCores*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 0) {
if (NS_OK != nativeThis->Shutdown()) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function Shutdown requires 0 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method Add
//
PR_STATIC_CALLBACK(JSBool)
AppCoresAdd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMAppCores *nativeThis = (nsIDOMAppCores*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMBaseAppCorePtr b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
kIBaseAppCoreIID,
"BaseAppCore",
cx,
argv[0])) {
return JS_FALSE;
}
if (NS_OK != nativeThis->Add(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function Add requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method Remove
//
PR_STATIC_CALLBACK(JSBool)
AppCoresRemove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMAppCores *nativeThis = (nsIDOMAppCores*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMBaseAppCorePtr b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
kIBaseAppCoreIID,
"BaseAppCore",
cx,
argv[0])) {
return JS_FALSE;
}
if (NS_OK != nativeThis->Remove(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function Remove requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method Find
//
PR_STATIC_CALLBACK(JSBool)
AppCoresFind(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMAppCores *nativeThis = (nsIDOMAppCores*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMBaseAppCore* nativeRet;
nsAutoString b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
if (NS_OK != nativeThis->Find(b0, &nativeRet)) {
return JS_FALSE;
}
nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval);
}
else {
JS_ReportError(cx, "Function Find requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for AppCores
//
JSClass AppCoresClass = {
"AppCores",
JSCLASS_HAS_PRIVATE,
JS_PropertyStub,
JS_PropertyStub,
GetAppCoresProperty,
SetAppCoresProperty,
EnumerateAppCores,
ResolveAppCores,
JS_ConvertStub,
FinalizeAppCores
};
//
// AppCores class properties
//
static JSPropertySpec AppCoresProperties[] =
{
{0}
};
//
// AppCores class methods
//
static JSFunctionSpec AppCoresMethods[] =
{
{"Startup", AppCoresStartup, 0},
{"Shutdown", AppCoresShutdown, 0},
{"Add", AppCoresAdd, 1},
{"Remove", AppCoresRemove, 1},
{"Find", AppCoresFind, 1},
{0}
};
//
// AppCores constructor
//
PR_STATIC_CALLBACK(JSBool)
AppCores(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
return JS_FALSE;
}
//
// AppCores class initialization
//
nsresult NS_InitAppCoresClass(nsIScriptContext *aContext, void **aPrototype)
{
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
JSObject *proto = nsnull;
JSObject *constructor = nsnull;
JSObject *parent_proto = nsnull;
JSObject *global = JS_GetGlobalObject(jscontext);
jsval vp;
if ((PR_TRUE != JS_LookupProperty(jscontext, global, "AppCores", &vp)) ||
!JSVAL_IS_OBJECT(vp) ||
((constructor = JSVAL_TO_OBJECT(vp)) == nsnull) ||
(PR_TRUE != JS_LookupProperty(jscontext, JSVAL_TO_OBJECT(vp), "prototype", &vp)) ||
!JSVAL_IS_OBJECT(vp)) {
proto = JS_InitClass(jscontext, // context
global, // global object
parent_proto, // parent proto
&AppCoresClass, // JSClass
AppCores, // JSNative ctor
0, // ctor args
AppCoresProperties, // proto props
AppCoresMethods, // proto funcs
nsnull, // ctor props (static)
nsnull); // ctor funcs (static)
if (nsnull == proto) {
return NS_ERROR_FAILURE;
}
}
else if ((nsnull != constructor) && JSVAL_IS_OBJECT(vp)) {
proto = JSVAL_TO_OBJECT(vp);
}
else {
return NS_ERROR_FAILURE;
}
if (aPrototype) {
*aPrototype = proto;
}
return NS_OK;
}
//
// Method for creating a new AppCores JavaScript object
//
extern "C" NS_DOM nsresult NS_NewScriptAppCores(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn)
{
NS_PRECONDITION(nsnull != aContext && nsnull != aSupports && nsnull != aReturn, "null argument to NS_NewScriptAppCores");
JSObject *proto;
JSObject *parent;
nsIScriptObjectOwner *owner;
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
nsresult result = NS_OK;
nsIDOMAppCores *aAppCores;
if (nsnull == aParent) {
parent = nsnull;
}
else if (NS_OK == aParent->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) {
if (NS_OK != owner->GetScriptObject(aContext, (void **)&parent)) {
NS_RELEASE(owner);
return NS_ERROR_FAILURE;
}
NS_RELEASE(owner);
}
else {
return NS_ERROR_FAILURE;
}
if (NS_OK != NS_InitAppCoresClass(aContext, (void **)&proto)) {
return NS_ERROR_FAILURE;
}
result = aSupports->QueryInterface(kIAppCoresIID, (void **)&aAppCores);
if (NS_OK != result) {
return result;
}
// create a js object for this class
*aReturn = JS_NewObject(jscontext, &AppCoresClass, proto, parent);
if (nsnull != *aReturn) {
// connect the native object to the js object
JS_SetPrivate(jscontext, (JSObject *)*aReturn, aAppCores);
}
else {
NS_RELEASE(aAppCores);
return NS_ERROR_FAILURE;
}
return NS_OK;
}

View File

@ -0,0 +1,364 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#include "jsapi.h"
#include "nsJSUtils.h"
#include "nscore.h"
#include "nsIScriptContext.h"
#include "nsIJSScriptObject.h"
#include "nsIScriptObjectOwner.h"
#include "nsIScriptGlobalObject.h"
#include "nsIPtr.h"
#include "nsString.h"
#include "nsIDOMBaseAppCore.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsRepository.h"
#include "nsDOMCID.h"
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID);
static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID);
static NS_DEFINE_IID(kIBaseAppCoreIID, NS_IDOMBASEAPPCORE_IID);
NS_DEF_PTR(nsIDOMBaseAppCore);
//
// BaseAppCore property ids
//
enum BaseAppCore_slots {
BASEAPPCORE_ID = -1
};
/***********************************************************************/
//
// BaseAppCore Properties Getter
//
PR_STATIC_CALLBACK(JSBool)
GetBaseAppCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMBaseAppCore *a = (nsIDOMBaseAppCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case BASEAPPCORE_ID:
{
nsAutoString prop;
if (NS_OK == a->GetId(prop)) {
nsJSUtils::nsConvertStringToJSVal(prop, cx, vp);
}
else {
return JS_FALSE;
}
break;
}
default:
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
/***********************************************************************/
//
// BaseAppCore Properties Setter
//
PR_STATIC_CALLBACK(JSBool)
SetBaseAppCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMBaseAppCore *a = (nsIDOMBaseAppCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
//
// BaseAppCore finalizer
//
PR_STATIC_CALLBACK(void)
FinalizeBaseAppCore(JSContext *cx, JSObject *obj)
{
nsJSUtils::nsGenericFinalize(cx, obj);
}
//
// BaseAppCore enumerate
//
PR_STATIC_CALLBACK(JSBool)
EnumerateBaseAppCore(JSContext *cx, JSObject *obj)
{
return nsJSUtils::nsGenericEnumerate(cx, obj);
}
//
// BaseAppCore resolve
//
PR_STATIC_CALLBACK(JSBool)
ResolveBaseAppCore(JSContext *cx, JSObject *obj, jsval id)
{
return nsJSUtils::nsGenericResolve(cx, obj, id);
}
//
// Native method Init
//
PR_STATIC_CALLBACK(JSBool)
BaseAppCoreInit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBaseAppCore *nativeThis = (nsIDOMBaseAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
if (NS_OK != nativeThis->Init(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function Init requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for BaseAppCore
//
JSClass BaseAppCoreClass = {
"BaseAppCore",
JSCLASS_HAS_PRIVATE,
JS_PropertyStub,
JS_PropertyStub,
GetBaseAppCoreProperty,
SetBaseAppCoreProperty,
EnumerateBaseAppCore,
ResolveBaseAppCore,
JS_ConvertStub,
FinalizeBaseAppCore
};
//
// BaseAppCore class properties
//
static JSPropertySpec BaseAppCoreProperties[] =
{
{"id", BASEAPPCORE_ID, JSPROP_ENUMERATE | JSPROP_READONLY},
{0}
};
//
// BaseAppCore class methods
//
static JSFunctionSpec BaseAppCoreMethods[] =
{
{"Init", BaseAppCoreInit, 1},
{0}
};
//
// BaseAppCore constructor
//
PR_STATIC_CALLBACK(JSBool)
BaseAppCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsresult result;
nsIID classID;
nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx);
nsIScriptNameSpaceManager* manager;
nsIDOMBaseAppCore *nativeThis;
nsIScriptObjectOwner *owner = nsnull;
static NS_DEFINE_IID(kIDOMBaseAppCoreIID, NS_IDOMBASEAPPCORE_IID);
result = context->GetNameSpaceManager(&manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = manager->LookupName("BaseAppCore", PR_TRUE, classID);
NS_RELEASE(manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = nsRepository::CreateInstance(classID,
nsnull,
kIDOMBaseAppCoreIID,
(void **)&nativeThis);
if (NS_OK != result) {
return JS_FALSE;
}
// XXX We should be calling Init() on the instance
result = nativeThis->QueryInterface(kIScriptObjectOwnerIID, (void **)&owner);
if (NS_OK != result) {
NS_RELEASE(nativeThis);
return JS_FALSE;
}
owner->SetScriptObject((void *)obj);
JS_SetPrivate(cx, obj, nativeThis);
NS_RELEASE(owner);
return JS_TRUE;
}
//
// BaseAppCore class initialization
//
nsresult NS_InitBaseAppCoreClass(nsIScriptContext *aContext, void **aPrototype)
{
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
JSObject *proto = nsnull;
JSObject *constructor = nsnull;
JSObject *parent_proto = nsnull;
JSObject *global = JS_GetGlobalObject(jscontext);
jsval vp;
if ((PR_TRUE != JS_LookupProperty(jscontext, global, "BaseAppCore", &vp)) ||
!JSVAL_IS_OBJECT(vp) ||
((constructor = JSVAL_TO_OBJECT(vp)) == nsnull) ||
(PR_TRUE != JS_LookupProperty(jscontext, JSVAL_TO_OBJECT(vp), "prototype", &vp)) ||
!JSVAL_IS_OBJECT(vp)) {
proto = JS_InitClass(jscontext, // context
global, // global object
parent_proto, // parent proto
&BaseAppCoreClass, // JSClass
BaseAppCore, // JSNative ctor
0, // ctor args
BaseAppCoreProperties, // proto props
BaseAppCoreMethods, // proto funcs
nsnull, // ctor props (static)
nsnull); // ctor funcs (static)
if (nsnull == proto) {
return NS_ERROR_FAILURE;
}
}
else if ((nsnull != constructor) && JSVAL_IS_OBJECT(vp)) {
proto = JSVAL_TO_OBJECT(vp);
}
else {
return NS_ERROR_FAILURE;
}
if (aPrototype) {
*aPrototype = proto;
}
return NS_OK;
}
//
// Method for creating a new BaseAppCore JavaScript object
//
extern "C" NS_DOM nsresult NS_NewScriptBaseAppCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn)
{
NS_PRECONDITION(nsnull != aContext && nsnull != aSupports && nsnull != aReturn, "null argument to NS_NewScriptBaseAppCore");
JSObject *proto;
JSObject *parent;
nsIScriptObjectOwner *owner;
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
nsresult result = NS_OK;
nsIDOMBaseAppCore *aBaseAppCore;
if (nsnull == aParent) {
parent = nsnull;
}
else if (NS_OK == aParent->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) {
if (NS_OK != owner->GetScriptObject(aContext, (void **)&parent)) {
NS_RELEASE(owner);
return NS_ERROR_FAILURE;
}
NS_RELEASE(owner);
}
else {
return NS_ERROR_FAILURE;
}
if (NS_OK != NS_InitBaseAppCoreClass(aContext, (void **)&proto)) {
return NS_ERROR_FAILURE;
}
result = aSupports->QueryInterface(kIBaseAppCoreIID, (void **)&aBaseAppCore);
if (NS_OK != result) {
return result;
}
// create a js object for this class
*aReturn = JS_NewObject(jscontext, &BaseAppCoreClass, proto, parent);
if (nsnull != *aReturn) {
// connect the native object to the js object
JS_SetPrivate(jscontext, (JSObject *)*aReturn, aBaseAppCore);
}
else {
NS_RELEASE(aBaseAppCore);
return NS_ERROR_FAILURE;
}
return NS_OK;
}

View File

@ -0,0 +1,581 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#include "jsapi.h"
#include "nsJSUtils.h"
#include "nscore.h"
#include "nsIScriptContext.h"
#include "nsIJSScriptObject.h"
#include "nsIScriptObjectOwner.h"
#include "nsIScriptGlobalObject.h"
#include "nsIPtr.h"
#include "nsString.h"
#include "nsIDOMBrowserAppCore.h"
#include "nsIDOMWindow.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsRepository.h"
#include "nsDOMCID.h"
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID);
static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID);
static NS_DEFINE_IID(kIBrowserAppCoreIID, NS_IDOMBROWSERAPPCORE_IID);
static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID);
NS_DEF_PTR(nsIDOMBrowserAppCore);
NS_DEF_PTR(nsIDOMWindow);
/***********************************************************************/
//
// BrowserAppCore Properties Getter
//
PR_STATIC_CALLBACK(JSBool)
GetBrowserAppCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMBrowserAppCore *a = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
/***********************************************************************/
//
// BrowserAppCore Properties Setter
//
PR_STATIC_CALLBACK(JSBool)
SetBrowserAppCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMBrowserAppCore *a = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
//
// BrowserAppCore finalizer
//
PR_STATIC_CALLBACK(void)
FinalizeBrowserAppCore(JSContext *cx, JSObject *obj)
{
nsJSUtils::nsGenericFinalize(cx, obj);
}
//
// BrowserAppCore enumerate
//
PR_STATIC_CALLBACK(JSBool)
EnumerateBrowserAppCore(JSContext *cx, JSObject *obj)
{
return nsJSUtils::nsGenericEnumerate(cx, obj);
}
//
// BrowserAppCore resolve
//
PR_STATIC_CALLBACK(JSBool)
ResolveBrowserAppCore(JSContext *cx, JSObject *obj, jsval id)
{
return nsJSUtils::nsGenericResolve(cx, obj, id);
}
//
// Native method Back
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCoreBack(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBrowserAppCore *nativeThis = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 0) {
if (NS_OK != nativeThis->Back()) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function back requires 0 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method Forward
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCoreForward(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBrowserAppCore *nativeThis = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 0) {
if (NS_OK != nativeThis->Forward()) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function forward requires 0 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method LoadUrl
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCoreLoadUrl(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBrowserAppCore *nativeThis = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
if (NS_OK != nativeThis->LoadUrl(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function loadUrl requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method SetToolbarWindow
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCoreSetToolbarWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBrowserAppCore *nativeThis = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMWindowPtr b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
kIWindowIID,
"Window",
cx,
argv[0])) {
return JS_FALSE;
}
if (NS_OK != nativeThis->SetToolbarWindow(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function setToolbarWindow requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method SetContentWindow
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCoreSetContentWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBrowserAppCore *nativeThis = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMWindowPtr b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
kIWindowIID,
"Window",
cx,
argv[0])) {
return JS_FALSE;
}
if (NS_OK != nativeThis->SetContentWindow(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function setContentWindow requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method DisableCallback
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCoreDisableCallback(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBrowserAppCore *nativeThis = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
if (NS_OK != nativeThis->DisableCallback(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function disableCallback requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method EnableCallback
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCoreEnableCallback(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMBrowserAppCore *nativeThis = (nsIDOMBrowserAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
if (NS_OK != nativeThis->EnableCallback(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function enableCallback requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for BrowserAppCore
//
JSClass BrowserAppCoreClass = {
"BrowserAppCore",
JSCLASS_HAS_PRIVATE,
JS_PropertyStub,
JS_PropertyStub,
GetBrowserAppCoreProperty,
SetBrowserAppCoreProperty,
EnumerateBrowserAppCore,
ResolveBrowserAppCore,
JS_ConvertStub,
FinalizeBrowserAppCore
};
//
// BrowserAppCore class properties
//
static JSPropertySpec BrowserAppCoreProperties[] =
{
{0}
};
//
// BrowserAppCore class methods
//
static JSFunctionSpec BrowserAppCoreMethods[] =
{
{"back", BrowserAppCoreBack, 0},
{"forward", BrowserAppCoreForward, 0},
{"loadUrl", BrowserAppCoreLoadUrl, 1},
{"setToolbarWindow", BrowserAppCoreSetToolbarWindow, 1},
{"setContentWindow", BrowserAppCoreSetContentWindow, 1},
{"disableCallback", BrowserAppCoreDisableCallback, 1},
{"enableCallback", BrowserAppCoreEnableCallback, 1},
{0}
};
//
// BrowserAppCore constructor
//
PR_STATIC_CALLBACK(JSBool)
BrowserAppCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsresult result;
nsIID classID;
nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx);
nsIScriptNameSpaceManager* manager;
nsIDOMBrowserAppCore *nativeThis;
nsIScriptObjectOwner *owner = nsnull;
static NS_DEFINE_IID(kIDOMBrowserAppCoreIID, NS_IDOMBROWSERAPPCORE_IID);
result = context->GetNameSpaceManager(&manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = manager->LookupName("BrowserAppCore", PR_TRUE, classID);
NS_RELEASE(manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = nsRepository::CreateInstance(classID,
nsnull,
kIDOMBrowserAppCoreIID,
(void **)&nativeThis);
if (NS_OK != result) {
return JS_FALSE;
}
// XXX We should be calling Init() on the instance
result = nativeThis->QueryInterface(kIScriptObjectOwnerIID, (void **)&owner);
if (NS_OK != result) {
NS_RELEASE(nativeThis);
return JS_FALSE;
}
owner->SetScriptObject((void *)obj);
JS_SetPrivate(cx, obj, nativeThis);
NS_RELEASE(owner);
return JS_TRUE;
}
//
// BrowserAppCore class initialization
//
nsresult NS_InitBrowserAppCoreClass(nsIScriptContext *aContext, void **aPrototype)
{
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
JSObject *proto = nsnull;
JSObject *constructor = nsnull;
JSObject *parent_proto = nsnull;
JSObject *global = JS_GetGlobalObject(jscontext);
jsval vp;
if ((PR_TRUE != JS_LookupProperty(jscontext, global, "BrowserAppCore", &vp)) ||
!JSVAL_IS_OBJECT(vp) ||
((constructor = JSVAL_TO_OBJECT(vp)) == nsnull) ||
(PR_TRUE != JS_LookupProperty(jscontext, JSVAL_TO_OBJECT(vp), "prototype", &vp)) ||
!JSVAL_IS_OBJECT(vp)) {
if (NS_OK != NS_InitBaseAppCoreClass(aContext, (void **)&parent_proto)) {
return NS_ERROR_FAILURE;
}
proto = JS_InitClass(jscontext, // context
global, // global object
parent_proto, // parent proto
&BrowserAppCoreClass, // JSClass
BrowserAppCore, // JSNative ctor
0, // ctor args
BrowserAppCoreProperties, // proto props
BrowserAppCoreMethods, // proto funcs
nsnull, // ctor props (static)
nsnull); // ctor funcs (static)
if (nsnull == proto) {
return NS_ERROR_FAILURE;
}
}
else if ((nsnull != constructor) && JSVAL_IS_OBJECT(vp)) {
proto = JSVAL_TO_OBJECT(vp);
}
else {
return NS_ERROR_FAILURE;
}
if (aPrototype) {
*aPrototype = proto;
}
return NS_OK;
}
//
// Method for creating a new BrowserAppCore JavaScript object
//
extern "C" NS_DOM nsresult NS_NewScriptBrowserAppCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn)
{
NS_PRECONDITION(nsnull != aContext && nsnull != aSupports && nsnull != aReturn, "null argument to NS_NewScriptBrowserAppCore");
JSObject *proto;
JSObject *parent;
nsIScriptObjectOwner *owner;
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
nsresult result = NS_OK;
nsIDOMBrowserAppCore *aBrowserAppCore;
if (nsnull == aParent) {
parent = nsnull;
}
else if (NS_OK == aParent->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) {
if (NS_OK != owner->GetScriptObject(aContext, (void **)&parent)) {
NS_RELEASE(owner);
return NS_ERROR_FAILURE;
}
NS_RELEASE(owner);
}
else {
return NS_ERROR_FAILURE;
}
if (NS_OK != NS_InitBrowserAppCoreClass(aContext, (void **)&proto)) {
return NS_ERROR_FAILURE;
}
result = aSupports->QueryInterface(kIBrowserAppCoreIID, (void **)&aBrowserAppCore);
if (NS_OK != result) {
return result;
}
// create a js object for this class
*aReturn = JS_NewObject(jscontext, &BrowserAppCoreClass, proto, parent);
if (nsnull != *aReturn) {
// connect the native object to the js object
JS_SetPrivate(jscontext, (JSObject *)*aReturn, aBrowserAppCore);
}
else {
NS_RELEASE(aBrowserAppCore);
return NS_ERROR_FAILURE;
}
return NS_OK;
}

View File

@ -0,0 +1,439 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#include "jsapi.h"
#include "nsJSUtils.h"
#include "nscore.h"
#include "nsIScriptContext.h"
#include "nsIJSScriptObject.h"
#include "nsIScriptObjectOwner.h"
#include "nsIScriptGlobalObject.h"
#include "nsIPtr.h"
#include "nsString.h"
#include "nsIDOMMailCore.h"
#include "nsIDOMWindow.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsRepository.h"
#include "nsDOMCID.h"
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID);
static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID);
static NS_DEFINE_IID(kIMailCoreIID, NS_IDOMMAILCORE_IID);
static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID);
NS_DEF_PTR(nsIDOMMailCore);
NS_DEF_PTR(nsIDOMWindow);
/***********************************************************************/
//
// MailCore Properties Getter
//
PR_STATIC_CALLBACK(JSBool)
GetMailCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMMailCore *a = (nsIDOMMailCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
/***********************************************************************/
//
// MailCore Properties Setter
//
PR_STATIC_CALLBACK(JSBool)
SetMailCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMMailCore *a = (nsIDOMMailCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
//
// MailCore finalizer
//
PR_STATIC_CALLBACK(void)
FinalizeMailCore(JSContext *cx, JSObject *obj)
{
nsJSUtils::nsGenericFinalize(cx, obj);
}
//
// MailCore enumerate
//
PR_STATIC_CALLBACK(JSBool)
EnumerateMailCore(JSContext *cx, JSObject *obj)
{
return nsJSUtils::nsGenericEnumerate(cx, obj);
}
//
// MailCore resolve
//
PR_STATIC_CALLBACK(JSBool)
ResolveMailCore(JSContext *cx, JSObject *obj, jsval id)
{
return nsJSUtils::nsGenericResolve(cx, obj, id);
}
//
// Native method SendMail
//
PR_STATIC_CALLBACK(JSBool)
MailCoreSendMail(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMMailCore *nativeThis = (nsIDOMMailCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
nsAutoString b1;
nsAutoString b2;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 3) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]);
if (NS_OK != nativeThis->SendMail(b0, b1, b2)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function SendMail requires 3 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method MailCompleteCallback
//
PR_STATIC_CALLBACK(JSBool)
MailCoreMailCompleteCallback(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMMailCore *nativeThis = (nsIDOMMailCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
if (NS_OK != nativeThis->MailCompleteCallback(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function MailCompleteCallback requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method SetWindow
//
PR_STATIC_CALLBACK(JSBool)
MailCoreSetWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMMailCore *nativeThis = (nsIDOMMailCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMWindowPtr b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
kIWindowIID,
"Window",
cx,
argv[0])) {
return JS_FALSE;
}
if (NS_OK != nativeThis->SetWindow(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function SetWindow requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for MailCore
//
JSClass MailCoreClass = {
"MailCore",
JSCLASS_HAS_PRIVATE,
JS_PropertyStub,
JS_PropertyStub,
GetMailCoreProperty,
SetMailCoreProperty,
EnumerateMailCore,
ResolveMailCore,
JS_ConvertStub,
FinalizeMailCore
};
//
// MailCore class properties
//
static JSPropertySpec MailCoreProperties[] =
{
{0}
};
//
// MailCore class methods
//
static JSFunctionSpec MailCoreMethods[] =
{
{"SendMail", MailCoreSendMail, 3},
{"MailCompleteCallback", MailCoreMailCompleteCallback, 1},
{"SetWindow", MailCoreSetWindow, 1},
{0}
};
//
// MailCore constructor
//
PR_STATIC_CALLBACK(JSBool)
MailCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsresult result;
nsIID classID;
nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx);
nsIScriptNameSpaceManager* manager;
nsIDOMMailCore *nativeThis;
nsIScriptObjectOwner *owner = nsnull;
static NS_DEFINE_IID(kIDOMMailCoreIID, NS_IDOMMAILCORE_IID);
result = context->GetNameSpaceManager(&manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = manager->LookupName("MailCore", PR_TRUE, classID);
NS_RELEASE(manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = nsRepository::CreateInstance(classID,
nsnull,
kIDOMMailCoreIID,
(void **)&nativeThis);
if (NS_OK != result) {
return JS_FALSE;
}
// XXX We should be calling Init() on the instance
result = nativeThis->QueryInterface(kIScriptObjectOwnerIID, (void **)&owner);
if (NS_OK != result) {
NS_RELEASE(nativeThis);
return JS_FALSE;
}
owner->SetScriptObject((void *)obj);
JS_SetPrivate(cx, obj, nativeThis);
NS_RELEASE(owner);
return JS_TRUE;
}
//
// MailCore class initialization
//
nsresult NS_InitMailCoreClass(nsIScriptContext *aContext, void **aPrototype)
{
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
JSObject *proto = nsnull;
JSObject *constructor = nsnull;
JSObject *parent_proto = nsnull;
JSObject *global = JS_GetGlobalObject(jscontext);
jsval vp;
if ((PR_TRUE != JS_LookupProperty(jscontext, global, "MailCore", &vp)) ||
!JSVAL_IS_OBJECT(vp) ||
((constructor = JSVAL_TO_OBJECT(vp)) == nsnull) ||
(PR_TRUE != JS_LookupProperty(jscontext, JSVAL_TO_OBJECT(vp), "prototype", &vp)) ||
!JSVAL_IS_OBJECT(vp)) {
if (NS_OK != NS_InitBaseAppCoreClass(aContext, (void **)&parent_proto)) {
return NS_ERROR_FAILURE;
}
proto = JS_InitClass(jscontext, // context
global, // global object
parent_proto, // parent proto
&MailCoreClass, // JSClass
MailCore, // JSNative ctor
0, // ctor args
MailCoreProperties, // proto props
MailCoreMethods, // proto funcs
nsnull, // ctor props (static)
nsnull); // ctor funcs (static)
if (nsnull == proto) {
return NS_ERROR_FAILURE;
}
}
else if ((nsnull != constructor) && JSVAL_IS_OBJECT(vp)) {
proto = JSVAL_TO_OBJECT(vp);
}
else {
return NS_ERROR_FAILURE;
}
if (aPrototype) {
*aPrototype = proto;
}
return NS_OK;
}
//
// Method for creating a new MailCore JavaScript object
//
extern "C" NS_DOM nsresult NS_NewScriptMailCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn)
{
NS_PRECONDITION(nsnull != aContext && nsnull != aSupports && nsnull != aReturn, "null argument to NS_NewScriptMailCore");
JSObject *proto;
JSObject *parent;
nsIScriptObjectOwner *owner;
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
nsresult result = NS_OK;
nsIDOMMailCore *aMailCore;
if (nsnull == aParent) {
parent = nsnull;
}
else if (NS_OK == aParent->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) {
if (NS_OK != owner->GetScriptObject(aContext, (void **)&parent)) {
NS_RELEASE(owner);
return NS_ERROR_FAILURE;
}
NS_RELEASE(owner);
}
else {
return NS_ERROR_FAILURE;
}
if (NS_OK != NS_InitMailCoreClass(aContext, (void **)&proto)) {
return NS_ERROR_FAILURE;
}
result = aSupports->QueryInterface(kIMailCoreIID, (void **)&aMailCore);
if (NS_OK != result) {
return result;
}
// create a js object for this class
*aReturn = JS_NewObject(jscontext, &MailCoreClass, proto, parent);
if (nsnull != *aReturn) {
// connect the native object to the js object
JS_SetPrivate(jscontext, (JSObject *)*aReturn, aMailCore);
}
else {
NS_RELEASE(aMailCore);
return NS_ERROR_FAILURE;
}
return NS_OK;
}

View File

@ -0,0 +1,396 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#include "jsapi.h"
#include "nsJSUtils.h"
#include "nscore.h"
#include "nsIScriptContext.h"
#include "nsIJSScriptObject.h"
#include "nsIScriptObjectOwner.h"
#include "nsIScriptGlobalObject.h"
#include "nsIPtr.h"
#include "nsString.h"
#include "nsIDOMToolbarCore.h"
#include "nsIDOMWindow.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsRepository.h"
#include "nsDOMCID.h"
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID);
static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID);
static NS_DEFINE_IID(kIToolbarCoreIID, NS_IDOMTOOLBARCORE_IID);
static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID);
NS_DEF_PTR(nsIDOMToolbarCore);
NS_DEF_PTR(nsIDOMWindow);
/***********************************************************************/
//
// ToolbarCore Properties Getter
//
PR_STATIC_CALLBACK(JSBool)
GetToolbarCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMToolbarCore *a = (nsIDOMToolbarCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
/***********************************************************************/
//
// ToolbarCore Properties Setter
//
PR_STATIC_CALLBACK(JSBool)
SetToolbarCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMToolbarCore *a = (nsIDOMToolbarCore*)JS_GetPrivate(cx, obj);
// If there's no private data, this must be the prototype, so ignore
if (nsnull == a) {
return JS_TRUE;
}
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
default:
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
}
else {
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp);
}
return PR_TRUE;
}
//
// ToolbarCore finalizer
//
PR_STATIC_CALLBACK(void)
FinalizeToolbarCore(JSContext *cx, JSObject *obj)
{
nsJSUtils::nsGenericFinalize(cx, obj);
}
//
// ToolbarCore enumerate
//
PR_STATIC_CALLBACK(JSBool)
EnumerateToolbarCore(JSContext *cx, JSObject *obj)
{
return nsJSUtils::nsGenericEnumerate(cx, obj);
}
//
// ToolbarCore resolve
//
PR_STATIC_CALLBACK(JSBool)
ResolveToolbarCore(JSContext *cx, JSObject *obj, jsval id)
{
return nsJSUtils::nsGenericResolve(cx, obj, id);
}
//
// Native method SetWindow
//
PR_STATIC_CALLBACK(JSBool)
ToolbarCoreSetWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMToolbarCore *nativeThis = (nsIDOMToolbarCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMWindowPtr b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
kIWindowIID,
"Window",
cx,
argv[0])) {
return JS_FALSE;
}
if (NS_OK != nativeThis->SetWindow(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function SetWindow requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method SetStatus
//
PR_STATIC_CALLBACK(JSBool)
ToolbarCoreSetStatus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMToolbarCore *nativeThis = (nsIDOMToolbarCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 1) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
if (NS_OK != nativeThis->SetStatus(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function SetStatus requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for ToolbarCore
//
JSClass ToolbarCoreClass = {
"ToolbarCore",
JSCLASS_HAS_PRIVATE,
JS_PropertyStub,
JS_PropertyStub,
GetToolbarCoreProperty,
SetToolbarCoreProperty,
EnumerateToolbarCore,
ResolveToolbarCore,
JS_ConvertStub,
FinalizeToolbarCore
};
//
// ToolbarCore class properties
//
static JSPropertySpec ToolbarCoreProperties[] =
{
{0}
};
//
// ToolbarCore class methods
//
static JSFunctionSpec ToolbarCoreMethods[] =
{
{"SetWindow", ToolbarCoreSetWindow, 1},
{"SetStatus", ToolbarCoreSetStatus, 1},
{0}
};
//
// ToolbarCore constructor
//
PR_STATIC_CALLBACK(JSBool)
ToolbarCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsresult result;
nsIID classID;
nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx);
nsIScriptNameSpaceManager* manager;
nsIDOMToolbarCore *nativeThis;
nsIScriptObjectOwner *owner = nsnull;
static NS_DEFINE_IID(kIDOMToolbarCoreIID, NS_IDOMTOOLBARCORE_IID);
result = context->GetNameSpaceManager(&manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = manager->LookupName("ToolbarCore", PR_TRUE, classID);
NS_RELEASE(manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = nsRepository::CreateInstance(classID,
nsnull,
kIDOMToolbarCoreIID,
(void **)&nativeThis);
if (NS_OK != result) {
return JS_FALSE;
}
// XXX We should be calling Init() on the instance
result = nativeThis->QueryInterface(kIScriptObjectOwnerIID, (void **)&owner);
if (NS_OK != result) {
NS_RELEASE(nativeThis);
return JS_FALSE;
}
owner->SetScriptObject((void *)obj);
JS_SetPrivate(cx, obj, nativeThis);
NS_RELEASE(owner);
return JS_TRUE;
}
//
// ToolbarCore class initialization
//
nsresult NS_InitToolbarCoreClass(nsIScriptContext *aContext, void **aPrototype)
{
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
JSObject *proto = nsnull;
JSObject *constructor = nsnull;
JSObject *parent_proto = nsnull;
JSObject *global = JS_GetGlobalObject(jscontext);
jsval vp;
if ((PR_TRUE != JS_LookupProperty(jscontext, global, "ToolbarCore", &vp)) ||
!JSVAL_IS_OBJECT(vp) ||
((constructor = JSVAL_TO_OBJECT(vp)) == nsnull) ||
(PR_TRUE != JS_LookupProperty(jscontext, JSVAL_TO_OBJECT(vp), "prototype", &vp)) ||
!JSVAL_IS_OBJECT(vp)) {
if (NS_OK != NS_InitBaseAppCoreClass(aContext, (void **)&parent_proto)) {
return NS_ERROR_FAILURE;
}
proto = JS_InitClass(jscontext, // context
global, // global object
parent_proto, // parent proto
&ToolbarCoreClass, // JSClass
ToolbarCore, // JSNative ctor
0, // ctor args
ToolbarCoreProperties, // proto props
ToolbarCoreMethods, // proto funcs
nsnull, // ctor props (static)
nsnull); // ctor funcs (static)
if (nsnull == proto) {
return NS_ERROR_FAILURE;
}
}
else if ((nsnull != constructor) && JSVAL_IS_OBJECT(vp)) {
proto = JSVAL_TO_OBJECT(vp);
}
else {
return NS_ERROR_FAILURE;
}
if (aPrototype) {
*aPrototype = proto;
}
return NS_OK;
}
//
// Method for creating a new ToolbarCore JavaScript object
//
extern "C" NS_DOM nsresult NS_NewScriptToolbarCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn)
{
NS_PRECONDITION(nsnull != aContext && nsnull != aSupports && nsnull != aReturn, "null argument to NS_NewScriptToolbarCore");
JSObject *proto;
JSObject *parent;
nsIScriptObjectOwner *owner;
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
nsresult result = NS_OK;
nsIDOMToolbarCore *aToolbarCore;
if (nsnull == aParent) {
parent = nsnull;
}
else if (NS_OK == aParent->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) {
if (NS_OK != owner->GetScriptObject(aContext, (void **)&parent)) {
NS_RELEASE(owner);
return NS_ERROR_FAILURE;
}
NS_RELEASE(owner);
}
else {
return NS_ERROR_FAILURE;
}
if (NS_OK != NS_InitToolbarCoreClass(aContext, (void **)&proto)) {
return NS_ERROR_FAILURE;
}
result = aSupports->QueryInterface(kIToolbarCoreIID, (void **)&aToolbarCore);
if (NS_OK != result) {
return result;
}
// create a js object for this class
*aReturn = JS_NewObject(jscontext, &ToolbarCoreClass, proto, parent);
if (nsnull != *aReturn) {
// connect the native object to the js object
JS_SetPrivate(jscontext, (JSObject *)*aReturn, aToolbarCore);
}
else {
NS_RELEASE(aToolbarCore);
return NS_ERROR_FAILURE;
}
return NS_OK;
}

View File

@ -0,0 +1,179 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsMailCore.h"
#include "nsIBrowserWindow.h"
#include "nsIWebShell.h"
#include "pratom.h"
#include "nsRepository.h"
#include "nsAppCores.h"
#include "nsAppCoresCIDs.h"
#include "nsAppCoresManager.h"
#include "nsIScriptContext.h"
#include "nsIScriptContextOwner.h"
#include "nsIDOMDocument.h"
#include "nsIDocument.h"
#include "nsIDOMWindow.h"
// Globals
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIMailCoreIID, NS_IDOMMAILCORE_IID);
static NS_DEFINE_IID(kIDOMDocumentIID, nsIDOMDocument::IID());
static NS_DEFINE_IID(kIDocumentIID, nsIDocument::IID());
static NS_DEFINE_IID(kMailCoreCID, NS_MailCore_CID);
static NS_DEFINE_IID(kBrowserWindowCID, NS_BROWSER_WINDOW_CID);
/////////////////////////////////////////////////////////////////////////
// nsMailCore
/////////////////////////////////////////////////////////////////////////
nsMailCore::nsMailCore()
{
printf("Created nsMailCore\n");
mScriptObject = nsnull;
mScriptContext = nsnull;
mWindow = nsnull;
IncInstanceCount();
NS_INIT_REFCNT();
}
nsMailCore::~nsMailCore()
{
NS_IF_RELEASE(mScriptContext);
NS_IF_RELEASE(mWindow);
DecInstanceCount();
}
NS_IMPL_ADDREF(nsMailCore)
NS_IMPL_RELEASE(nsMailCore)
NS_IMETHODIMP
nsMailCore::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL) {
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kIMailCoreIID) ) {
*aInstancePtr = (void*) ((nsIDOMMailCore*)this);
AddRef();
return NS_OK;
}
return nsBaseAppCore::QueryInterface(aIID, aInstancePtr);
}
NS_IMETHODIMP
nsMailCore::GetScriptObject(nsIScriptContext *aContext, void** aScriptObject)
{
NS_PRECONDITION(nsnull != aScriptObject, "null arg");
nsresult res = NS_OK;
if (nsnull == mScriptObject)
{
res = NS_NewScriptMailCore(aContext,
(nsISupports *)(nsIDOMMailCore*)this,
nsnull,
&mScriptObject);
}
*aScriptObject = mScriptObject;
return res;
}
NS_IMETHODIMP
nsMailCore::Init(const nsString& aId)
{
nsBaseAppCore::Init(aId);
nsAppCoresManager* sdm = new nsAppCoresManager();
sdm->Add((nsIDOMBaseAppCore *)(nsBaseAppCore *)this);
delete sdm;
return NS_OK;
}
NS_IMETHODIMP
nsMailCore::MailCompleteCallback(const nsString& aScript)
{
mScript = aScript;
return NS_OK;
}
NS_IMETHODIMP
nsMailCore::SetWindow(nsIDOMWindow* aWin)
{
mWindow = aWin;
NS_ADDREF(aWin);
return NS_OK;
}
NS_IMETHODIMP
nsMailCore::SendMail(const nsString& aAddrTo, const nsString& aSubject, const nsString& aMsg)
{
if (nsnull == mScriptContext) {
nsIDOMDocument * domDoc;
mWindow->GetDocument(&domDoc);
if (nsnull != domDoc) {
nsIDocument * doc;
if (NS_OK == domDoc->QueryInterface(kIDocumentIID,(void**)&doc)) {
nsIScriptContextOwner * owner = doc->GetScriptContextOwner();
if (nsnull != owner) {
owner->GetScriptContext(&mScriptContext);
NS_RELEASE(owner);
}
NS_RELEASE(doc);
}
NS_RELEASE(domDoc);
}
}
printf("----------------------------\n");
printf("-- Sending Mail Message\n");
printf("----------------------------\n");
printf("To: %s \nSub: %s \nMsg: %s\n", aAddrTo.ToNewCString(), aSubject.ToNewCString(), aMsg.ToNewCString());
printf("----------------------------\n");
if (nsnull != mScriptContext) {
const char* url = "";
PRBool isUndefined = PR_FALSE;
nsString rVal;
mScriptContext->EvaluateString(mScript, url, 0, rVal, &isUndefined);
//printf("SendMail [%s] %d [%s]\n", mScript.ToNewCString(), isUndefined, rVal.ToNewCString());
}
return NS_OK;
}

View File

@ -0,0 +1,66 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsMailCorePrivate_h___
#define nsMailCorePrivate_h___
//#include "nsAppCores.h"
#include "nscore.h"
#include "nsString.h"
#include "nsISupports.h"
#include "nsIDOMMailCore.h"
#include "nsBaseAppCore.h"
class nsIBrowserWindow;
class nsIWebShell;
class nsIScriptContext;
class nsIDOMWindow;
////////////////////////////////////////////////////////////////////////////////
// nsMailCore:
////////////////////////////////////////////////////////////////////////////////
class nsMailCore : public nsBaseAppCore,
public nsIDOMMailCore
{
public:
nsMailCore();
~nsMailCore();
NS_DECL_ISUPPORTS
NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
NS_IMETHOD Init(const nsString& aId);
NS_IMETHOD GetId(nsString& aId) { return nsBaseAppCore::GetId(aId); }
NS_IMETHOD MailCompleteCallback(const nsString& aScript);
NS_IMETHOD SetWindow(nsIDOMWindow* aWin);
NS_IMETHOD SendMail(const nsString& aAddrTo, const nsString& aSubject, const nsString& aMsg);
protected:
nsString mScript;
nsIScriptContext *mScriptContext;
nsIDOMWindow *mWindow;
};
#endif // nsMailCore_h___

View File

@ -0,0 +1,131 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsAppCores.h"
#include "nsMailCoreFactory.h"
#include "nsMailCore.h"
#include "pratom.h"
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
/////////////////////////////////////////////////////////////////////////
// nsMailCoreFactory
/////////////////////////////////////////////////////////////////////////
nsMailCoreFactory::nsMailCoreFactory(void)
{
mRefCnt=0;
IncInstanceCount();
}
nsMailCoreFactory::~nsMailCoreFactory(void)
{
DecInstanceCount();
}
NS_IMETHODIMP
nsMailCoreFactory::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL)
{
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kISupportsIID) )
{
*aInstancePtr = (void*) this;
}
else if ( aIID.Equals(kIFactoryIID) )
{
*aInstancePtr = (void*) this;
}
if (aInstancePtr == NULL)
{
return NS_ERROR_NO_INTERFACE;
}
AddRef();
return NS_OK;
}
NS_IMETHODIMP
nsMailCoreFactory::AddRef(void)
{
return ++mRefCnt;
}
NS_IMETHODIMP
nsMailCoreFactory::Release(void)
{
if (--mRefCnt ==0)
{
delete this;
return 0; // Don't access mRefCnt after deleting!
}
return mRefCnt;
}
NS_IMETHODIMP
nsMailCoreFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult)
{
if (aResult == NULL)
{
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
/* do I have to use iSupports? */
nsMailCore *inst = new nsMailCore();
if (inst == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsresult result = inst->QueryInterface(aIID, aResult);
if (result != NS_OK)
delete inst;
return result;
}
NS_IMETHODIMP
nsMailCoreFactory::LockFactory(PRBool aLock)
{
if (aLock)
IncLockCount();
else
DecLockCount();
return NS_OK;
}

View File

@ -0,0 +1,49 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsMailCoreFactory_h___
#define nsMailCoreFactory_h___
//#include "nscore.h"
//#include "nsString.h"
#include "nsIFactory.h"
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// nsMailCoreFactory:
////////////////////////////////////////////////////////////////////////////////
class nsMailCoreFactory : public nsIFactory
{
public:
nsMailCoreFactory();
~nsMailCoreFactory();
PRBool CanUnload(void);
NS_DECL_ISUPPORTS
NS_IMETHOD CreateInstance(nsISupports *aOuter,
REFNSIID aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
};
#endif // nsMailCoreFactory_h___

View File

@ -0,0 +1,173 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsToolbarCore.h"
#include "nsIBrowserWindow.h"
#include "nsRepository.h"
#include "nsAppCores.h"
#include "nsAppCoresCIDs.h"
#include "nsAppCoresManager.h"
#include "nsIScriptContext.h"
#include "nsIDOMDocument.h"
#include "nsIDocument.h"
#include "nsIDOMWindow.h"
#include "nsIDOMNode.h"
#include "nsIDOMElement.h"
#include "nsIDOMCharacterData.h"
// Globals
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIToolbarCoreIID, NS_IDOMTOOLBARCORE_IID);
static NS_DEFINE_IID(kIDOMDocumentIID, nsIDOMDocument::IID());
static NS_DEFINE_IID(kIDocumentIID, nsIDocument::IID());
static NS_DEFINE_IID(kIDOMCharacterDataIID, nsIDOMCharacterData::IID());
static NS_DEFINE_IID(kToolbarCoreCID, NS_TOOLBARCORE_CID);
/////////////////////////////////////////////////////////////////////////
// nsToolbarCore
/////////////////////////////////////////////////////////////////////////
nsToolbarCore::nsToolbarCore()
{
printf("Created nsToolbarCore\n");
mWindow = nsnull;
mStatusText = nsnull;
IncInstanceCount();
NS_INIT_REFCNT();
}
nsToolbarCore::~nsToolbarCore()
{
NS_IF_RELEASE(mWindow);
NS_IF_RELEASE(mStatusText);
DecInstanceCount();
}
NS_IMPL_ADDREF(nsToolbarCore)
NS_IMPL_RELEASE(nsToolbarCore)
NS_IMETHODIMP
nsToolbarCore::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL) {
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kIToolbarCoreIID) ) {
*aInstancePtr = (void*) ((nsIDOMToolbarCore*)this);
AddRef();
return NS_OK;
}
return nsBaseAppCore::QueryInterface(aIID, aInstancePtr);
}
NS_IMETHODIMP
nsToolbarCore::GetScriptObject(nsIScriptContext *aContext, void** aScriptObject)
{
NS_PRECONDITION(nsnull != aScriptObject, "null arg");
nsresult res = NS_OK;
if (nsnull == mScriptObject)
{
res = NS_NewScriptToolbarCore(aContext,
(nsISupports *)(nsIDOMToolbarCore*)this,
nsnull,
&mScriptObject);
}
*aScriptObject = mScriptObject;
return res;
}
NS_IMETHODIMP
nsToolbarCore::Init(const nsString& aId)
{
nsBaseAppCore::Init(aId);
nsAppCoresManager* sdm = new nsAppCoresManager();
sdm->Add((nsIDOMBaseAppCore *)(nsBaseAppCore *)this);
delete sdm;
return NS_OK;
}
NS_IMETHODIMP
nsToolbarCore::SetStatus(const nsString& aMsg)
{
if (nsnull == mStatusText) {
nsIDOMDocument * domDoc;
mWindow->GetDocument(&domDoc);
if (!domDoc)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMNode> parent(GetParentNodeFromDOMDoc(domDoc));
if (!parent)
return NS_ERROR_FAILURE;
PRInt32 count = 0;
nsCOMPtr<nsIDOMNode> statusNode(FindNamedDOMNode(nsAutoString("#text"), parent, count, 7));
if (!statusNode)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMCharacterData> charData(statusNode);
if (!charData)
return NS_ERROR_FAILURE;
mStatusText = charData;
mStatusText->SetData(nsAutoString("Ready.....")); // <<====== EVIL HARD-CODED STRING.
NS_RELEASE(domDoc);
}
mStatusText->SetData(aMsg);
return NS_OK;
}
NS_IMETHODIMP
nsToolbarCore::SetWindow(nsIDOMWindow* aWin)
{
mWindow = aWin;
NS_ADDREF(aWin);
return NS_OK;
}

View File

@ -0,0 +1,65 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsToolbarCorePrivate_h___
#define nsToolbarCorePrivate_h___
//#include "nsAppCores.h"
#include "nscore.h"
#include "nsString.h"
#include "nsISupports.h"
#include "nsIScriptObjectOwner.h"
#include "nsIDOMToolbarCore.h"
#include "nsBaseAppCore.h"
class nsIBrowserWindow;
class nsIWebShell;
class nsIScriptContext;
class nsIDOMWindow;
class nsIDOMDocument;
class nsIDOMCharacterData;
////////////////////////////////////////////////////////////////////////////////
// nsToolbarCore:
////////////////////////////////////////////////////////////////////////////////
class nsToolbarCore : public nsBaseAppCore,
public nsIDOMToolbarCore
{
public:
nsToolbarCore();
~nsToolbarCore();
NS_DECL_ISUPPORTS
NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
NS_IMETHOD Init(const nsString& aId);
NS_IMETHOD GetId(nsString& aId) { return nsBaseAppCore::GetId(aId); }
NS_IMETHOD SetWindow(nsIDOMWindow* aWin);
NS_IMETHOD SetStatus(const nsString& aMsg);
private:
nsIDOMWindow *mWindow;
nsIDOMCharacterData *mStatusText;
};
#endif // nsToolbarCore_h___

View File

@ -0,0 +1,131 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
#include "nsAppCores.h"
#include "nsToolbarCoreFactory.h"
#include "nsToolbarCore.h"
#include "pratom.h"
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
/////////////////////////////////////////////////////////////////////////
// nsToolbarCoreFactory
/////////////////////////////////////////////////////////////////////////
nsToolbarCoreFactory::nsToolbarCoreFactory(void)
{
mRefCnt=0;
IncInstanceCount();
}
nsToolbarCoreFactory::~nsToolbarCoreFactory(void)
{
DecInstanceCount();
}
NS_IMETHODIMP
nsToolbarCoreFactory::QueryInterface(REFNSIID aIID,void** aInstancePtr)
{
if (aInstancePtr == NULL)
{
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aInstancePtr = NULL;
if ( aIID.Equals(kISupportsIID) )
{
*aInstancePtr = (void*) this;
}
else if ( aIID.Equals(kIFactoryIID) )
{
*aInstancePtr = (void*) this;
}
if (aInstancePtr == NULL)
{
return NS_ERROR_NO_INTERFACE;
}
AddRef();
return NS_OK;
}
NS_IMETHODIMP
nsToolbarCoreFactory::AddRef(void)
{
return ++mRefCnt;
}
NS_IMETHODIMP
nsToolbarCoreFactory::Release(void)
{
if (--mRefCnt ==0)
{
delete this;
return 0; // Don't access mRefCnt after deleting!
}
return mRefCnt;
}
NS_IMETHODIMP
nsToolbarCoreFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult)
{
if (aResult == NULL)
{
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
/* do I have to use iSupports? */
nsToolbarCore *inst = new nsToolbarCore();
if (inst == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsresult result = inst->QueryInterface(aIID, aResult);
if (result != NS_OK)
delete inst;
return result;
}
NS_IMETHODIMP
nsToolbarCoreFactory::LockFactory(PRBool aLock)
{
if (aLock)
IncLockCount();
else
DecLockCount();
return NS_OK;
}

View File

@ -0,0 +1,47 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsToolbarCoreFactory_h___
#define nsToolbarCoreFactory_h___
#include "nsIFactory.h"
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// nsToolbarCoreFactory:
////////////////////////////////////////////////////////////////////////////////
class nsToolbarCoreFactory : public nsIFactory
{
public:
nsToolbarCoreFactory();
~nsToolbarCoreFactory();
PRBool CanUnload(void);
NS_DECL_ISUPPORTS
NS_IMETHOD CreateInstance(nsISupports *aOuter,
REFNSIID aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
};
#endif // nsToolbarCoreFactory_h___