This commit is contained in:
morse%netscape.com 1999-06-02 04:58:40 +00:00
Родитель de7c2fbf71
Коммит 8cec9de292
10 изменённых файлов: 99 добавлений и 695 удалений

Просмотреть файл

@ -58,6 +58,7 @@ struct nsIWalletService : public nsISupports
NS_IMETHOD SI_GetRejectListForViewer(nsString& aRejectList)=0;
NS_IMETHOD WALLET_GetNopreviewListForViewer(nsString& aNopreviewList)=0;
NS_IMETHOD WALLET_GetNocaptureListForViewer(nsString& aNocaptureList)=0;
NS_IMETHOD WALLET_GetPrefillListForViewer(nsString& aPrefillList)=0;
NS_IMETHOD SI_RememberSignonData
(char* URLName, char** name_array, char** value_array, char** type_array, PRInt32 value_cnt) = 0;
NS_IMETHOD SI_RestoreSignonData

Просмотреть файл

@ -118,6 +118,11 @@ NS_IMETHODIMP nsWalletlibService::WALLET_GetNocaptureListForViewer(nsString& aNo
return NS_OK;
}
NS_IMETHODIMP nsWalletlibService::WALLET_GetPrefillListForViewer(nsString& aPrefillList){
::WLLT_GetPrefillListForViewer(aPrefillList);
return NS_OK;
}
NS_IMETHODIMP nsWalletlibService::SI_RememberSignonData
(char* URLName, char** name_array, char** value_array, char** type_array, PRInt32 value_cnt) {
::SINGSIGN_RememberSignonData(URLName, name_array, value_array, type_array, value_cnt);

Просмотреть файл

@ -43,6 +43,7 @@ public:
NS_IMETHOD SI_GetRejectListForViewer(nsString& aRejectList);
NS_IMETHOD WALLET_GetNopreviewListForViewer(nsString& aNopreviewList);
NS_IMETHOD WALLET_GetNocaptureListForViewer(nsString& aNocaptureList);
NS_IMETHOD WALLET_GetPrefillListForViewer(nsString& aPrefillList);
NS_IMETHOD SI_RememberSignonData
(char* URLName, char** name_array, char** value_array, char** type_array, PRInt32 value_cnt);

Просмотреть файл

@ -1604,6 +1604,42 @@ wallet_ReleasePrefillElementList(XP_List * wallet_PrefillElement_list) {
}
}
#define BUFLEN3 5000
#define BREAK '\001'
XP_List * wallet_list;
nsString wallet_url;
PUBLIC void
WLLT_GetPrefillListForViewer(nsString& aPrefillList)
{
char *buffer = (char*)XP_ALLOC(BUFLEN3);
int g = 0, prefillNum = 0;
XP_List *list_ptr = wallet_list;
wallet_PrefillElement * ptr;
buffer[0] = '\0';
char * schema;
char * value;
while((ptr = (wallet_PrefillElement *) XP_ListNextObject(list_ptr))!=0) {
schema = ptr->schema->ToNewCString();
value = ptr->value->ToNewCString();
g += PR_snprintf(buffer+g, BUFLEN3-g,
"%c%d%c%s%c%s",
BREAK, ptr->count,
BREAK, schema,
BREAK, value);
delete []schema;
delete []value;
}
char * urlCString;
urlCString = wallet_url.ToNewCString();
g += PR_snprintf(buffer+g, BUFLEN3-g,"%c%ld%c%s", BREAK, wallet_list, BREAK, urlCString);
delete []urlCString;
aPrefillList = buffer;
PR_FREEIF(buffer);
}
#define BUFLEN 50000
extern void
@ -1631,6 +1667,7 @@ wallet_RequestToPrefill(XP_List * list, nsString url) {
" title_frame = 1;\n"
" list_frame = 2;\n"
" button_frame = 3;\n"
" var prefillList = [];\n"
"\n"
);
@ -1650,48 +1687,40 @@ wallet_RequestToPrefill(XP_List * list, nsString url) {
" \"<TABLE BORDER=0>\" +\n"
" \"<TR>\" +\n"
" \"<TD>\" +\n"
" \"<BR>\" +\n",
" \"<BR>\" \n"
" )\n",
heading);
PR_FREEIF(heading);
/* generate the html for the list of fillins */
wallet_PrefillElement * ptr;
XP_List * list_ptr = list;
PRUint32 count;
while((ptr = (wallet_PrefillElement *) XP_ListNextObject(list_ptr))!=0) {
char * schema;
schema = ptr->schema->ToNewCString();
char * value;
value = ptr->value->ToNewCString();
if (ptr->count) {
count = ptr->count;
g += PR_snprintf(buffer+g, BUFLEN-g,
g += PR_snprintf(buffer+g, BUFLEN-g,
" var count;\n"
" for (i=1; i<prefillList.length-2; i+=3) {\n"
" if(prefillList[i] != 0) {\n"
" count = prefillList[i];\n"
" top.frames[list_frame].document.write(\n"
" \"<TR>\" +\n"
" \"<TD>%s: </TD>\" +\n"
" \"<TD>\" + prefillList[i+1] + \": </TD>\" +\n"
" \"<TD>\" +\n"
" \"<SELECT>\" +\n"
" \"<OPTION VALUE=\\\"%s\\\">%s</OPTION>\" +\n",
schema, schema, value);
} else {
g += PR_snprintf(buffer+g, BUFLEN-g,
" \"<OPTION VALUE=\\\"%s\\\">%s</OPTION>\" +\n",
schema, value);
}
count--;
if (count == 0) {
g += PR_snprintf(buffer+g, BUFLEN-g,
" \"<OPTION VALUE=\\\"%s\\\"></OPTION>\" +\n"
" \"<SELECT>\" \n"
" )\n"
" count--;\n"
" }\n"
" top.frames[list_frame].document.write(\n"
" \"<OPTION VALUE=\\\"\"+prefillList[i+1]+\"\\\">\" +\n"
" prefillList[i+2] +\n"
" \"</OPTION>\" \n"
" )\n"
" if(count == 0) {\n"
" top.frames[list_frame].document.write(\n"
" \"<OPTION VALUE=\\\"\"+prefillList[i+1]+\"\\\"></OPTION>\" +\n"
" \"</SELECT><BR>\" +\n"
" \"</TD>\" +\n"
" \"</TR>\" +\n",
schema);
}
delete []schema;
delete []value;
}
/* finish generating list of fillins */
g += PR_snprintf(buffer+g, BUFLEN-g,
" \"</TR>\" \n"
" )\n"
" }\n"
" }\n"
" top.frames[list_frame].document.write(\n"
" \"</TD>\" +\n"
" \"</TR>\" +\n"
" \"</TABLE>\" +\n"
@ -1701,7 +1730,6 @@ wallet_RequestToPrefill(XP_List * list, nsString url) {
" };\n"
"\n"
);
PR_FREEIF(heading);
/* generate rest of html */
char * skipMessage = Wallet_Localize("BypassThisScreen");
@ -1722,7 +1750,7 @@ wallet_RequestToPrefill(XP_List * list, nsString url) {
skipMessage);
PR_FREEIF(skipMessage);
/* generate remainder of html, it will go into strings->arg[2] */
/* generate remainder of html */
char * urlCString;
urlCString = url.ToNewCString();
g += PR_snprintf(buffer+g, BUFLEN-g,
@ -1736,6 +1764,9 @@ wallet_RequestToPrefill(XP_List * list, nsString url) {
"\n"
" function loadFrames(){\n"
" StartUp(\"Wallet\");\n"
" list = DoGetPrefillList();\n"
" BREAK = list[0];\n"
" prefillList = list.split(BREAK);\n"
" loadFillins();\n"
" loadButtons();\n"
" }\n"
@ -1745,8 +1776,8 @@ wallet_RequestToPrefill(XP_List * list, nsString url) {
" var list = top.frames[button_frame].document.buttons.list;\n"
" var url = top.frames[button_frame].document.buttons.url;\n"
" var skip = top.frames[button_frame].document.buttons.skip;\n"
" list.value = %ld;\n"
" url.value = \"%s\";\n"
" list.value = prefillList[prefillList.length-2];\n"
" url.value = \"prefillList[prefillList.length-1]\";\n"
" var fillins = top.frames[button_frame].document.buttons.fillins;\n"
" fillins.value = \"\";\n"
" for (i=0; i<selname.length; i++) {\n"
@ -1795,7 +1826,7 @@ wallet_RequestToPrefill(XP_List * list, nsString url) {
" <BODY> <BR> </BODY>\n"
"</NOFRAMES>\n"
"</HTML>\n",
list, urlCString, SEPARATOR, SEPARATOR);
SEPARATOR, SEPARATOR);
delete []urlCString;
SI_MakeDialog(buffer);
@ -2343,6 +2374,8 @@ WLLT_Prefill(nsIPresShell* shell, nsString url, PRBool quick) {
return NS_ERROR_FAILURE; // indicates to caller not to display preview screen
} else {
/* let user preview and verify the prefills first */
wallet_list = wallet_PrefillElement_list;
wallet_url = url;
wallet_RequestToPrefill(wallet_PrefillElement_list, url);
#ifdef DEBUG
wallet_DumpStopwatch();

Просмотреть файл

@ -57,6 +57,8 @@ WLLT_GetNopreviewListForViewer (nsString& aNopreviewList);
extern void
WLLT_GetNocaptureListForViewer (nsString& aNocaptureList);
extern void
WLLT_GetPrefillListForViewer (nsString& aPrefillList);
XP_END_PROTOS

Просмотреть файл

@ -1,14 +0,0 @@
interface WalletCore : BaseAppCore
{
void WalletCore();
void ShowWindow(in Window currentFrontWin, in Window form);
void ChangePanel(in wstring url);
void PanelLoaded(in Window win);
void SaveWallet(in wstring results);
void CancelWallet();
};

Просмотреть файл

@ -1,71 +0,0 @@
/* -*- 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 nsIDOMWalletCore_h__
#define nsIDOMWalletCore_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
#include "nsIDOMBaseAppCore.h"
class nsIDOMWindow;
#define NS_IDOMWALLETCORE_IID \
{ 0x9d6e2540, 0x108b, 0x11d3,\
{ 0xab, 0xa3, 0x0, 0x80, 0xc7, 0x87, 0xad, 0x96 }};
class nsIDOMWalletCore : public nsIDOMBaseAppCore {
public:
static const nsIID& GetIID() { static nsIID iid = NS_IDOMWALLETCORE_IID; return iid; }
NS_IMETHOD ShowWindow(nsIDOMWindow* aCurrentFrontWin, nsIDOMWindow* aForm)=0;
NS_IMETHOD ChangePanel(const nsString& aUrl)=0;
NS_IMETHOD PanelLoaded(nsIDOMWindow* aWin)=0;
NS_IMETHOD SaveWallet(const nsString& aResults)=0;
NS_IMETHOD CancelWallet()=0;
};
#define NS_DECL_IDOMWALLETCORE \
NS_IMETHOD ShowWindow(nsIDOMWindow* aCurrentFrontWin, nsIDOMWindow* aForm); \
NS_IMETHOD ChangePanel(const nsString& aUrl); \
NS_IMETHOD PanelLoaded(nsIDOMWindow* aWin); \
NS_IMETHOD SaveWallet(const nsString& aResults); \
NS_IMETHOD CancelWallet(); \
#define NS_FORWARD_IDOMWALLETCORE(_to) \
NS_IMETHOD ShowWindow(nsIDOMWindow* aCurrentFrontWin, nsIDOMWindow* aForm) { return _to ShowWindow(aCurrentFrontWin, aForm); } \
NS_IMETHOD ChangePanel(const nsString& aUrl) { return _to ChangePanel(aUrl); } \
NS_IMETHOD PanelLoaded(nsIDOMWindow* aWin) { return _to PanelLoaded(aWin); } \
NS_IMETHOD SaveWallet(const nsString& aResults) { return _to SaveWallet(aResults); } \
NS_IMETHOD CancelWallet() { return _to CancelWallet(); } \
extern "C" NS_DOM nsresult NS_InitWalletCoreClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptWalletCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMWalletCore_h__

Просмотреть файл

@ -1,531 +0,0 @@
/* -*- 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 "nsIDOMWalletCore.h"
#include "nsIDOMWindow.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsIComponentManager.h"
#include "nsIJSNativeInitializer.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(kIWalletCoreIID, NS_IDOMWALLETCORE_IID);
static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID);
NS_DEF_PTR(nsIDOMWalletCore);
NS_DEF_PTR(nsIDOMWindow);
/***********************************************************************/
//
// WalletCore Properties Getter
//
PR_STATIC_CALLBACK(JSBool)
GetWalletCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMWalletCore *a = (nsIDOMWalletCore*)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;
}
/***********************************************************************/
//
// WalletCore Properties Setter
//
PR_STATIC_CALLBACK(JSBool)
SetWalletCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
nsIDOMWalletCore *a = (nsIDOMWalletCore*)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;
}
//
// WalletCore finalizer
//
PR_STATIC_CALLBACK(void)
FinalizeWalletCore(JSContext *cx, JSObject *obj)
{
nsJSUtils::nsGenericFinalize(cx, obj);
}
//
// WalletCore enumerate
//
PR_STATIC_CALLBACK(JSBool)
EnumerateWalletCore(JSContext *cx, JSObject *obj)
{
return nsJSUtils::nsGenericEnumerate(cx, obj);
}
//
// WalletCore resolve
//
PR_STATIC_CALLBACK(JSBool)
ResolveWalletCore(JSContext *cx, JSObject *obj, jsval id)
{
return nsJSUtils::nsGenericResolve(cx, obj, id);
}
//
// Native method ShowWindow
//
PR_STATIC_CALLBACK(JSBool)
WalletCoreShowWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMWalletCore *nativeThis = (nsIDOMWalletCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsIDOMWindowPtr b0;
nsIDOMWindowPtr b1;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 2) {
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
kIWindowIID,
"Window",
cx,
argv[0])) {
return JS_FALSE;
}
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1,
kIWindowIID,
"Window",
cx,
argv[1])) {
return JS_FALSE;
}
if (NS_OK != nativeThis->ShowWindow(b0, b1)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function ShowWindow requires 2 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method ChangePanel
//
PR_STATIC_CALLBACK(JSBool)
WalletCoreChangePanel(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMWalletCore *nativeThis = (nsIDOMWalletCore*)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->ChangePanel(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function ChangePanel requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method PanelLoaded
//
PR_STATIC_CALLBACK(JSBool)
WalletCorePanelLoaded(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMWalletCore *nativeThis = (nsIDOMWalletCore*)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->PanelLoaded(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function PanelLoaded requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method SaveWallet
//
PR_STATIC_CALLBACK(JSBool)
WalletCoreSaveWallet(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMWalletCore *nativeThis = (nsIDOMWalletCore*)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->SaveWallet(b0)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function SaveWallet requires 1 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
//
// Native method CancelWallet
//
PR_STATIC_CALLBACK(JSBool)
WalletCoreCancelWallet(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMWalletCore *nativeThis = (nsIDOMWalletCore*)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->CancelWallet()) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function CancelWallet requires 0 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for WalletCore
//
JSClass WalletCoreClass = {
"WalletCore",
JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS,
JS_PropertyStub,
JS_PropertyStub,
GetWalletCoreProperty,
SetWalletCoreProperty,
EnumerateWalletCore,
ResolveWalletCore,
JS_ConvertStub,
FinalizeWalletCore
};
//
// WalletCore class properties
//
static JSPropertySpec WalletCoreProperties[] =
{
{0}
};
//
// WalletCore class methods
//
static JSFunctionSpec WalletCoreMethods[] =
{
{"ShowWindow", WalletCoreShowWindow, 2},
{"ChangePanel", WalletCoreChangePanel, 1},
{"PanelLoaded", WalletCorePanelLoaded, 1},
{"SaveWallet", WalletCoreSaveWallet, 1},
{"CancelWallet", WalletCoreCancelWallet, 0},
{0}
};
//
// WalletCore constructor
//
PR_STATIC_CALLBACK(JSBool)
WalletCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsresult result;
nsIID classID;
nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx);
nsIScriptNameSpaceManager* manager;
nsIDOMWalletCore *nativeThis;
nsIScriptObjectOwner *owner = nsnull;
nsIJSNativeInitializer* initializer = nsnull;
static NS_DEFINE_IID(kIDOMWalletCoreIID, NS_IDOMWALLETCORE_IID);
static NS_DEFINE_IID(kIJSNativeInitializerIID, NS_IJSNATIVEINITIALIZER_IID);
result = context->GetNameSpaceManager(&manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = manager->LookupName("WalletCore", PR_TRUE, classID);
NS_RELEASE(manager);
if (NS_OK != result) {
return JS_FALSE;
}
result = nsComponentManager::CreateInstance(classID,
nsnull,
kIDOMWalletCoreIID,
(void **)&nativeThis);
if (NS_OK != result) {
return JS_FALSE;
}
result = nativeThis->QueryInterface(kIJSNativeInitializerIID, (void **)&initializer);
if (NS_OK == result) {
result = initializer->Initialize(cx, argc, argv);
NS_RELEASE(initializer);
if (NS_OK != result) {
NS_RELEASE(nativeThis);
return JS_FALSE;
}
}
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;
}
//
// WalletCore class initialization
//
extern "C" NS_DOM nsresult NS_InitWalletCoreClass(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, "WalletCore", &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
&WalletCoreClass, // JSClass
WalletCore, // JSNative ctor
0, // ctor args
WalletCoreProperties, // proto props
WalletCoreMethods, // 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 WalletCore JavaScript object
//
extern "C" NS_DOM nsresult NS_NewScriptWalletCore(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn)
{
NS_PRECONDITION(nsnull != aContext && nsnull != aSupports && nsnull != aReturn, "null argument to NS_NewScriptWalletCore");
JSObject *proto;
JSObject *parent;
nsIScriptObjectOwner *owner;
JSContext *jscontext = (JSContext *)aContext->GetNativeContext();
nsresult result = NS_OK;
nsIDOMWalletCore *aWalletCore;
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_InitWalletCoreClass(aContext, (void **)&proto)) {
return NS_ERROR_FAILURE;
}
result = aSupports->QueryInterface(kIWalletCoreIID, (void **)&aWalletCore);
if (NS_OK != result) {
return result;
}
// create a js object for this class
*aReturn = JS_NewObject(jscontext, &WalletCoreClass, proto, parent);
if (nsnull != *aReturn) {
// connect the native object to the js object
JS_SetPrivate(jscontext, (JSObject *)*aReturn, aWalletCore);
}
else {
NS_RELEASE(aWalletCore);
return NS_ERROR_FAILURE;
}
return NS_OK;
}

Просмотреть файл

@ -324,3 +324,21 @@ NS_IMETHODIMP nsWalletCore::CancelWallet()
return Close(mPanelWindow);
}
//----------------------------------------------------------------------------------------
NS_IMETHODIMP nsWalletCore::GetPrefillList(nsString& aPrefillList)
//----------------------------------------------------------------------------------------
{
nsIWalletService *walletservice;
nsresult res;
res = nsServiceManager::GetService(kWalletServiceCID,
kIWalletServiceIID,
(nsISupports **)&walletservice);
if ((NS_OK == res) && (nsnull != walletservice)) {
res = walletservice->WALLET_GetPrefillListForViewer(aPrefillList);
nsServiceManager::ReleaseService(kWalletServiceCID, walletservice);
}
return NS_OK;
}

Просмотреть файл

@ -1,40 +0,0 @@
var walletCore;
function StartUp(windowName)
{
dump("\nDoing " + windowName + " startup...\n");
walletCore = XPAppCoresManager.Find("WalletCore");
dump("Looking up WalletCore...\n");
if (walletCore == null)
{
dump("Creating WalletCore...\n");
walletCore = new WalletCore();
if (walletCore != null)
{
dump("WalletCore has been created.\n");
walletCore.Init("WalletCore");
}
else
{
dump("WalletCore was not created");
}
}
else
{
dump("WalletCore has already been created! Hurrah!\n");
}
if (walletCore != null && windowName != "Top" && windowName != "Bottom")
{
walletCore.PanelLoaded(window);
}
}
function DoSave(results)
{
walletCore.SaveWallet(results);
}
function DoCancel()
{
walletCore.CancelWallet();
}