Index: embed/mozilla/EphyBrowser.cpp =================================================================== RCS file: /cvs/gnome/epiphany/embed/mozilla/EphyBrowser.cpp,v retrieving revision 1.73 diff -p -u -u -p -r1.73 EphyBrowser.cpp --- embed/mozilla/EphyBrowser.cpp 5 Jan 2005 20:09:09 -0000 1.73 +++ embed/mozilla/EphyBrowser.cpp 11 Jan 2005 23:24:49 -0000 @@ -390,9 +390,15 @@ nsresult EphyBrowser::Init (GtkMozEmbed * but we cannot get to it! * See https://bugzilla.mozilla.org/show_bug.cgi?id=94974 */ - mSecurityInfo = do_CreateInstance(NS_SECURE_BROWSER_UI_CONTRACTID, &rv); - NS_ENSURE_TRUE (NS_SUCCEEDED (rv) && mSecurityInfo, NS_ERROR_FAILURE); - mSecurityInfo->Init (mDOMWindow); + mSecurityInfo = do_CreateInstance("@gnome.org/project/epiphany/hacks/secure-browser-ui;1", &rv); + if (NS_SUCCEEDED (rv) && mSecurityInfo) + { + mSecurityInfo->Init (mDOMWindow); + } + else + { + g_warning ("Failed to instantiate nsISecureBrowserUI!\n"); + } #endif mInitialized = PR_TRUE; Index: embed/mozilla/MozRegisterComponents.cpp =================================================================== RCS file: /cvs/gnome/epiphany/embed/mozilla/MozRegisterComponents.cpp,v retrieving revision 1.35 diff -p -u -u -p -r1.35 MozRegisterComponents.cpp --- embed/mozilla/MozRegisterComponents.cpp 8 Jan 2005 23:17:58 -0000 1.35 +++ embed/mozilla/MozRegisterComponents.cpp 11 Jan 2005 23:24:50 -0000 @@ -185,6 +185,8 @@ static const nsModuleComponentInfo sAppC }, }; +/* 5999dfd3-571f-4fcf-964b-386879f5cded */ +#define NEW_CID { 0x5999dfd3, 0x571f, 0x4fcf, { 0x96, 0x4b, 0x38, 0x68, 0x79, 0xf5, 0xcd, 0xed } } gboolean mozilla_register_components (void) @@ -235,6 +237,29 @@ mozilla_register_components (void) } } } + + /* EVIL hackaround for bug ... */ + PRBool done = PR_FALSE; + nsCOMPtr factory; + rv = cm->GetClassObjectByContractID ("@mozilla.org/secure_browser_ui;1", NS_GET_IID(nsIFactory), getter_AddRefs (factory)); + if (NS_SUCCEEDED (rv) && factory) + { + nsCID *cidPtr = nsnull; + rv = cr->ContractIDToCID("@mozilla.org/secure_browser_ui;1", &cidPtr); + if (NS_SUCCEEDED (rv) && cidPtr) + { + rv = cr->UnregisterFactory (*cidPtr, factory); + if (NS_SUCCEEDED (rv)) + { + const nsCID new_cid = NEW_CID; + rv = cr->RegisterFactory (new_cid, "Epiphany Secure Browser Class", "@gnome.org/project/epiphany/hacks/secure-browser-ui;1", factory); + if (NS_SUCCEEDED (rv)) done = PR_TRUE; + } + nsMemory::Free (cidPtr); + } + + } + g_print ("%s\n", done ? "SUCCESS!!!" : "FAILURE"); return ret; }