From 3dcbc14c63e7a423f058cf40cc24ef94e8c676e7 Mon Sep 17 00:00:00 2001 From: "chak%netscape.com" Date: Wed, 1 Aug 2001 14:44:24 +0000 Subject: [PATCH] Fix for #90538 - Downloading files crashes mfcembed.exe r=valeski, sr=blizzard --- embedding/tests/mfcembed/MfcEmbed.cpp | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/embedding/tests/mfcembed/MfcEmbed.cpp b/embedding/tests/mfcembed/MfcEmbed.cpp index a4ccf665ee8b..8d5afced045c 100644 --- a/embedding/tests/mfcembed/MfcEmbed.cpp +++ b/embedding/tests/mfcembed/MfcEmbed.cpp @@ -65,6 +65,12 @@ static char THIS_FILE[] = __FILE__; {0xa2112d6a, 0x0e28, 0x421f, {0xb4, 0x6a, 0x25, 0xc0, 0xb3, 0x8, 0xcb, 0xd0}} static NS_DEFINE_CID(kPromptServiceCID, NS_PROMPTSERVICE_CID); +// this is for overriding the Mozilla default HelperAppLauncherDialog +#include "HelperAppService.h" +#define NS_HELPERAPPLAUNCHERDIALOG_CID \ + {0xf68578eb, 0x6ec2, 0x4169, {0xae, 0x19, 0x8c, 0x62, 0x43, 0xf0, 0xab, 0xe1}} +static NS_DEFINE_CID(kHelperAppLauncherDialogCID, NS_HELPERAPPLAUNCHERDIALOG_CID); + BEGIN_MESSAGE_MAP(CMfcEmbedApp, CWinApp) //{{AFX_MSG_MAP(CMfcEmbedApp) ON_COMMAND(ID_NEW_BROWSER, OnNewBrowser) @@ -169,6 +175,29 @@ nsresult CMfcEmbedApp::OverrideComponents() ::FreeLibrary(overlib); } + // Replace Mozilla's helper app launcher dialog with our own + overlib = ::LoadLibrary(kComponentsLibname); + if (overlib) { + InitHelperAppDlgType InitLib; + MakeFactoryType MakeFactory; + InitLib = reinterpret_cast(::GetProcAddress(overlib, kHelperAppDlgInitFuncName)); + MakeFactory = reinterpret_cast(::GetProcAddress(overlib, kHelperAppDlgFactoryFuncName)); + + if (InitLib && MakeFactory) { + InitLib(overlib); + + nsCOMPtr helperAppDlgFactory; + rv = MakeFactory(getter_AddRefs(helperAppDlgFactory)); + if (NS_SUCCEEDED(rv)) + nsComponentManager::RegisterFactory(kHelperAppLauncherDialogCID, + "Helper App Launcher Dialog", + "@mozilla.org/helperapplauncherdialog;1", + helperAppDlgFactory, + PR_TRUE); // replace existing + } else + ::FreeLibrary(overlib); + } + return rv; }