diff --git a/layout/html/forms/src/nsFormFrame.cpp b/layout/html/forms/src/nsFormFrame.cpp
index e954f6201678..9b3ad29a67c9 100644
--- a/layout/html/forms/src/nsFormFrame.cpp
+++ b/layout/html/forms/src/nsFormFrame.cpp
@@ -62,7 +62,7 @@
#include "prmem.h"
#include "prenv.h"
-#if defined(ClientWallet) || defined(SingleSignon)
+#if defined(ClientWallet) || defined(SingleSignon) || defined(CookieManagement)
#include "nsIServiceManager.h"
#endif
@@ -82,6 +82,12 @@ static NS_DEFINE_IID(kIWalletServiceIID, NS_IWALLETSERVICE_IID);
static NS_DEFINE_IID(kWalletServiceCID, NS_WALLETSERVICE_CID);
#endif
+#if defined(CookieManagement)
+#include "nsINetService.h"
+static NS_DEFINE_IID(kINetServiceIID, NS_INETSERVICE_IID);
+static NS_DEFINE_IID(kNetServiceCID, NS_NETSERVICE_CID);
+#endif
+
//----------------------------------------------------------------------
static NS_DEFINE_IID(kIFormManagerIID, NS_IFORMMANAGER_IID);
@@ -585,8 +591,8 @@ nsFormFrame::OnSubmit(nsIPresContext* aPresContext, nsIFrame* aFrame)
NS_MakeAbsoluteURL(docURL, base, href, absURLSpec);
NS_IF_RELEASE(docURL);
-#ifdef ClientWallet
#ifndef HTMLDialogs
+#ifdef ClientWallet
if (href == "internal-walletPrefill-handler") {
nsresult res;
nsIWalletService *walletservice;
@@ -612,6 +618,34 @@ nsFormFrame::OnSubmit(nsIPresContext* aPresContext, nsIFrame* aFrame)
}
}
#endif
+#ifdef SingleSignon
+ if (href == "internal-signonViewer-handler") {
+ nsresult res;
+ nsIWalletService *walletservice;
+ res = nsServiceManager::GetService(kWalletServiceCID,
+ kIWalletServiceIID,
+ (nsISupports **)&walletservice);
+ if ((NS_OK == res) && (nsnull != walletservice)) {
+ res = walletservice->SI_SignonViewerReturn();
+ NS_RELEASE(walletservice);
+ return NS_OK;
+ }
+ }
+#endif
+#ifdef CookieManagement
+ if (href == "internal-cookieViewer-handler") {
+ nsresult res;
+ nsINetService *netservice;
+ res = nsServiceManager::GetService(kNetServiceCID,
+ kINetServiceIID,
+ (nsISupports **)&netservice);
+ if ((NS_OK == res) && (nsnull != netservice)) {
+ res = netservice->NET_CookieViewerReturn();
+ NS_RELEASE(netservice);
+ return NS_OK;
+ }
+ }
+#endif
#endif
// Now pass on absolute url to the click handler