diff --git a/extensions/wallet/public/nsIWalletService.h b/extensions/wallet/public/nsIWalletService.h index 5bd4cb5b6e4..1f6c5760650 100644 --- a/extensions/wallet/public/nsIWalletService.h +++ b/extensions/wallet/public/nsIWalletService.h @@ -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 diff --git a/extensions/wallet/src/nsWalletService.cpp b/extensions/wallet/src/nsWalletService.cpp index b24c1529f62..c72082677f4 100644 --- a/extensions/wallet/src/nsWalletService.cpp +++ b/extensions/wallet/src/nsWalletService.cpp @@ -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); diff --git a/extensions/wallet/src/nsWalletService.h b/extensions/wallet/src/nsWalletService.h index 51ae0fffe25..f5614003d34 100644 --- a/extensions/wallet/src/nsWalletService.h +++ b/extensions/wallet/src/nsWalletService.h @@ -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); diff --git a/extensions/wallet/src/wallet.cpp b/extensions/wallet/src/wallet.cpp index 70b0dd86941..89f04109012 100644 --- a/extensions/wallet/src/wallet.cpp +++ b/extensions/wallet/src/wallet.cpp @@ -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) { " \"
\" +\n"
-" \" \" +\n", +" \" \" \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 %s: | \" +\n"
+" \"\" + prefillList[i+1] + \": | \" +\n"
" \"\" +\n"
-" \" | \" +\n"
-" \" |