diff --git a/mailnews/base/public/nsIMapiRegistry.idl b/mailnews/base/public/nsIMapiRegistry.idl deleted file mode 100644 index b12fca109243..000000000000 --- a/mailnews/base/public/nsIMapiRegistry.idl +++ /dev/null @@ -1,76 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsISupports.idl" - -/** - * This interface provides support for registering Mozilla as the default - * Mail Client. This interface can also be used to get/set the user preference - * for the default Mail Client. - * - */ -[scriptable, uuid(c5be14ba-4e0a-4eec-a1b8-04363761d63c)] -interface nsIMapiRegistry: nsISupports { - - /** This is set to TRUE if Mozilla is the default Application - */ - readonly attribute boolean isDefaultMailClient; - - /** This is set TRUE only once per session. - */ - readonly attribute boolean showDialog; - - /** This will update the registry keys to set Mozilla as default Mail Client. - */ - void setDefaultMailClient(); - - /** This will reset the registry keys for the default Mail Client. - */ - void unsetDefaultMailClient(); - - /** This will bring the dialog asking the user if he/she wants to set - * Mozilla as default Mail Client. - * Call this only if Mozilla is not the default Mail client - */ - void showMailIntegrationDialog(); - -}; - -%{C++ -#define NS_IMAPIWINHOOK_CONTRACTID "@mozilla.org/mapiregistry;1" -#define NS_IMAPIWINHOOK_CLASSNAME "Mozilla MAPI Registry" -%} diff --git a/mailnews/mapi/build/MapiProxy.def b/mailnews/mapi/build/MapiProxy.def deleted file mode 100644 index a5ba81c5af00..000000000000 --- a/mailnews/mapi/build/MapiProxy.def +++ /dev/null @@ -1,47 +0,0 @@ -; ***** BEGIN LICENSE BLOCK ***** -; Version: MPL 1.1/GPL 2.0/LGPL 2.1 -; -; The contents of this file are subject to the Mozilla Public License Version -; 1.1 (the "License"); you may not use this file except in compliance with -; the License. You may obtain a copy of the License at -; http://www.mozilla.org/MPL/ -; -; Software distributed under the License is distributed on an "AS IS" basis, -; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -; for the specific language governing rights and limitations under the -; License. -; -; The Original Code is Mozilla. -; -; The Initial Developer of the Original Code is -; Netscape Communications Corp. -; Portions created by the Initial Developer are Copyright (C) 2001 -; the Initial Developer. All Rights Reserved. -; -; Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) -; -; Alternatively, the contents of this file may be used under the terms of -; either the GNU General Public License Version 2 or later (the "GPL"), or -; the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -; in which case the provisions of the GPL or the LGPL are applicable instead -; of those above. If you wish to allow use of your version of this file only -; under the terms of either the GPL or the LGPL, and not to allow others to -; use your version of this file under the terms of the MPL, indicate your -; decision by deleting the provisions above and replace them with the notice -; and other provisions required by the GPL or the LGPL. If you do not delete -; the provisions above, a recipient may use your version of this file under -; the terms of any one of the MPL, the GPL or the LGPL. -; -; ***** END LICENSE BLOCK ***** - -LIBRARY MapiProxy.dll -DESCRIPTION 'Proxy/Stub DLL' - -EXPORTS - DllGetClassObject @1 PRIVATE - DllCanUnloadNow @2 PRIVATE - GetProxyDllInfo @3 PRIVATE - DllRegisterServer @4 PRIVATE - DllUnregisterServer @5 PRIVATE - - diff --git a/mailnews/mapi/build/makefile.win b/mailnews/mapi/build/makefile.win deleted file mode 100644 index 482629f557b2..000000000000 --- a/mailnews/mapi/build/makefile.win +++ /dev/null @@ -1,67 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is Mozilla. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corp. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\.. - -MODULE = MapiProxy -EXPORT_LIBRARY = $(MODULE) -LIBRARY_NAME = $(MODULE) -DEFFILE = MapiProxy.def - -include <$(DEPTH)\config\config.mak> - -################################################################## - -LCFLAGS=-DREGISTER_PROXY_DLL -DUNICODE -D_UNICODE - -OBJS= .\$(OBJDIR)\dlldata.obj \ - .\$(OBJDIR)\msgMapi_p.obj \ - .\$(OBJDIR)\msgMapi_i.obj \ - $(NULL) - -WIN_LIBS= rpcrt4.lib - -EXPORTS= msgMapi.h \ - msgMapiDefs.h \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> - -msgMapi.h msgMapi_p.c msgMapi_i.c dlldata.c : msgMapi.idl - midl $(UNICODE_FLAGS) msgMapi.idl - - - diff --git a/mailnews/mapi/mapiDll/Mapi32.DEF b/mailnews/mapi/mapiDll/Mapi32.DEF deleted file mode 100644 index b6818cce3cbd..000000000000 --- a/mailnews/mapi/mapiDll/Mapi32.DEF +++ /dev/null @@ -1,44 +0,0 @@ -; ***** BEGIN LICENSE BLOCK ***** -; Version: MPL 1.1/GPL 2.0/LGPL 2.1 -; -; The contents of this file are subject to the Mozilla Public License Version -; 1.1 (the "License"); you may not use this file except in compliance with -; the License. You may obtain a copy of the License at -; http://www.mozilla.org/MPL/ -; -; Software distributed under the License is distributed on an "AS IS" basis, -; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -; for the specific language governing rights and limitations under the -; License. -; -; The Original Code is Mozilla. -; -; The Initial Developer of the Original Code is -; Netscape Communications Corp. -; Portions created by the Initial Developer are Copyright (C) 2001 -; the Initial Developer. All Rights Reserved. -; -; Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) -; -; Alternatively, the contents of this file may be used under the terms of -; either the GNU General Public License Version 2 or later (the "GPL"), or -; the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -; in which case the provisions of the GPL or the LGPL are applicable instead -; of those above. If you wish to allow use of your version of this file only -; under the terms of either the GPL or the LGPL, and not to allow others to -; use your version of this file under the terms of the MPL, indicate your -; decision by deleting the provisions above and replace them with the notice -; and other provisions required by the GPL or the LGPL. If you do not delete -; the provisions above, a recipient may use your version of this file under -; the terms of any one of the MPL, the GPL or the LGPL. -; -; ***** END LICENSE BLOCK ***** - -LIBRARY mapi32.dll -DESCRIPTION 'Mozilla Simple MAPI Support' - -EXPORTS - MAPILogon - MAPILogoff - - diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp deleted file mode 100644 index af5e26b6983b..000000000000 --- a/mailnews/mapi/mapiDll/MapiDll.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include -#include -#include -#include -#include "mapi.h" -#include "msgMapi.h" -#include "msgMapiMain.h" - -nsIMapi *pNsMapi = NULL; -BOOL bUnInitialize = FALSE; - -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, - {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; -const IID IID_nsIMapi = {0x6EDCD38E,0x8861,0x11d5, - {0xA3,0xDD,0x00,0xB0,0xD0,0xF3,0xBA,0xA7}}; - -HANDLE hMutex; - -BOOL StartMozilla() -{ - HRESULT hRes = 0; - - hRes = ::CoInitialize(NULL); - bUnInitialize = (hRes == S_OK); - - hRes = ::CoCreateInstance(CLSID_nsMapiImp, NULL, CLSCTX_LOCAL_SERVER, - IID_nsIMapi, (LPVOID *)&pNsMapi); - if (hRes != 0) - { - SetLastError(hRes); - return FALSE; - } - - hRes = pNsMapi->Initialize(); - if (hRes != 0) - { - pNsMapi->Release(); - pNsMapi = NULL; - SetLastError(hRes); - return FALSE; - } - - return TRUE; -} - -void ShutDownMozilla() -{ - WaitForSingleObject(hMutex, INFINITE); - if (pNsMapi != NULL) - { - pNsMapi->CleanUp(); - pNsMapi->Release(); - pNsMapi = NULL; - } - ReleaseMutex(hMutex); - if (bUnInitialize) - ::CoUninitialize(); -} - -BOOL CheckMozilla() -{ - BOOL bRetValue = TRUE; - - WaitForSingleObject(hMutex, INFINITE); - if (pNsMapi == NULL) - bRetValue = StartMozilla(); - - ReleaseMutex(hMutex); - - return bRetValue; -} - -BOOL WINAPI DllMain(HINSTANCE aInstance, DWORD aReason, LPVOID aReserved) -{ - switch (aReason) - { - case DLL_PROCESS_ATTACH : - { - hMutex = CreateMutex(NULL, FALSE, NULL); - break; - } - case DLL_PROCESS_DETACH : - { - ShutDownMozilla(); - ReleaseMutex(hMutex); - CloseHandle(hMutex); - break; - } - } - - return TRUE; -} - -//////////////////////////////////////////////////////////////////////////////////////// -// The MAPILogon function begins a Simple MAPI session, loading the default message //// -// store and address book providers //// -//////////////////////////////////////////////////////////////////////////////////////// - -ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPTSTR aProfileName, - LPTSTR aPassword, FLAGS aFlags, - ULONG aReserved, LPLHANDLE aSession) -{ - HRESULT hr = 0; - ULONG nSessionId = 0; - - if (CheckMozilla() == FALSE) - return MAPI_E_FAILURE; - - if (!(aFlags & MAPI_UNICODE)) - { - // Need to convert the parameters to Unicode. - - char *pUserName = (char *) aProfileName; - char *pPassWord = (char *) aPassword; - - TCHAR ProfileName[MAX_NAME_LEN] = {0}; - TCHAR PassWord[MAX_PW_LEN] = {0}; - - if (pUserName != NULL) - { - if (!MultiByteToWideChar(CP_ACP, 0, pUserName, -1, ProfileName, - MAX_NAME_LEN)) - return MAPI_E_FAILURE; - } - - if (pPassWord != NULL) - { - if (!MultiByteToWideChar(CP_ACP, 0, pPassWord, -1, PassWord, - MAX_NAME_LEN)) - return MAPI_E_FAILURE; - } - - hr = pNsMapi->Login(aUIParam, ProfileName, PassWord, aFlags, - &nSessionId); - } - else - hr = pNsMapi->Login(aUIParam, aProfileName, aPassword, - aFlags, &nSessionId); - - - if (hr != 0) - { - return nSessionId; - } - - *aSession = (LHANDLE) nSessionId; - return SUCCESS_SUCCESS; -} - -ULONG FAR PASCAL MAPILogoff(LHANDLE aSession, ULONG aUIParam, - FLAGS aFlags, ULONG aReserved) -{ - HRESULT hr = 0; - - hr = pNsMapi->Logoff((ULONG) aSession); - if (hr != 0) - { - return MAPI_E_INVALID_SESSION; - } - - return SUCCESS_SUCCESS; -} - - - diff --git a/mailnews/mapi/mapiDll/makefile.win b/mailnews/mapi/mapiDll/makefile.win deleted file mode 100644 index 238b343111f3..000000000000 --- a/mailnews/mapi/mapiDll/makefile.win +++ /dev/null @@ -1,54 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is Mozilla. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corp. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\.. - -MODULE = mozMapi32 -EXPORT_LIBRARY = $(MODULE) -LIBRARY_NAME = $(MODULE) -DEFFILE = Mapi32.def - -include <$(DEPTH)\config\config.mak> -############################################################### - -LCFLAGS=-DUNICODE -D_UNICODE - -OBJS= .\$(OBJDIR)\MapiDll.obj - -WIN_LIBS= ole32.lib - -include <$(DEPTH)\config\rules.mak> - diff --git a/mailnews/mapi/mapihook/build/MapiProxy.def b/mailnews/mapi/mapihook/build/MapiProxy.def deleted file mode 100644 index a5ba81c5af00..000000000000 --- a/mailnews/mapi/mapihook/build/MapiProxy.def +++ /dev/null @@ -1,47 +0,0 @@ -; ***** BEGIN LICENSE BLOCK ***** -; Version: MPL 1.1/GPL 2.0/LGPL 2.1 -; -; The contents of this file are subject to the Mozilla Public License Version -; 1.1 (the "License"); you may not use this file except in compliance with -; the License. You may obtain a copy of the License at -; http://www.mozilla.org/MPL/ -; -; Software distributed under the License is distributed on an "AS IS" basis, -; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -; for the specific language governing rights and limitations under the -; License. -; -; The Original Code is Mozilla. -; -; The Initial Developer of the Original Code is -; Netscape Communications Corp. -; Portions created by the Initial Developer are Copyright (C) 2001 -; the Initial Developer. All Rights Reserved. -; -; Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) -; -; Alternatively, the contents of this file may be used under the terms of -; either the GNU General Public License Version 2 or later (the "GPL"), or -; the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -; in which case the provisions of the GPL or the LGPL are applicable instead -; of those above. If you wish to allow use of your version of this file only -; under the terms of either the GPL or the LGPL, and not to allow others to -; use your version of this file under the terms of the MPL, indicate your -; decision by deleting the provisions above and replace them with the notice -; and other provisions required by the GPL or the LGPL. If you do not delete -; the provisions above, a recipient may use your version of this file under -; the terms of any one of the MPL, the GPL or the LGPL. -; -; ***** END LICENSE BLOCK ***** - -LIBRARY MapiProxy.dll -DESCRIPTION 'Proxy/Stub DLL' - -EXPORTS - DllGetClassObject @1 PRIVATE - DllCanUnloadNow @2 PRIVATE - GetProxyDllInfo @3 PRIVATE - DllRegisterServer @4 PRIVATE - DllUnregisterServer @5 PRIVATE - - diff --git a/mailnews/mapi/mapihook/build/makefile.win b/mailnews/mapi/mapihook/build/makefile.win deleted file mode 100644 index 482629f557b2..000000000000 --- a/mailnews/mapi/mapihook/build/makefile.win +++ /dev/null @@ -1,67 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is Mozilla. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corp. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\.. - -MODULE = MapiProxy -EXPORT_LIBRARY = $(MODULE) -LIBRARY_NAME = $(MODULE) -DEFFILE = MapiProxy.def - -include <$(DEPTH)\config\config.mak> - -################################################################## - -LCFLAGS=-DREGISTER_PROXY_DLL -DUNICODE -D_UNICODE - -OBJS= .\$(OBJDIR)\dlldata.obj \ - .\$(OBJDIR)\msgMapi_p.obj \ - .\$(OBJDIR)\msgMapi_i.obj \ - $(NULL) - -WIN_LIBS= rpcrt4.lib - -EXPORTS= msgMapi.h \ - msgMapiDefs.h \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> - -msgMapi.h msgMapi_p.c msgMapi_i.c dlldata.c : msgMapi.idl - midl $(UNICODE_FLAGS) msgMapi.idl - - - diff --git a/mailnews/mapi/mapihook/makefile.win b/mailnews/mapi/mapihook/makefile.win deleted file mode 100644 index aab50c71eadb..000000000000 --- a/mailnews/mapi/mapihook/makefile.win +++ /dev/null @@ -1,76 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is Mozilla. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corp. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Srilatha Moturi (srilatha@netscape.com) -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\.. - -MODULE = msgMapi -EXPORT_LIBRARY = $(MODULE) -LIBRARY_NAME = $(MODULE) - -include <$(DEPTH)\config\config.mak> -############################################################################ - -REQUIRES = xpcom \ - string \ - $(NULL) - -LCFLAGS=-DUNICODE -D_UNICODE - -OBJS= \ - ..\build\$(OBJDIR)\msgMapi_i.obj \ - .\$(OBJDIR)\msgMapiFactory.obj \ - .\$(OBJDIR)\msgMapiHook.obj \ - .\$(OBJDIR)\msgMapiImp.obj \ - .\$(OBJDIR)\msgMapiMain.obj \ - .\$(OBJDIR)\msgMapiSupport.obj \ - $(NULL) - -LLIBS= \ - $(DIST)\lib\xpcom.lib \ - $(LIBNSPR) \ - $(NULL) - -WIN_LIBS= ole32.lib - -EXPORTS= \ - msgMapiFactory.h \ - msgMapiHook.h \ - msgMapiImp.h \ - msgMapiMain.h \ - msgMapiSupport.h \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> diff --git a/mailnews/mapi/mapihook/msgMapiFactory.cpp b/mailnews/mapi/mapihook/msgMapiFactory.cpp deleted file mode 100644 index 15cfa9e29199..000000000000 --- a/mailnews/mapi/mapihook/msgMapiFactory.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#undef UNICODE -#undef _UNICODE - -#include "msgMapiFactory.h" -#include "msgMapiImp.h" -#include "msgMapi.h" - -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - - -nsMapiFactory::nsMapiFactory() -: m_cRef(1) -{ -} - -nsMapiFactory::~nsMapiFactory() -{ -} - -STDMETHODIMP nsMapiFactory::QueryInterface(const IID& aIid, void** aPpv) -{ - if ((aIid == IID_IUnknown) || (aIid == IID_IClassFactory)) - { - *aPpv = static_cast(this); - } - else - { - *aPpv = nsnull; - return E_NOINTERFACE; - } - reinterpret_cast(*aPpv)->AddRef(); - return S_OK; -} - -STDMETHODIMP_(ULONG) nsMapiFactory::AddRef() -{ - return (PR_AtomicIncrement(&m_cRef)); -} - -STDMETHODIMP_(ULONG) nsMapiFactory::Release() -{ - PRInt32 temp; - temp = PR_AtomicDecrement(&m_cRef); - if (m_cRef == 0) - { - delete this; - return 0; - } - - return temp; -} - -STDMETHODIMP nsMapiFactory::CreateInstance(IUnknown* aUnknownOuter, - const IID& aIid, - void** aPpv) -{ - // Cannot aggregate. - - if (aUnknownOuter != nsnull) - { - return CLASS_E_NOAGGREGATION ; - } - - // Create component. - - nsMapiImp* pImp = new nsMapiImp(); - if (pImp == nsnull) - { - return E_OUTOFMEMORY ; - } - - // Get the requested interface. - HRESULT hr = pImp->QueryInterface(aIid, aPpv); - - // Release the IUnknown pointer. - // (If QueryInterface failed, component will delete itself.) - - pImp->Release(); - return hr; -} - -STDMETHODIMP nsMapiFactory::LockServer(PRBool aLock) -{ - return S_OK ; -} diff --git a/mailnews/mapi/mapihook/msgMapiFactory.h b/mailnews/mapi/mapihook/msgMapiFactory.h deleted file mode 100644 index 4c2ce50d8034..000000000000 --- a/mailnews/mapi/mapihook/msgMapiFactory.h +++ /dev/null @@ -1,69 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_FACTORY_H -#define MSG_MAPI_FACTORY_H - -#include -#include -#include "nspr.h" - - -class nsMapiFactory : public IClassFactory -{ -public : - - // IUnknown - - STDMETHODIMP QueryInterface (REFIID aIid, void** aPpv); - STDMETHODIMP_(ULONG) AddRef(void); - STDMETHODIMP_(ULONG) Release(void); - - // IClassFactory - - STDMETHODIMP CreateInstance (LPUNKNOWN aUnkOuter, REFIID aIid, void **aPpv); - STDMETHODIMP LockServer (BOOL aLock); - - nsMapiFactory(); - ~nsMapiFactory(); - -private : - - PRInt32 m_cRef; -}; - -#endif // MSG_MAPI_FACTORY_H - diff --git a/mailnews/mapi/mapihook/msgMapiHook.cpp b/mailnews/mapi/mapihook/msgMapiHook.cpp deleted file mode 100644 index 53cd7eee8128..000000000000 --- a/mailnews/mapi/mapihook/msgMapiHook.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#define MAPI_STARTUP_ARG "/MAPIStartUp" - -#include - -#include "nsCOMPtr.h" -#include "nsIComponentManager.h" -#include "nsIServiceManager.h" -#include "nsISupports.h" -#include "nsIPromptService.h" -#include "nsAppShellCIDs.h" -#include "nsIAppShellService.h" -#include "nsINativeAppSupport.h" -#include "nsICmdLineService.h" -#include "nsIProfileInternal.h" -#include "nsIMsgAccountManager.h" -#include "nsIDOMWindowInternal.h" -#include "nsXPIDLString.h" -#include "nsReadableUtils.h" -#include "nsMsgBaseCID.h" -#include "nsIStringBundle.h" -#include "nsString.h" - -#include "nsIMsgCompFields.h" -#include "nsIMsgComposeParams.h" -#include "nsIMsgCompose.h" -#include "nsMsgCompCID.h" -#include "nsIMsgSend.h" -#include "nsIProxyObjectManager.h" -#include "nsIMsgComposeService.h" -#include "nsProxiedService.h" -#include "nsEscape.h" - -#include "msgMapiDefs.h" -#include "msgMapi.h" -#include "msgMapiHook.h" -#include "msgMapiSupport.h" -#include "msgMapiMain.h" - - -static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); -static NS_DEFINE_CID(kCmdLineServiceCID, NS_COMMANDLINE_SERVICE_CID); -static NS_DEFINE_CID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); -static NS_DEFINE_CID(kAccountMgrServiceCID, NS_MSGACCOUNTMANAGER_CID); -static NS_DEFINE_CID(kMsgSendCID, NS_MSGSEND_CID); -static NS_DEFINE_CID(kCompServiceCID, NS_MSGCOMPOSESERVICE_CID); - -#define MAPI_PROPERTIES_CHROME "chrome://messenger/locale/mapi.properties" - -PRBool nsMapiHook::isMapiService = PR_FALSE; - -PRBool nsMapiHook::Initialize() -{ - PRBool bResult = PR_FALSE; - nsresult rv; - nsCOMPtr native; - - nsCOMPtr cmdLineArgs(do_GetService(kCmdLineServiceCID, &rv)); - if (NS_FAILED(rv)) return PR_FALSE; - - nsCOMPtr appShell (do_GetService( "@mozilla.org/appshell/appShellService;1", &rv)); - if (NS_FAILED(rv)) return PR_FALSE; - - rv = appShell->GetNativeAppSupport( getter_AddRefs( native )); - if (NS_FAILED(rv)) return PR_FALSE; - - rv = native->EnsureProfile(cmdLineArgs); - if (NS_SUCCEEDED(rv)) - { - bResult = PR_TRUE; - PRBool serverMode = PR_FALSE; - native->GetIsServerMode(&serverMode); - if (serverMode == PR_FALSE) - { - native->SetIsServerMode( PR_TRUE ); - isMapiService = PR_TRUE; - } - } - - return bResult; -} - -void nsMapiHook::CleanUp() -{ - nsresult rv; - char arg[] = MAPI_STARTUP_ARG; - char *mapiStartup = nsnull; - - nsCOMPtr cmdLineArgs(do_GetService(kCmdLineServiceCID, &rv)); - if (NS_FAILED(rv)) return; - - rv = cmdLineArgs->GetCmdLineValue(arg, &mapiStartup); - if (NS_SUCCEEDED(rv) && (mapiStartup != nsnull || isMapiService == PR_TRUE)) - { - nsCOMPtr appShell(do_GetService( "@mozilla.org/appshell/appShellService;1", &rv)); - if (NS_FAILED(rv)) return; - - nsCOMPtr native; - rv = appShell->GetNativeAppSupport( getter_AddRefs( native )); - if (native && NS_SUCCEEDED(rv)) - { - native->SetIsServerMode( PR_FALSE ); - // This closes app if there are no top-level windows. - appShell->UnregisterTopLevelWindow( 0 ); - } - } -} - -PRBool nsMapiHook::DisplayLoginDialog(PRBool aLogin, PRUnichar **aUsername, \ - PRUnichar **aPassword) -{ - nsresult rv; - PRBool btnResult = PR_FALSE; - - nsCOMPtr appShell(do_GetService( "@mozilla.org/appshell/appShellService;1", &rv)); - if (NS_FAILED(rv) || !appShell) return PR_FALSE; - - nsCOMPtr dlgService(do_GetService("@mozilla.org/embedcomp/prompt-service;1", &rv)); - if (NS_SUCCEEDED(rv) && dlgService) - { - nsCOMPtr bundleService(do_GetService(kStringBundleServiceCID, &rv)); - if (NS_FAILED(rv) || !bundleService) return PR_FALSE; - - nsCOMPtr bundle; - rv = bundleService->CreateBundle(MAPI_PROPERTIES_CHROME, getter_AddRefs(bundle)); - if (NS_FAILED(rv) || !bundle) return PR_FALSE; - - nsIDOMWindowInternal *hiddenWindow; - rv = appShell->GetHiddenDOMWindow(&hiddenWindow); - if (NS_FAILED(rv) || !hiddenWindow) return PR_FALSE; - - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_FAILED(rv)) return PR_FALSE; - - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_FAILED(rv)) return PR_FALSE; - - nsXPIDLString loginTitle; - const PRUnichar *brandStrings[] = { brandName.get() }; - NS_NAMED_LITERAL_STRING(loginTitlePropertyTag, "loginTitle"); - const PRUnichar *dTitlePropertyTag = loginTitlePropertyTag.get(); - rv = bundle->FormatStringFromName(dTitlePropertyTag, brandStrings, 1, - getter_Copies(loginTitle)); - if (NS_FAILED(rv)) return PR_FALSE; - - if (aLogin) - { - nsXPIDLString loginText; - rv = bundle->GetStringFromName(NS_LITERAL_STRING("loginTextwithName").get(), - getter_Copies(loginText)); - if (NS_FAILED(rv) || !loginText) return PR_FALSE; - - - - rv = dlgService->PromptUsernameAndPassword(hiddenWindow, loginTitle, - loginText, aUsername, aPassword, - nsnull, PR_FALSE, &btnResult); - } - else - { - //nsString loginString; - nsXPIDLString loginText; - const PRUnichar *userNameStrings[] = { *aUsername }; - - NS_NAMED_LITERAL_STRING(loginTextPropertyTag, "loginText"); - const PRUnichar *dpropertyTag = loginTextPropertyTag.get(); - rv = bundle->FormatStringFromName(dpropertyTag, userNameStrings, 1, - getter_Copies(loginText)); - if (NS_FAILED(rv)) return PR_FALSE; - - rv = dlgService->PromptPassword(hiddenWindow, loginTitle, loginText, - aPassword, nsnull, PR_FALSE, &btnResult); - } - } - - return btnResult; -} - -PRBool nsMapiHook::VerifyUserName(const PRUnichar *aUsername, char **aIdKey) -{ - nsresult rv; - - if (aUsername == nsnull) - return PR_FALSE; - - nsCOMPtr accountManager(do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv)); - if (NS_FAILED(rv)) return PR_FALSE; - nsCOMPtr identities; - rv = accountManager->GetAllIdentities(getter_AddRefs(identities)); - if (NS_FAILED(rv)) return PR_FALSE; - PRUint32 numIndentities; - identities->Count(&numIndentities); - - for (PRUint32 i = 0; i < numIndentities; i++) - { - // convert supports->Identity - nsCOMPtr thisSupports; - rv = identities->GetElementAt(i, getter_AddRefs(thisSupports)); - if (NS_FAILED(rv)) continue; - nsCOMPtr thisIdentity(do_QueryInterface(thisSupports, &rv)); - if (NS_SUCCEEDED(rv) && thisIdentity) - { - nsXPIDLCString email; - rv = thisIdentity->GetEmail(getter_Copies(email)); - if (NS_FAILED(rv)) continue; - - // get the username from the email and compare with the username - nsCAutoString aEmail(email.get()); - PRInt32 index = aEmail.FindChar('@'); - if (index != -1) - aEmail.Truncate(index); - - if (nsDependentString(aUsername) == NS_ConvertASCIItoUCS2(aEmail)) // == overloaded - return NS_SUCCEEDED(thisIdentity->GetKey(aIdKey)); - } - } - - return PR_FALSE; -} - - diff --git a/mailnews/mapi/mapihook/msgMapiHook.h b/mailnews/mapi/mapihook/msgMapiHook.h deleted file mode 100644 index 4ea1ec800891..000000000000 --- a/mailnews/mapi/mapihook/msgMapiHook.h +++ /dev/null @@ -1,56 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_HOOK_H_ -#define MSG_MAPI_HOOK_H_ - -#include "prtypes.h" - -class nsMapiHook -{ - public : - - static PRBool Initialize(); - static PRBool DisplayLoginDialog(PRBool aLogin, PRUnichar **aUsername, - PRUnichar **aPassword); - static PRBool VerifyUserName(const PRUnichar *aUsername, char **aIdKey); - - static void CleanUp(); - - static PRBool isMapiService; -}; - -#endif // MSG_MAPI_HOOK_H_ diff --git a/mailnews/mapi/mapihook/msgMapiImp.cpp b/mailnews/mapi/mapihook/msgMapiImp.cpp deleted file mode 100644 index 767b3ad0d44e..000000000000 --- a/mailnews/mapi/mapihook/msgMapiImp.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include - -#include "msgMapiDefs.h" -#include "msgMapi.h" -#include "msgMapiImp.h" -#include "msgMapiFactory.h" -#include "msgMapiMain.h" - -#include "msgMapiHook.h" -#include "nsString.h" - -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - -nsMapiImp::nsMapiImp() -: m_cRef(1) -{ - m_Lock = PR_NewLock(); -} - -nsMapiImp::~nsMapiImp() -{ - if (m_Lock) - PR_DestroyLock(m_Lock); -} - -STDMETHODIMP nsMapiImp::QueryInterface(const IID& aIid, void** aPpv) -{ - if (aIid == IID_IUnknown) - { - *aPpv = static_cast(this); - } - else if (aIid == IID_nsIMapi) - { - *aPpv = static_cast(this); - } - else - { - *aPpv = nsnull; - return E_NOINTERFACE; - } - - reinterpret_cast(*aPpv)->AddRef(); - return S_OK; -} - -STDMETHODIMP_(ULONG) nsMapiImp::AddRef() -{ - return PR_AtomicIncrement(&m_cRef); -} - -STDMETHODIMP_(ULONG) nsMapiImp::Release() -{ - PRInt32 temp; - temp = PR_AtomicDecrement(&m_cRef); - if (m_cRef == 0) - { - delete this; - return 0; - } - - return temp; -} - -STDMETHODIMP nsMapiImp::Initialize() -{ - HRESULT hr = E_FAIL; - - if (!m_Lock) - return E_FAIL; - - PR_Lock(m_Lock); - - // Initialize MAPI Configuration - - nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration(); - if (pConfig != nsnull) - if (nsMapiHook::Initialize()) - hr = S_OK; - - PR_Unlock(m_Lock); - - return hr; -} - -STDMETHODIMP nsMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_PW_TYPE aPassWord, - unsigned long aFlags, unsigned long *aSessionId) -{ - HRESULT hr = E_FAIL; - - nsString tempProfileName; - nsString tempPassCode; - - PRBool bNewSession = PR_FALSE; - PRBool bLoginUI = PR_FALSE; - PRBool bPasswordUI = PR_FALSE; - PRBool bResult = PR_FALSE; - - char *id_key = nsnull; - - // See wheather user wants a new session with the same user name. - - if (aFlags & MAPI_NEW_SESSION) - bNewSession = PR_TRUE; - - // Check For Profile Name - - if (aLogin == nsnull || aLogin[0] == '\0') - { - // no user name is passed by the user - - if (aFlags & MAPI_LOGON_UI) // asked to show the login dialog - bLoginUI = PR_TRUE; - else - { - // user name not passed and not opted to show the logon UI. - // it is an error. - - *aSessionId = MAPI_E_FAILURE; - return hr; - } - } - else - tempProfileName.Assign ((PRUnichar *) aLogin); - - // Check For Password - - if (aPassWord == nsnull || aPassWord[0] == '\0') - { - // no password.. is opted for Password UI. - - if ((aFlags & MAPI_PASSWORD_UI) && !bPasswordUI) - bPasswordUI = PR_TRUE; - - // Looking for 'else' !!. Don't know wheather password is set! :-) - } - else - tempPassCode.Assign ((PRUnichar *) aPassWord); - - if (bLoginUI) - { - // Display the Login UI - - PRUnichar *Name = nsnull, *Pass = nsnull; - - bResult = nsMapiHook::DisplayLoginDialog(PR_TRUE, &Name, &Pass); - if (bResult == PR_FALSE) - { - *aSessionId = MAPI_E_USER_ABORT; - return hr; - } - - tempProfileName.Assign (Name); - tempPassCode.Assign (Pass); - - delete(Name); - delete(Pass); - } - else if (bPasswordUI) - { - // Display the Password UI - - PRUnichar *Name = (PRUnichar *)tempProfileName.get() ; - PRUnichar *Pass = nsnull; - - bResult = nsMapiHook::DisplayLoginDialog(PR_FALSE, &Name, &Pass); - if (bResult == PR_FALSE) - { - *aSessionId = MAPI_E_USER_ABORT; - return hr; - } - - tempPassCode.Assign (Pass) ; - - delete(Pass); - } - - // No matter what ever the params are; Profile Name must be resloved by now - - if (tempProfileName.Length() <= 0) - { - *aSessionId = MAPI_E_LOGIN_FAILURE; - return hr; - } - - // Verify wheather username exists in the current mozilla profile. - - bResult = nsMapiHook::VerifyUserName(tempProfileName.get(), &id_key); - if (bResult == PR_FALSE) - { - *aSessionId = MAPI_E_LOGIN_FAILURE; - return hr; - } - - // finally register(create) the session. - - - PRUint32 nSession_Id; - PRInt16 nResult = 0; - - nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration(); - if (pConfig != nsnull) - nResult = pConfig->RegisterSession(aUIArg, tempProfileName.get(), - tempPassCode.get(), - (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession, - &nSession_Id, id_key); - - switch (nResult) - { - case -1 : - { - *aSessionId = MAPI_E_TOO_MANY_SESSIONS; - return hr; - } - case 0 : - { - *aSessionId = MAPI_E_INSUFFICIENT_MEMORY; - return hr; - } - default : - { - *aSessionId = nSession_Id; - break; - } - } - - return S_OK; -} - -STDMETHODIMP nsMapiImp::Logoff (unsigned long aSession) -{ - nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration(); - - if (pConfig->UnRegisterSession((PRUint32)aSession)) - return S_OK; - - return E_FAIL; -} - -STDMETHODIMP nsMapiImp::CleanUp() -{ - nsMapiHook::CleanUp(); - return S_OK; -} diff --git a/mailnews/mapi/mapihook/msgMapiImp.h b/mailnews/mapi/mapihook/msgMapiImp.h deleted file mode 100644 index d7bb4a3ce799..000000000000 --- a/mailnews/mapi/mapihook/msgMapiImp.h +++ /dev/null @@ -1,76 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_IMP_H -#define MSG_MAPI_IMP_H - -#include -#include -#include "msgMapi.h" -#include "nsXPIDLString.h" -#include "nspr.h" - -class nsMapiImp : public nsIMapi -{ - -public : - - // IUnknown - - STDMETHODIMP QueryInterface(const IID& aIid, void** aPpv); - STDMETHODIMP_(ULONG) AddRef(); - STDMETHODIMP_(ULONG) Release(); - - // Interface INsMapi - - STDMETHODIMP Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, - LOGIN_PW_TYPE aPassWord, unsigned long aFlags, - unsigned long *aSessionId); - - STDMETHODIMP Initialize(); - STDMETHODIMP Logoff (unsigned long aSession); - STDMETHODIMP CleanUp(); - - nsMapiImp(); - ~nsMapiImp(); - -private : - - PRLock *m_Lock; - PRInt32 m_cRef; -}; - -#endif // MSG_MAPI_IMP_H diff --git a/mailnews/mapi/mapihook/msgMapiMain.cpp b/mailnews/mapi/mapihook/msgMapiMain.cpp deleted file mode 100644 index a0d3fb3ae9b2..000000000000 --- a/mailnews/mapi/mapihook/msgMapiMain.cpp +++ /dev/null @@ -1,361 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "msgMapiMain.h" - -// move to xpcom bug 81956. -class nsPRUintKey : public nsHashKey { -protected: - PRUint32 mKey; -public: - nsPRUintKey(PRUint32 key) : mKey(key) {} - - PRUint32 HashCode(void) const { - return mKey; - } - - PRBool Equals(const nsHashKey *aKey) const { - return mKey == ((const nsPRUintKey *) aKey)->mKey; - } - nsHashKey *Clone() const { - return new nsPRUintKey(mKey); - } - PRUint32 GetValue() { return mKey; } -}; -// - - -nsMAPIConfiguration *nsMAPIConfiguration::m_pSelfRef = nsnull; -PRUint32 nsMAPIConfiguration::session_generator = 0; -PRUint32 nsMAPIConfiguration::sessionCount = 0; - -nsMAPIConfiguration *nsMAPIConfiguration::GetMAPIConfiguration() -{ - if (m_pSelfRef == nsnull) - m_pSelfRef = new nsMAPIConfiguration(); - - return m_pSelfRef; -} - -nsMAPIConfiguration::nsMAPIConfiguration() -: m_nMaxSessions(MAX_SESSIONS), - m_ProfileMap(nsnull), - m_SessionMap(nsnull) -{ - m_Lock = PR_NewLock(); - m_ProfileMap = new nsHashtable(); - m_SessionMap = new nsHashtable(); - NS_ASSERTION(m_SessionMap && m_ProfileMap, "hashtables not created"); -} - -static PRBool -FreeSessionMapEntries(nsHashKey *aKey, void *aData, void* aClosure) -{ - nsMAPISession *pTemp = (nsMAPISession*) aData; - delete pTemp; - pTemp = nsnull; - return PR_TRUE; -} - -static PRBool -FreeProfileMapEntries(nsHashKey *aKey, void *aData, void* aClosure) -{ - ProfileNameSessionIdMap *pTemp = (ProfileNameSessionIdMap *) aData; - delete pTemp; - pTemp = nsnull; - return PR_TRUE; -} - -nsMAPIConfiguration::~nsMAPIConfiguration() -{ - if (m_Lock) - PR_DestroyLock(m_Lock); - - if (m_SessionMap) - { - m_SessionMap->Reset(FreeSessionMapEntries); - delete m_SessionMap; - m_SessionMap = nsnull; - } - - if (m_ProfileMap) - { - m_ProfileMap->Reset(FreeProfileMapEntries); - delete m_ProfileMap; - m_ProfileMap = nsnull; - } -} - -void nsMAPIConfiguration::OpenConfiguration() -{ - // No. of max. sessions is set to MAX_SESSIONS. In future - // if it is decided to have configuration (registry) - // parameter, this function can be used to set the - // max sessions; - - return; -} - -PRInt16 nsMAPIConfiguration::RegisterSession(PRUint32 aHwnd, - const PRUnichar *aUserName, const PRUnichar *aPassword, - PRBool aForceDownLoad, PRBool aNewSession, - PRUint32 *aSession, char *aIdKey) -{ - PRInt16 nResult = 0; - PRUint32 n_SessionId = 0; - - PR_Lock(m_Lock); - - // Check whether max sessions is exceeded - - if (sessionCount >= m_nMaxSessions) - { - PR_Unlock(m_Lock); - return -1; - } - - nsAutoString usernameString(aUserName); - usernameString.AppendInt(aHwnd); - nsStringKey usernameKey(usernameString.get()); - - ProfileNameSessionIdMap *pProfTemp = nsnull; - pProfTemp = (ProfileNameSessionIdMap *) m_ProfileMap->Get(&usernameKey); - if (pProfTemp != nsnull) - { - n_SessionId = pProfTemp->sessionId; - - // check wheather is there any session. if not let us create one. - - nsPRUintKey sessionKey(n_SessionId); - nsMAPISession *pCheckSession = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - if (pCheckSession == nsnull) - n_SessionId = 0; - } - - // create a new session ; if new session is specified OR there is no session - - if (aNewSession || n_SessionId == 0) // checking for n_SessionId is a concession - { - nsMAPISession *pTemp = nsnull; - pTemp = new nsMAPISession(aHwnd, aUserName, - aPassword, aForceDownLoad, aIdKey); - - if (pTemp != nsnull) - { - if (pProfTemp == nsnull) - { - pProfTemp = new ProfileNameSessionIdMap; - if (pProfTemp == nsnull) - { - delete pTemp; - pTemp = nsnull; - PR_Unlock(m_Lock); - return 0; - } - - pProfTemp->shareCount = 1; - } - else - pProfTemp->shareCount++; - - session_generator++; - - // I don't think there will be (2 power 32) sessions alive - // in a cycle. This is an assumption - - if (session_generator == 0) - session_generator++; - - nsPRUintKey sessionKey(session_generator); - m_SessionMap->Put(&sessionKey, pTemp); - - pProfTemp->sessionId = session_generator; - m_ProfileMap->Put(&usernameKey, (void*)pProfTemp); - - *aSession = session_generator; - sessionCount++; - nResult = 1; - } - } - else - if (n_SessionId > 0) // share the session; - { - nsPRUintKey sessionKey(n_SessionId); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - if (pTemp != nsnull) - { - pTemp->IncrementSession(); - pProfTemp->shareCount++; - *aSession = n_SessionId; - nResult = 1; - } - } - - PR_Unlock(m_Lock); - return nResult; -} - -PRBool nsMAPIConfiguration::UnRegisterSession(PRUint32 aSessionID) -{ - PRBool bResult = PR_FALSE; - - PR_Lock(m_Lock); - - if (aSessionID != 0) - { - nsPRUintKey sessionKey(aSessionID); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - - if (pTemp != nsnull) - { - if (pTemp->DecrementSession() == 0) - { - nsAutoString usernameString(pTemp->m_pProfileName.get()); - usernameString.AppendInt(pTemp->m_hAppHandle); - nsStringKey stringKey(usernameString.get()); - - ProfileNameSessionIdMap *pProfTemp = nsnull; - pProfTemp = (ProfileNameSessionIdMap *) m_ProfileMap->Get(&stringKey); - pProfTemp->shareCount--; - if (pProfTemp->shareCount == 0) - { - m_ProfileMap->Remove(&stringKey); - delete pProfTemp; - pProfTemp = nsnull; - } - - delete pTemp; - pTemp = nsnull; - - m_SessionMap->Remove(&sessionKey); - sessionCount--; - bResult = PR_TRUE; - } - } - } - PR_Unlock(m_Lock); - return bResult; -} - -PRUnichar *nsMAPIConfiguration::GetPassWord(PRUint32 aSessionID) -{ - PRUnichar *pResult = nsnull; - - PR_Lock(m_Lock); - - if (aSessionID != 0) - { - nsPRUintKey sessionKey(aSessionID); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - - if (pTemp) - { - pResult = pTemp->GetPassWord(); - } - } - - PR_Unlock(m_Lock); - - return pResult; -} - -char *nsMAPIConfiguration::GetIdKey(PRUint32 aSessionID) -{ - char *pResult = nsnull; - - PR_Lock(m_Lock); - - if (aSessionID != 0) - { - nsPRUintKey sessionKey(aSessionID); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - if (pTemp) - { - pResult = pTemp->GetIdKey(); - } - } - - PR_Unlock(m_Lock); - return pResult; -} - - - -nsMAPISession::nsMAPISession(PRUint32 aHwnd, const PRUnichar *aUserName,\ - const PRUnichar *aPassword, \ - PRBool aForceDownLoad, char *aKey) -: m_bIsForcedDownLoad(aForceDownLoad), - m_hAppHandle(aHwnd), - m_nShared(1), - m_pIdKey(aKey) -{ - m_pProfileName.Assign(aUserName); - m_pPassword.Assign(aPassword); -} - -nsMAPISession::~nsMAPISession() -{ - if (m_pIdKey != nsnull) - { - delete [] m_pIdKey; - m_pIdKey = nsnull; - } -} - -PRUint32 nsMAPISession::IncrementSession() -{ - return ++m_nShared; -} - -PRUint32 nsMAPISession::DecrementSession() -{ - return --m_nShared; -} - -PRUint32 nsMAPISession::GetSessionCount() -{ - return m_nShared; -} - -PRUnichar *nsMAPISession::GetPassWord() -{ - return (PRUnichar *)m_pPassword.get(); -} - -char *nsMAPISession::GetIdKey() -{ - return m_pIdKey; -} diff --git a/mailnews/mapi/mapihook/msgMapiMain.h b/mailnews/mapi/mapihook/msgMapiMain.h deleted file mode 100644 index af3666a16706..000000000000 --- a/mailnews/mapi/mapihook/msgMapiMain.h +++ /dev/null @@ -1,111 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_MAIN_H_ -#define NSG_MAPI_MAIN_H_ - -#define MAX_NAME_LEN 256 -#define MAX_PW_LEN 256 -#define MAX_SESSIONS 50 - -#include "nsXPIDLString.h" -#include "nspr.h" -#include "nsString.h" -#include "nsHashtable.h" - -typedef struct _tagProfileNameSessionIdMap -{ - PRUint32 sessionId; - PRUint32 shareCount; - -} ProfileNameSessionIdMap; - - -class nsMAPIConfiguration -{ -private : - - static PRUint32 session_generator; - static PRUint32 sessionCount; - static nsMAPIConfiguration *m_pSelfRef; - PRLock *m_Lock; - PRUint32 m_nMaxSessions; - - - nsHashtable *m_ProfileMap; - nsHashtable *m_SessionMap; - nsMAPIConfiguration(); - -public : - static nsMAPIConfiguration *GetMAPIConfiguration(); - void OpenConfiguration(); - PRInt16 RegisterSession(PRUint32 aHwnd, const PRUnichar *aUserName, \ - const PRUnichar *aPassword, PRBool aForceDownLoad, \ - PRBool aNewSession, PRUint32 *aSession, char *aIdKey); - PRBool UnRegisterSession(PRUint32 aSessionID); - PRUnichar *GetPassWord(PRUint32 aSessionID); - char *GetIdKey(PRUint32 aSessionID); - ~nsMAPIConfiguration(); -}; - -class nsMAPISession -{ - friend class nsMAPIConfiguration; - - private : - - PRBool m_bIsForcedDownLoad; - PRBool m_bApp_or_Service; - PRUint32 m_hAppHandle; - PRUint32 m_nShared; - char *m_pIdKey; - nsString m_pProfileName; - nsString m_pPassword; - - public : - - nsMAPISession(PRUint32 aHwnd, const PRUnichar *aUserName, \ - const PRUnichar *aPassword, \ - PRBool aForceDownLoad, char *aKey); - PRUint32 IncrementSession(); - PRUint32 DecrementSession(); - PRUint32 GetSessionCount(); - PRUnichar *nsMAPISession::GetPassWord(); - char *nsMAPISession::GetIdKey(); - ~nsMAPISession(); -}; - -#endif // MSG_MAPI_MAIN_H_ diff --git a/mailnews/mapi/mapihook/msgMapiSupport.cpp b/mailnews/mapi/mapihook/msgMapiSupport.cpp deleted file mode 100644 index 60d98585ed5b..000000000000 --- a/mailnews/mapi/mapihook/msgMapiSupport.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "msgMapiSupport.h" -#include "nsISupports.h" - -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, \ - {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - -PRBool WINAPI DllMain(HINSTANCE aInstance, DWORD aReason, LPVOID aReserved) -{ - switch (aReason) - { - case DLL_PROCESS_ATTACH : - { - // Initialize MAPI Support - - nsMapiSupport *pTemp = nsMapiSupport::GetNsMapiSupport(); - break; - } - case DLL_PROCESS_DETACH : - { - nsMapiSupport *pTemp = nsMapiSupport::GetNsMapiSupport(); - pTemp->UnInitMSCom(); - delete pTemp; - pTemp = nsnull; - } - } - - return PR_TRUE; -} - -extern "C" -{ - void __declspec(dllexport) Init() - { - nsMapiSupport *pTemp = nsMapiSupport::GetNsMapiSupport(); - if (pTemp != nsnull) - pTemp->InitMSCom(); - } -} - -nsMapiSupport* nsMapiSupport::m_pSelfRef = nsnull; - -nsMapiSupport *nsMapiSupport::GetNsMapiSupport() -{ - if (m_pSelfRef == nsnull) - m_pSelfRef = new nsMapiSupport(); - - return m_pSelfRef; -} - -nsMapiSupport::nsMapiSupport() -: m_dwRegister(0), - m_nsMapiFactory(nsnull) -{ -} - -nsMapiSupport::~nsMapiSupport() -{ -} - -PRBool nsMapiSupport::RegsiterComponents() -{ - if (m_nsMapiFactory == nsnull) // No Registering if already done. Sanity Check!! - { - m_nsMapiFactory = new nsMapiFactory(); - - if (m_nsMapiFactory != nsnull) - { - HRESULT hr = ::CoRegisterClassObject(CLSID_nsMapiImp, \ - m_nsMapiFactory, \ - CLSCTX_LOCAL_SERVER, \ - REGCLS_MULTIPLEUSE, \ - &m_dwRegister); - - if (FAILED(hr)) - { - m_nsMapiFactory->Release() ; - m_nsMapiFactory = nsnull; - return PR_FALSE; - } - } - } - - return PR_TRUE; -} - -PRBool nsMapiSupport::UnRegisterComponents() -{ - if (m_dwRegister != 0) - ::CoRevokeClassObject(m_dwRegister); - - if (m_nsMapiFactory != nsnull) - { - m_nsMapiFactory->Release(); - m_nsMapiFactory = nsnull; - } - - return PR_TRUE; -} - -void nsMapiSupport::InitMSCom() -{ - ::CoInitialize(nsnull); - RegsiterComponents(); -} - -void nsMapiSupport::UnInitMSCom() -{ - UnRegisterComponents(); - ::CoUninitialize(); -} diff --git a/mailnews/mapi/mapihook/msgMapiSupport.h b/mailnews/mapi/mapihook/msgMapiSupport.h deleted file mode 100644 index cdcf2dd47f12..000000000000 --- a/mailnews/mapi/mapihook/msgMapiSupport.h +++ /dev/null @@ -1,64 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - # Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_SUPPORT_H_ -#define MSG_MAPI_SUPPORT_H_ - -#include "msgMapiFactory.h" -#include "prtypes.h" - -class __declspec(dllexport) nsMapiSupport -{ - private : - - DWORD m_dwRegister; - static nsMapiSupport *m_pSelfRef; - nsMapiFactory *m_nsMapiFactory; - - nsMapiSupport(); - - public : - - static nsMapiSupport *GetNsMapiSupport(); - ~nsMapiSupport(); - - PRBool RegsiterComponents(); - void UnInitMSCom(); - void InitMSCom(); - PRBool UnRegisterComponents(); -}; - -#endif // MSG_MAPI_SUPPORT_H_ diff --git a/mailnews/mapi/mapihook/public/makefile.win b/mailnews/mapi/mapihook/public/makefile.win deleted file mode 100644 index ddf0148083cb..000000000000 --- a/mailnews/mapi/mapihook/public/makefile.win +++ /dev/null @@ -1,48 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Srilatha Moturi -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\..\.. - -MODULE=nsMapiRegistry -XPIDL_MODULE=mapiregistry - -XPIDLSRCS = \ - .\nsIMapiRegistry.idl \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> - diff --git a/mailnews/mapi/mapihook/public/nsIMapiRegistry.idl b/mailnews/mapi/mapihook/public/nsIMapiRegistry.idl deleted file mode 100644 index b12fca109243..000000000000 --- a/mailnews/mapi/mapihook/public/nsIMapiRegistry.idl +++ /dev/null @@ -1,76 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsISupports.idl" - -/** - * This interface provides support for registering Mozilla as the default - * Mail Client. This interface can also be used to get/set the user preference - * for the default Mail Client. - * - */ -[scriptable, uuid(c5be14ba-4e0a-4eec-a1b8-04363761d63c)] -interface nsIMapiRegistry: nsISupports { - - /** This is set to TRUE if Mozilla is the default Application - */ - readonly attribute boolean isDefaultMailClient; - - /** This is set TRUE only once per session. - */ - readonly attribute boolean showDialog; - - /** This will update the registry keys to set Mozilla as default Mail Client. - */ - void setDefaultMailClient(); - - /** This will reset the registry keys for the default Mail Client. - */ - void unsetDefaultMailClient(); - - /** This will bring the dialog asking the user if he/she wants to set - * Mozilla as default Mail Client. - * Call this only if Mozilla is not the default Mail client - */ - void showMailIntegrationDialog(); - -}; - -%{C++ -#define NS_IMAPIWINHOOK_CONTRACTID "@mozilla.org/mapiregistry;1" -#define NS_IMAPIWINHOOK_CLASSNAME "Mozilla MAPI Registry" -%} diff --git a/mailnews/mapi/mapihook/src/Registry.cpp b/mailnews/mapi/mapihook/src/Registry.cpp deleted file mode 100644 index 51e59f82eedf..000000000000 --- a/mailnews/mapi/mapihook/src/Registry.cpp +++ /dev/null @@ -1,322 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include -#include -#include "nsString.h" -#include "Registry.h" - -#define MAPI_PROXY_DLL_NAME "MapiProxy.dll" -#define MAPI_STARTUP_ARG "/MAPIStartUp" -#define MAX_SIZE 2048 - -// Size of a CLSID as a string -const int CLSID_STRING_SIZE = 39; - -// Proxy/Stub Dll Routines - -typedef HRESULT (__stdcall ProxyServer)(); - - -// Convert a CLSID to a char string. - -BOOL CLSIDtochar(const CLSID& clsid, char* szCLSID, - int length) -{ - LPOLESTR wszCLSID = NULL; - - // Get CLSID - HRESULT hr = StringFromCLSID(clsid, &wszCLSID); - if (FAILED(hr)) - return FALSE; - - // Covert from wide characters to non-wide. - wcstombs(szCLSID, wszCLSID, length); - - // Free memory. - CoTaskMemFree(wszCLSID); - - return TRUE; -} - -// Create a key and set its value. - -BOOL setKeyAndValue(nsCAutoString keyName, const char* subKey, - const char* theValue) -{ - HKEY hKey; - BOOL retValue = TRUE; - - nsCAutoString theKey(keyName); - if (subKey != NULL) - { - theKey += "\\"; - theKey += subKey; - } - - // Create and open key and subkey. - long lResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, theKey.get(), - 0, NULL, REG_OPTION_NON_VOLATILE, - KEY_ALL_ACCESS, NULL, &hKey, NULL); - if (lResult != ERROR_SUCCESS) - return FALSE ; - - // Set the Value. - if (theValue != NULL) - { - lResult = RegSetValueEx(hKey, NULL, 0, REG_SZ, (BYTE *)theValue, - strlen(theValue)+1); - if (lResult != ERROR_SUCCESS) - retValue = FALSE; - } - - RegCloseKey(hKey); - return TRUE; -} - -// Delete a key and all of its descendents. - -LONG recursiveDeleteKey(HKEY hKeyParent, // Parent of key to delete - const char* lpszKeyChild) // Key to delete -{ - // Open the child. - HKEY hKeyChild ; - LONG lRes = RegOpenKeyEx(hKeyParent, lpszKeyChild, 0, - KEY_ALL_ACCESS, &hKeyChild) ; - if (lRes != ERROR_SUCCESS) - { - return lRes ; - } - - // Enumerate all of the decendents of this child. - FILETIME time ; - char szBuffer[MAX_SIZE] ; - DWORD dwSize = MAX_SIZE ; - while (RegEnumKeyEx(hKeyChild, 0, szBuffer, &dwSize, NULL, - NULL, NULL, &time) == S_OK) - { - // Delete the decendents of this child. - lRes = recursiveDeleteKey(hKeyChild, szBuffer) ; - if (lRes != ERROR_SUCCESS) - { - // Cleanup before exiting. - RegCloseKey(hKeyChild) ; - return lRes; - } - dwSize = MAX_SIZE; - } - - // Close the child. - RegCloseKey(hKeyChild) ; - - // Delete this child. - return RegDeleteKey(hKeyParent, lpszKeyChild) ; -} - -void RegisterProxy() -{ - HINSTANCE h = NULL; - ProxyServer *RegisterFunc = NULL; - - char szModule[MAX_SIZE]; - char *pTemp = NULL; - - HMODULE hModule = GetModuleHandle(NULL); - DWORD dwResult = ::GetModuleFileName(hModule, szModule, - sizeof(szModule)/sizeof(char)); - if (dwResult == 0) - return; - - pTemp = strrchr(szModule, '\\'); - if (pTemp == NULL) - return; - - *pTemp = '\0'; - nsCAutoString proxyPath(szModule); - - proxyPath += "\\"; - proxyPath += MAPI_PROXY_DLL_NAME; - - h = LoadLibrary(proxyPath.get()); - if (h == NULL) - return; - - RegisterFunc = (ProxyServer *) GetProcAddress(h, "DllRegisterServer"); - if (RegisterFunc) - RegisterFunc(); - - FreeLibrary(h); -} - -void UnRegisterProxy() -{ - HINSTANCE h = NULL; - ProxyServer *UnRegisterFunc = NULL; - - char szModule[MAX_SIZE]; - char *pTemp = NULL; - - HMODULE hModule = GetModuleHandle(NULL); - DWORD dwResult = ::GetModuleFileName(hModule, szModule, - sizeof(szModule)/sizeof(char)); - if (dwResult == 0) - return; - - pTemp = strrchr(szModule, '\\'); - if (pTemp == NULL) - return; - - *pTemp = '\0'; - nsCAutoString proxyPath(szModule); - - proxyPath += "\\"; - proxyPath += MAPI_PROXY_DLL_NAME; - - h = LoadLibrary(proxyPath.get()); - if (h == NULL) - return; - - UnRegisterFunc = (ProxyServer *) GetProcAddress(h, "DllUnregisterServer"); - if (UnRegisterFunc) - UnRegisterFunc(); - - FreeLibrary(h); -} - -// Register the component in the registry. - -HRESULT RegisterServer(const CLSID& clsid, // Class ID - const char* szFriendlyName, // Friendly Name - const char* szVerIndProgID, // Programmatic - const char* szProgID) // IDs -{ - HMODULE hModule = GetModuleHandle(NULL); - char szModuleName[MAX_SIZE]; - char szCLSID[CLSID_STRING_SIZE]; - - nsCAutoString independentProgId(szVerIndProgID); - nsCAutoString progId(szProgID); - - DWORD dwResult = ::GetModuleFileName(hModule, szModuleName, - sizeof(szModuleName)/sizeof(char)); - - if (dwResult == 0) - return S_FALSE; - - nsCAutoString moduleName(szModuleName); - nsCAutoString registryKey("CLSID\\"); - - moduleName += " /server "; - moduleName += MAPI_STARTUP_ARG; - - // Convert the CLSID into a char. - - if (!CLSIDtochar(clsid, szCLSID, sizeof(szCLSID))) - return S_FALSE; - registryKey += szCLSID; - - // Add the CLSID to the registry. - if (!setKeyAndValue(registryKey, NULL, szFriendlyName)) - return S_FALSE; - - if (!setKeyAndValue(registryKey, "LocalServer32", moduleName.get())) - return S_FALSE; - - // Add the ProgID subkey under the CLSID key. - if (!setKeyAndValue(registryKey, "ProgID", szProgID)) - return S_FALSE; - - // Add the version-independent ProgID subkey under CLSID key. - if (!setKeyAndValue(registryKey, "VersionIndependentProgID", szVerIndProgID)) - return S_FALSE; - - // Add the version-independent ProgID subkey under HKEY_CLASSES_ROOT. - if (!setKeyAndValue(independentProgId, NULL, szFriendlyName)) - return S_FALSE; - if (!setKeyAndValue(independentProgId, "CLSID", szCLSID)) - return S_FALSE; - if (!setKeyAndValue(independentProgId, "CurVer", szProgID)) - return S_FALSE; - - // Add the versioned ProgID subkey under HKEY_CLASSES_ROOT. - if (!setKeyAndValue(progId, NULL, szFriendlyName)) - return S_FALSE; - if (!setKeyAndValue(progId, "CLSID", szCLSID)) - return S_FALSE; - - RegisterProxy(); - - return S_OK; -} - -LONG UnregisterServer(const CLSID& clsid, // Class ID - const char* szVerIndProgID, // Programmatic - const char* szProgID) // IDs -{ - LONG lResult = S_OK; - - // Convert the CLSID into a char. - - char szCLSID[CLSID_STRING_SIZE]; - if (!CLSIDtochar(clsid, szCLSID, sizeof(szCLSID))) - return S_FALSE; - - UnRegisterProxy(); - - nsCAutoString registryKey("CLSID\\"); - registryKey += szCLSID; - - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, registryKey.get()); - if (lResult == ERROR_SUCCESS || lResult == ERROR_FILE_NOT_FOUND) - return lResult; - - registryKey += "\\LocalServer32"; - - // Delete only the path for this server. - - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, registryKey.get()); - if (lResult != ERROR_SUCCESS && lResult != ERROR_FILE_NOT_FOUND) - return lResult; - - // Delete the version-independent ProgID Key. - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szVerIndProgID); - if (lResult != ERROR_SUCCESS && lResult != ERROR_FILE_NOT_FOUND) - return lResult; - - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szProgID); - - return lResult; -} diff --git a/mailnews/mapi/mapihook/src/Registry.h b/mailnews/mapi/mapihook/src/Registry.h deleted file mode 100644 index 428b88f1ddf1..000000000000 --- a/mailnews/mapi/mapihook/src/Registry.h +++ /dev/null @@ -1,57 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Krishna Mohan Khandrika - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef _REGISTRY_H_ -#define _REGISTRY_H_ - -#include -#include - -// This function will register a component in the Registry. - -HRESULT RegisterServer(const CLSID& clsid, - const char* szFriendlyName, - const char* szVerIndProgID, - const char* szProgID) ; - -// This function will unregister a component. - -HRESULT UnregisterServer(const CLSID& clsid, - const char* szVerIndProgID, - const char* szProgID) ; - -#endif diff --git a/mailnews/mapi/mapihook/src/makefile.win b/mailnews/mapi/mapihook/src/makefile.win deleted file mode 100644 index 2f2d9f753f7d..000000000000 --- a/mailnews/mapi/mapihook/src/makefile.win +++ /dev/null @@ -1,72 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Srilatha Moturi -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\..\.. - -MODULE=nsMapiRegistry -MAKE_OBJ_TYPE = DLL -LIBRARY_NAME=$(MODULE) -MODULE_NAME=nsMapiRegistry - - -CPPSRCS= \ - nsMapiRegistry.cpp \ - Registry.cpp \ - nsMapiRegistryUtils.cpp \ - $(NULL) - -CPP_OBJS= \ - .\$(OBJDIR)\nsMapiRegistry.obj \ - .\$(OBJDIR)\Registry.obj \ - .\$(OBJDIR)\nsMapiRegistryUtils.obj \ - $(NULL) - -LLIBS= \ - $(DIST)\lib\xpcom.lib \ - $(LIBNSPR) \ - $(NULL) - -WIN_LIBS= \ - ole32.lib \ - $(NULL) -EXPORTS= \ - nsMapiRegistry.h \ - Registry.h \ - nsMapiRegistryUtils.h \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> diff --git a/mailnews/mapi/mapihook/src/msgMapiFactory.cpp b/mailnews/mapi/mapihook/src/msgMapiFactory.cpp deleted file mode 100644 index 15cfa9e29199..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiFactory.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#undef UNICODE -#undef _UNICODE - -#include "msgMapiFactory.h" -#include "msgMapiImp.h" -#include "msgMapi.h" - -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - - -nsMapiFactory::nsMapiFactory() -: m_cRef(1) -{ -} - -nsMapiFactory::~nsMapiFactory() -{ -} - -STDMETHODIMP nsMapiFactory::QueryInterface(const IID& aIid, void** aPpv) -{ - if ((aIid == IID_IUnknown) || (aIid == IID_IClassFactory)) - { - *aPpv = static_cast(this); - } - else - { - *aPpv = nsnull; - return E_NOINTERFACE; - } - reinterpret_cast(*aPpv)->AddRef(); - return S_OK; -} - -STDMETHODIMP_(ULONG) nsMapiFactory::AddRef() -{ - return (PR_AtomicIncrement(&m_cRef)); -} - -STDMETHODIMP_(ULONG) nsMapiFactory::Release() -{ - PRInt32 temp; - temp = PR_AtomicDecrement(&m_cRef); - if (m_cRef == 0) - { - delete this; - return 0; - } - - return temp; -} - -STDMETHODIMP nsMapiFactory::CreateInstance(IUnknown* aUnknownOuter, - const IID& aIid, - void** aPpv) -{ - // Cannot aggregate. - - if (aUnknownOuter != nsnull) - { - return CLASS_E_NOAGGREGATION ; - } - - // Create component. - - nsMapiImp* pImp = new nsMapiImp(); - if (pImp == nsnull) - { - return E_OUTOFMEMORY ; - } - - // Get the requested interface. - HRESULT hr = pImp->QueryInterface(aIid, aPpv); - - // Release the IUnknown pointer. - // (If QueryInterface failed, component will delete itself.) - - pImp->Release(); - return hr; -} - -STDMETHODIMP nsMapiFactory::LockServer(PRBool aLock) -{ - return S_OK ; -} diff --git a/mailnews/mapi/mapihook/src/msgMapiFactory.h b/mailnews/mapi/mapihook/src/msgMapiFactory.h deleted file mode 100644 index 4c2ce50d8034..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiFactory.h +++ /dev/null @@ -1,69 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_FACTORY_H -#define MSG_MAPI_FACTORY_H - -#include -#include -#include "nspr.h" - - -class nsMapiFactory : public IClassFactory -{ -public : - - // IUnknown - - STDMETHODIMP QueryInterface (REFIID aIid, void** aPpv); - STDMETHODIMP_(ULONG) AddRef(void); - STDMETHODIMP_(ULONG) Release(void); - - // IClassFactory - - STDMETHODIMP CreateInstance (LPUNKNOWN aUnkOuter, REFIID aIid, void **aPpv); - STDMETHODIMP LockServer (BOOL aLock); - - nsMapiFactory(); - ~nsMapiFactory(); - -private : - - PRInt32 m_cRef; -}; - -#endif // MSG_MAPI_FACTORY_H - diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook/src/msgMapiHook.cpp deleted file mode 100644 index 53cd7eee8128..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiHook.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#define MAPI_STARTUP_ARG "/MAPIStartUp" - -#include - -#include "nsCOMPtr.h" -#include "nsIComponentManager.h" -#include "nsIServiceManager.h" -#include "nsISupports.h" -#include "nsIPromptService.h" -#include "nsAppShellCIDs.h" -#include "nsIAppShellService.h" -#include "nsINativeAppSupport.h" -#include "nsICmdLineService.h" -#include "nsIProfileInternal.h" -#include "nsIMsgAccountManager.h" -#include "nsIDOMWindowInternal.h" -#include "nsXPIDLString.h" -#include "nsReadableUtils.h" -#include "nsMsgBaseCID.h" -#include "nsIStringBundle.h" -#include "nsString.h" - -#include "nsIMsgCompFields.h" -#include "nsIMsgComposeParams.h" -#include "nsIMsgCompose.h" -#include "nsMsgCompCID.h" -#include "nsIMsgSend.h" -#include "nsIProxyObjectManager.h" -#include "nsIMsgComposeService.h" -#include "nsProxiedService.h" -#include "nsEscape.h" - -#include "msgMapiDefs.h" -#include "msgMapi.h" -#include "msgMapiHook.h" -#include "msgMapiSupport.h" -#include "msgMapiMain.h" - - -static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); -static NS_DEFINE_CID(kCmdLineServiceCID, NS_COMMANDLINE_SERVICE_CID); -static NS_DEFINE_CID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); -static NS_DEFINE_CID(kAccountMgrServiceCID, NS_MSGACCOUNTMANAGER_CID); -static NS_DEFINE_CID(kMsgSendCID, NS_MSGSEND_CID); -static NS_DEFINE_CID(kCompServiceCID, NS_MSGCOMPOSESERVICE_CID); - -#define MAPI_PROPERTIES_CHROME "chrome://messenger/locale/mapi.properties" - -PRBool nsMapiHook::isMapiService = PR_FALSE; - -PRBool nsMapiHook::Initialize() -{ - PRBool bResult = PR_FALSE; - nsresult rv; - nsCOMPtr native; - - nsCOMPtr cmdLineArgs(do_GetService(kCmdLineServiceCID, &rv)); - if (NS_FAILED(rv)) return PR_FALSE; - - nsCOMPtr appShell (do_GetService( "@mozilla.org/appshell/appShellService;1", &rv)); - if (NS_FAILED(rv)) return PR_FALSE; - - rv = appShell->GetNativeAppSupport( getter_AddRefs( native )); - if (NS_FAILED(rv)) return PR_FALSE; - - rv = native->EnsureProfile(cmdLineArgs); - if (NS_SUCCEEDED(rv)) - { - bResult = PR_TRUE; - PRBool serverMode = PR_FALSE; - native->GetIsServerMode(&serverMode); - if (serverMode == PR_FALSE) - { - native->SetIsServerMode( PR_TRUE ); - isMapiService = PR_TRUE; - } - } - - return bResult; -} - -void nsMapiHook::CleanUp() -{ - nsresult rv; - char arg[] = MAPI_STARTUP_ARG; - char *mapiStartup = nsnull; - - nsCOMPtr cmdLineArgs(do_GetService(kCmdLineServiceCID, &rv)); - if (NS_FAILED(rv)) return; - - rv = cmdLineArgs->GetCmdLineValue(arg, &mapiStartup); - if (NS_SUCCEEDED(rv) && (mapiStartup != nsnull || isMapiService == PR_TRUE)) - { - nsCOMPtr appShell(do_GetService( "@mozilla.org/appshell/appShellService;1", &rv)); - if (NS_FAILED(rv)) return; - - nsCOMPtr native; - rv = appShell->GetNativeAppSupport( getter_AddRefs( native )); - if (native && NS_SUCCEEDED(rv)) - { - native->SetIsServerMode( PR_FALSE ); - // This closes app if there are no top-level windows. - appShell->UnregisterTopLevelWindow( 0 ); - } - } -} - -PRBool nsMapiHook::DisplayLoginDialog(PRBool aLogin, PRUnichar **aUsername, \ - PRUnichar **aPassword) -{ - nsresult rv; - PRBool btnResult = PR_FALSE; - - nsCOMPtr appShell(do_GetService( "@mozilla.org/appshell/appShellService;1", &rv)); - if (NS_FAILED(rv) || !appShell) return PR_FALSE; - - nsCOMPtr dlgService(do_GetService("@mozilla.org/embedcomp/prompt-service;1", &rv)); - if (NS_SUCCEEDED(rv) && dlgService) - { - nsCOMPtr bundleService(do_GetService(kStringBundleServiceCID, &rv)); - if (NS_FAILED(rv) || !bundleService) return PR_FALSE; - - nsCOMPtr bundle; - rv = bundleService->CreateBundle(MAPI_PROPERTIES_CHROME, getter_AddRefs(bundle)); - if (NS_FAILED(rv) || !bundle) return PR_FALSE; - - nsIDOMWindowInternal *hiddenWindow; - rv = appShell->GetHiddenDOMWindow(&hiddenWindow); - if (NS_FAILED(rv) || !hiddenWindow) return PR_FALSE; - - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_FAILED(rv)) return PR_FALSE; - - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_FAILED(rv)) return PR_FALSE; - - nsXPIDLString loginTitle; - const PRUnichar *brandStrings[] = { brandName.get() }; - NS_NAMED_LITERAL_STRING(loginTitlePropertyTag, "loginTitle"); - const PRUnichar *dTitlePropertyTag = loginTitlePropertyTag.get(); - rv = bundle->FormatStringFromName(dTitlePropertyTag, brandStrings, 1, - getter_Copies(loginTitle)); - if (NS_FAILED(rv)) return PR_FALSE; - - if (aLogin) - { - nsXPIDLString loginText; - rv = bundle->GetStringFromName(NS_LITERAL_STRING("loginTextwithName").get(), - getter_Copies(loginText)); - if (NS_FAILED(rv) || !loginText) return PR_FALSE; - - - - rv = dlgService->PromptUsernameAndPassword(hiddenWindow, loginTitle, - loginText, aUsername, aPassword, - nsnull, PR_FALSE, &btnResult); - } - else - { - //nsString loginString; - nsXPIDLString loginText; - const PRUnichar *userNameStrings[] = { *aUsername }; - - NS_NAMED_LITERAL_STRING(loginTextPropertyTag, "loginText"); - const PRUnichar *dpropertyTag = loginTextPropertyTag.get(); - rv = bundle->FormatStringFromName(dpropertyTag, userNameStrings, 1, - getter_Copies(loginText)); - if (NS_FAILED(rv)) return PR_FALSE; - - rv = dlgService->PromptPassword(hiddenWindow, loginTitle, loginText, - aPassword, nsnull, PR_FALSE, &btnResult); - } - } - - return btnResult; -} - -PRBool nsMapiHook::VerifyUserName(const PRUnichar *aUsername, char **aIdKey) -{ - nsresult rv; - - if (aUsername == nsnull) - return PR_FALSE; - - nsCOMPtr accountManager(do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv)); - if (NS_FAILED(rv)) return PR_FALSE; - nsCOMPtr identities; - rv = accountManager->GetAllIdentities(getter_AddRefs(identities)); - if (NS_FAILED(rv)) return PR_FALSE; - PRUint32 numIndentities; - identities->Count(&numIndentities); - - for (PRUint32 i = 0; i < numIndentities; i++) - { - // convert supports->Identity - nsCOMPtr thisSupports; - rv = identities->GetElementAt(i, getter_AddRefs(thisSupports)); - if (NS_FAILED(rv)) continue; - nsCOMPtr thisIdentity(do_QueryInterface(thisSupports, &rv)); - if (NS_SUCCEEDED(rv) && thisIdentity) - { - nsXPIDLCString email; - rv = thisIdentity->GetEmail(getter_Copies(email)); - if (NS_FAILED(rv)) continue; - - // get the username from the email and compare with the username - nsCAutoString aEmail(email.get()); - PRInt32 index = aEmail.FindChar('@'); - if (index != -1) - aEmail.Truncate(index); - - if (nsDependentString(aUsername) == NS_ConvertASCIItoUCS2(aEmail)) // == overloaded - return NS_SUCCEEDED(thisIdentity->GetKey(aIdKey)); - } - } - - return PR_FALSE; -} - - diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.h b/mailnews/mapi/mapihook/src/msgMapiHook.h deleted file mode 100644 index 4ea1ec800891..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiHook.h +++ /dev/null @@ -1,56 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_HOOK_H_ -#define MSG_MAPI_HOOK_H_ - -#include "prtypes.h" - -class nsMapiHook -{ - public : - - static PRBool Initialize(); - static PRBool DisplayLoginDialog(PRBool aLogin, PRUnichar **aUsername, - PRUnichar **aPassword); - static PRBool VerifyUserName(const PRUnichar *aUsername, char **aIdKey); - - static void CleanUp(); - - static PRBool isMapiService; -}; - -#endif // MSG_MAPI_HOOK_H_ diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp deleted file mode 100644 index 767b3ad0d44e..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include - -#include "msgMapiDefs.h" -#include "msgMapi.h" -#include "msgMapiImp.h" -#include "msgMapiFactory.h" -#include "msgMapiMain.h" - -#include "msgMapiHook.h" -#include "nsString.h" - -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - -nsMapiImp::nsMapiImp() -: m_cRef(1) -{ - m_Lock = PR_NewLock(); -} - -nsMapiImp::~nsMapiImp() -{ - if (m_Lock) - PR_DestroyLock(m_Lock); -} - -STDMETHODIMP nsMapiImp::QueryInterface(const IID& aIid, void** aPpv) -{ - if (aIid == IID_IUnknown) - { - *aPpv = static_cast(this); - } - else if (aIid == IID_nsIMapi) - { - *aPpv = static_cast(this); - } - else - { - *aPpv = nsnull; - return E_NOINTERFACE; - } - - reinterpret_cast(*aPpv)->AddRef(); - return S_OK; -} - -STDMETHODIMP_(ULONG) nsMapiImp::AddRef() -{ - return PR_AtomicIncrement(&m_cRef); -} - -STDMETHODIMP_(ULONG) nsMapiImp::Release() -{ - PRInt32 temp; - temp = PR_AtomicDecrement(&m_cRef); - if (m_cRef == 0) - { - delete this; - return 0; - } - - return temp; -} - -STDMETHODIMP nsMapiImp::Initialize() -{ - HRESULT hr = E_FAIL; - - if (!m_Lock) - return E_FAIL; - - PR_Lock(m_Lock); - - // Initialize MAPI Configuration - - nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration(); - if (pConfig != nsnull) - if (nsMapiHook::Initialize()) - hr = S_OK; - - PR_Unlock(m_Lock); - - return hr; -} - -STDMETHODIMP nsMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_PW_TYPE aPassWord, - unsigned long aFlags, unsigned long *aSessionId) -{ - HRESULT hr = E_FAIL; - - nsString tempProfileName; - nsString tempPassCode; - - PRBool bNewSession = PR_FALSE; - PRBool bLoginUI = PR_FALSE; - PRBool bPasswordUI = PR_FALSE; - PRBool bResult = PR_FALSE; - - char *id_key = nsnull; - - // See wheather user wants a new session with the same user name. - - if (aFlags & MAPI_NEW_SESSION) - bNewSession = PR_TRUE; - - // Check For Profile Name - - if (aLogin == nsnull || aLogin[0] == '\0') - { - // no user name is passed by the user - - if (aFlags & MAPI_LOGON_UI) // asked to show the login dialog - bLoginUI = PR_TRUE; - else - { - // user name not passed and not opted to show the logon UI. - // it is an error. - - *aSessionId = MAPI_E_FAILURE; - return hr; - } - } - else - tempProfileName.Assign ((PRUnichar *) aLogin); - - // Check For Password - - if (aPassWord == nsnull || aPassWord[0] == '\0') - { - // no password.. is opted for Password UI. - - if ((aFlags & MAPI_PASSWORD_UI) && !bPasswordUI) - bPasswordUI = PR_TRUE; - - // Looking for 'else' !!. Don't know wheather password is set! :-) - } - else - tempPassCode.Assign ((PRUnichar *) aPassWord); - - if (bLoginUI) - { - // Display the Login UI - - PRUnichar *Name = nsnull, *Pass = nsnull; - - bResult = nsMapiHook::DisplayLoginDialog(PR_TRUE, &Name, &Pass); - if (bResult == PR_FALSE) - { - *aSessionId = MAPI_E_USER_ABORT; - return hr; - } - - tempProfileName.Assign (Name); - tempPassCode.Assign (Pass); - - delete(Name); - delete(Pass); - } - else if (bPasswordUI) - { - // Display the Password UI - - PRUnichar *Name = (PRUnichar *)tempProfileName.get() ; - PRUnichar *Pass = nsnull; - - bResult = nsMapiHook::DisplayLoginDialog(PR_FALSE, &Name, &Pass); - if (bResult == PR_FALSE) - { - *aSessionId = MAPI_E_USER_ABORT; - return hr; - } - - tempPassCode.Assign (Pass) ; - - delete(Pass); - } - - // No matter what ever the params are; Profile Name must be resloved by now - - if (tempProfileName.Length() <= 0) - { - *aSessionId = MAPI_E_LOGIN_FAILURE; - return hr; - } - - // Verify wheather username exists in the current mozilla profile. - - bResult = nsMapiHook::VerifyUserName(tempProfileName.get(), &id_key); - if (bResult == PR_FALSE) - { - *aSessionId = MAPI_E_LOGIN_FAILURE; - return hr; - } - - // finally register(create) the session. - - - PRUint32 nSession_Id; - PRInt16 nResult = 0; - - nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration(); - if (pConfig != nsnull) - nResult = pConfig->RegisterSession(aUIArg, tempProfileName.get(), - tempPassCode.get(), - (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession, - &nSession_Id, id_key); - - switch (nResult) - { - case -1 : - { - *aSessionId = MAPI_E_TOO_MANY_SESSIONS; - return hr; - } - case 0 : - { - *aSessionId = MAPI_E_INSUFFICIENT_MEMORY; - return hr; - } - default : - { - *aSessionId = nSession_Id; - break; - } - } - - return S_OK; -} - -STDMETHODIMP nsMapiImp::Logoff (unsigned long aSession) -{ - nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration(); - - if (pConfig->UnRegisterSession((PRUint32)aSession)) - return S_OK; - - return E_FAIL; -} - -STDMETHODIMP nsMapiImp::CleanUp() -{ - nsMapiHook::CleanUp(); - return S_OK; -} diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/src/msgMapiImp.h deleted file mode 100644 index d7bb4a3ce799..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiImp.h +++ /dev/null @@ -1,76 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_IMP_H -#define MSG_MAPI_IMP_H - -#include -#include -#include "msgMapi.h" -#include "nsXPIDLString.h" -#include "nspr.h" - -class nsMapiImp : public nsIMapi -{ - -public : - - // IUnknown - - STDMETHODIMP QueryInterface(const IID& aIid, void** aPpv); - STDMETHODIMP_(ULONG) AddRef(); - STDMETHODIMP_(ULONG) Release(); - - // Interface INsMapi - - STDMETHODIMP Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, - LOGIN_PW_TYPE aPassWord, unsigned long aFlags, - unsigned long *aSessionId); - - STDMETHODIMP Initialize(); - STDMETHODIMP Logoff (unsigned long aSession); - STDMETHODIMP CleanUp(); - - nsMapiImp(); - ~nsMapiImp(); - -private : - - PRLock *m_Lock; - PRInt32 m_cRef; -}; - -#endif // MSG_MAPI_IMP_H diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.cpp b/mailnews/mapi/mapihook/src/msgMapiMain.cpp deleted file mode 100644 index a0d3fb3ae9b2..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiMain.cpp +++ /dev/null @@ -1,361 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "msgMapiMain.h" - -// move to xpcom bug 81956. -class nsPRUintKey : public nsHashKey { -protected: - PRUint32 mKey; -public: - nsPRUintKey(PRUint32 key) : mKey(key) {} - - PRUint32 HashCode(void) const { - return mKey; - } - - PRBool Equals(const nsHashKey *aKey) const { - return mKey == ((const nsPRUintKey *) aKey)->mKey; - } - nsHashKey *Clone() const { - return new nsPRUintKey(mKey); - } - PRUint32 GetValue() { return mKey; } -}; -// - - -nsMAPIConfiguration *nsMAPIConfiguration::m_pSelfRef = nsnull; -PRUint32 nsMAPIConfiguration::session_generator = 0; -PRUint32 nsMAPIConfiguration::sessionCount = 0; - -nsMAPIConfiguration *nsMAPIConfiguration::GetMAPIConfiguration() -{ - if (m_pSelfRef == nsnull) - m_pSelfRef = new nsMAPIConfiguration(); - - return m_pSelfRef; -} - -nsMAPIConfiguration::nsMAPIConfiguration() -: m_nMaxSessions(MAX_SESSIONS), - m_ProfileMap(nsnull), - m_SessionMap(nsnull) -{ - m_Lock = PR_NewLock(); - m_ProfileMap = new nsHashtable(); - m_SessionMap = new nsHashtable(); - NS_ASSERTION(m_SessionMap && m_ProfileMap, "hashtables not created"); -} - -static PRBool -FreeSessionMapEntries(nsHashKey *aKey, void *aData, void* aClosure) -{ - nsMAPISession *pTemp = (nsMAPISession*) aData; - delete pTemp; - pTemp = nsnull; - return PR_TRUE; -} - -static PRBool -FreeProfileMapEntries(nsHashKey *aKey, void *aData, void* aClosure) -{ - ProfileNameSessionIdMap *pTemp = (ProfileNameSessionIdMap *) aData; - delete pTemp; - pTemp = nsnull; - return PR_TRUE; -} - -nsMAPIConfiguration::~nsMAPIConfiguration() -{ - if (m_Lock) - PR_DestroyLock(m_Lock); - - if (m_SessionMap) - { - m_SessionMap->Reset(FreeSessionMapEntries); - delete m_SessionMap; - m_SessionMap = nsnull; - } - - if (m_ProfileMap) - { - m_ProfileMap->Reset(FreeProfileMapEntries); - delete m_ProfileMap; - m_ProfileMap = nsnull; - } -} - -void nsMAPIConfiguration::OpenConfiguration() -{ - // No. of max. sessions is set to MAX_SESSIONS. In future - // if it is decided to have configuration (registry) - // parameter, this function can be used to set the - // max sessions; - - return; -} - -PRInt16 nsMAPIConfiguration::RegisterSession(PRUint32 aHwnd, - const PRUnichar *aUserName, const PRUnichar *aPassword, - PRBool aForceDownLoad, PRBool aNewSession, - PRUint32 *aSession, char *aIdKey) -{ - PRInt16 nResult = 0; - PRUint32 n_SessionId = 0; - - PR_Lock(m_Lock); - - // Check whether max sessions is exceeded - - if (sessionCount >= m_nMaxSessions) - { - PR_Unlock(m_Lock); - return -1; - } - - nsAutoString usernameString(aUserName); - usernameString.AppendInt(aHwnd); - nsStringKey usernameKey(usernameString.get()); - - ProfileNameSessionIdMap *pProfTemp = nsnull; - pProfTemp = (ProfileNameSessionIdMap *) m_ProfileMap->Get(&usernameKey); - if (pProfTemp != nsnull) - { - n_SessionId = pProfTemp->sessionId; - - // check wheather is there any session. if not let us create one. - - nsPRUintKey sessionKey(n_SessionId); - nsMAPISession *pCheckSession = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - if (pCheckSession == nsnull) - n_SessionId = 0; - } - - // create a new session ; if new session is specified OR there is no session - - if (aNewSession || n_SessionId == 0) // checking for n_SessionId is a concession - { - nsMAPISession *pTemp = nsnull; - pTemp = new nsMAPISession(aHwnd, aUserName, - aPassword, aForceDownLoad, aIdKey); - - if (pTemp != nsnull) - { - if (pProfTemp == nsnull) - { - pProfTemp = new ProfileNameSessionIdMap; - if (pProfTemp == nsnull) - { - delete pTemp; - pTemp = nsnull; - PR_Unlock(m_Lock); - return 0; - } - - pProfTemp->shareCount = 1; - } - else - pProfTemp->shareCount++; - - session_generator++; - - // I don't think there will be (2 power 32) sessions alive - // in a cycle. This is an assumption - - if (session_generator == 0) - session_generator++; - - nsPRUintKey sessionKey(session_generator); - m_SessionMap->Put(&sessionKey, pTemp); - - pProfTemp->sessionId = session_generator; - m_ProfileMap->Put(&usernameKey, (void*)pProfTemp); - - *aSession = session_generator; - sessionCount++; - nResult = 1; - } - } - else - if (n_SessionId > 0) // share the session; - { - nsPRUintKey sessionKey(n_SessionId); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - if (pTemp != nsnull) - { - pTemp->IncrementSession(); - pProfTemp->shareCount++; - *aSession = n_SessionId; - nResult = 1; - } - } - - PR_Unlock(m_Lock); - return nResult; -} - -PRBool nsMAPIConfiguration::UnRegisterSession(PRUint32 aSessionID) -{ - PRBool bResult = PR_FALSE; - - PR_Lock(m_Lock); - - if (aSessionID != 0) - { - nsPRUintKey sessionKey(aSessionID); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - - if (pTemp != nsnull) - { - if (pTemp->DecrementSession() == 0) - { - nsAutoString usernameString(pTemp->m_pProfileName.get()); - usernameString.AppendInt(pTemp->m_hAppHandle); - nsStringKey stringKey(usernameString.get()); - - ProfileNameSessionIdMap *pProfTemp = nsnull; - pProfTemp = (ProfileNameSessionIdMap *) m_ProfileMap->Get(&stringKey); - pProfTemp->shareCount--; - if (pProfTemp->shareCount == 0) - { - m_ProfileMap->Remove(&stringKey); - delete pProfTemp; - pProfTemp = nsnull; - } - - delete pTemp; - pTemp = nsnull; - - m_SessionMap->Remove(&sessionKey); - sessionCount--; - bResult = PR_TRUE; - } - } - } - PR_Unlock(m_Lock); - return bResult; -} - -PRUnichar *nsMAPIConfiguration::GetPassWord(PRUint32 aSessionID) -{ - PRUnichar *pResult = nsnull; - - PR_Lock(m_Lock); - - if (aSessionID != 0) - { - nsPRUintKey sessionKey(aSessionID); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - - if (pTemp) - { - pResult = pTemp->GetPassWord(); - } - } - - PR_Unlock(m_Lock); - - return pResult; -} - -char *nsMAPIConfiguration::GetIdKey(PRUint32 aSessionID) -{ - char *pResult = nsnull; - - PR_Lock(m_Lock); - - if (aSessionID != 0) - { - nsPRUintKey sessionKey(aSessionID); - nsMAPISession *pTemp = (nsMAPISession *)m_SessionMap->Get(&sessionKey); - if (pTemp) - { - pResult = pTemp->GetIdKey(); - } - } - - PR_Unlock(m_Lock); - return pResult; -} - - - -nsMAPISession::nsMAPISession(PRUint32 aHwnd, const PRUnichar *aUserName,\ - const PRUnichar *aPassword, \ - PRBool aForceDownLoad, char *aKey) -: m_bIsForcedDownLoad(aForceDownLoad), - m_hAppHandle(aHwnd), - m_nShared(1), - m_pIdKey(aKey) -{ - m_pProfileName.Assign(aUserName); - m_pPassword.Assign(aPassword); -} - -nsMAPISession::~nsMAPISession() -{ - if (m_pIdKey != nsnull) - { - delete [] m_pIdKey; - m_pIdKey = nsnull; - } -} - -PRUint32 nsMAPISession::IncrementSession() -{ - return ++m_nShared; -} - -PRUint32 nsMAPISession::DecrementSession() -{ - return --m_nShared; -} - -PRUint32 nsMAPISession::GetSessionCount() -{ - return m_nShared; -} - -PRUnichar *nsMAPISession::GetPassWord() -{ - return (PRUnichar *)m_pPassword.get(); -} - -char *nsMAPISession::GetIdKey() -{ - return m_pIdKey; -} diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.h b/mailnews/mapi/mapihook/src/msgMapiMain.h deleted file mode 100644 index af3666a16706..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiMain.h +++ /dev/null @@ -1,111 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_MAIN_H_ -#define NSG_MAPI_MAIN_H_ - -#define MAX_NAME_LEN 256 -#define MAX_PW_LEN 256 -#define MAX_SESSIONS 50 - -#include "nsXPIDLString.h" -#include "nspr.h" -#include "nsString.h" -#include "nsHashtable.h" - -typedef struct _tagProfileNameSessionIdMap -{ - PRUint32 sessionId; - PRUint32 shareCount; - -} ProfileNameSessionIdMap; - - -class nsMAPIConfiguration -{ -private : - - static PRUint32 session_generator; - static PRUint32 sessionCount; - static nsMAPIConfiguration *m_pSelfRef; - PRLock *m_Lock; - PRUint32 m_nMaxSessions; - - - nsHashtable *m_ProfileMap; - nsHashtable *m_SessionMap; - nsMAPIConfiguration(); - -public : - static nsMAPIConfiguration *GetMAPIConfiguration(); - void OpenConfiguration(); - PRInt16 RegisterSession(PRUint32 aHwnd, const PRUnichar *aUserName, \ - const PRUnichar *aPassword, PRBool aForceDownLoad, \ - PRBool aNewSession, PRUint32 *aSession, char *aIdKey); - PRBool UnRegisterSession(PRUint32 aSessionID); - PRUnichar *GetPassWord(PRUint32 aSessionID); - char *GetIdKey(PRUint32 aSessionID); - ~nsMAPIConfiguration(); -}; - -class nsMAPISession -{ - friend class nsMAPIConfiguration; - - private : - - PRBool m_bIsForcedDownLoad; - PRBool m_bApp_or_Service; - PRUint32 m_hAppHandle; - PRUint32 m_nShared; - char *m_pIdKey; - nsString m_pProfileName; - nsString m_pPassword; - - public : - - nsMAPISession(PRUint32 aHwnd, const PRUnichar *aUserName, \ - const PRUnichar *aPassword, \ - PRBool aForceDownLoad, char *aKey); - PRUint32 IncrementSession(); - PRUint32 DecrementSession(); - PRUint32 GetSessionCount(); - PRUnichar *nsMAPISession::GetPassWord(); - char *nsMAPISession::GetIdKey(); - ~nsMAPISession(); -}; - -#endif // MSG_MAPI_MAIN_H_ diff --git a/mailnews/mapi/mapihook/src/msgMapiSupport.cpp b/mailnews/mapi/mapihook/src/msgMapiSupport.cpp deleted file mode 100644 index 60d98585ed5b..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiSupport.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "msgMapiSupport.h" -#include "nsISupports.h" - -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, \ - {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - -PRBool WINAPI DllMain(HINSTANCE aInstance, DWORD aReason, LPVOID aReserved) -{ - switch (aReason) - { - case DLL_PROCESS_ATTACH : - { - // Initialize MAPI Support - - nsMapiSupport *pTemp = nsMapiSupport::GetNsMapiSupport(); - break; - } - case DLL_PROCESS_DETACH : - { - nsMapiSupport *pTemp = nsMapiSupport::GetNsMapiSupport(); - pTemp->UnInitMSCom(); - delete pTemp; - pTemp = nsnull; - } - } - - return PR_TRUE; -} - -extern "C" -{ - void __declspec(dllexport) Init() - { - nsMapiSupport *pTemp = nsMapiSupport::GetNsMapiSupport(); - if (pTemp != nsnull) - pTemp->InitMSCom(); - } -} - -nsMapiSupport* nsMapiSupport::m_pSelfRef = nsnull; - -nsMapiSupport *nsMapiSupport::GetNsMapiSupport() -{ - if (m_pSelfRef == nsnull) - m_pSelfRef = new nsMapiSupport(); - - return m_pSelfRef; -} - -nsMapiSupport::nsMapiSupport() -: m_dwRegister(0), - m_nsMapiFactory(nsnull) -{ -} - -nsMapiSupport::~nsMapiSupport() -{ -} - -PRBool nsMapiSupport::RegsiterComponents() -{ - if (m_nsMapiFactory == nsnull) // No Registering if already done. Sanity Check!! - { - m_nsMapiFactory = new nsMapiFactory(); - - if (m_nsMapiFactory != nsnull) - { - HRESULT hr = ::CoRegisterClassObject(CLSID_nsMapiImp, \ - m_nsMapiFactory, \ - CLSCTX_LOCAL_SERVER, \ - REGCLS_MULTIPLEUSE, \ - &m_dwRegister); - - if (FAILED(hr)) - { - m_nsMapiFactory->Release() ; - m_nsMapiFactory = nsnull; - return PR_FALSE; - } - } - } - - return PR_TRUE; -} - -PRBool nsMapiSupport::UnRegisterComponents() -{ - if (m_dwRegister != 0) - ::CoRevokeClassObject(m_dwRegister); - - if (m_nsMapiFactory != nsnull) - { - m_nsMapiFactory->Release(); - m_nsMapiFactory = nsnull; - } - - return PR_TRUE; -} - -void nsMapiSupport::InitMSCom() -{ - ::CoInitialize(nsnull); - RegsiterComponents(); -} - -void nsMapiSupport::UnInitMSCom() -{ - UnRegisterComponents(); - ::CoUninitialize(); -} diff --git a/mailnews/mapi/mapihook/src/msgMapiSupport.h b/mailnews/mapi/mapihook/src/msgMapiSupport.h deleted file mode 100644 index cdcf2dd47f12..000000000000 --- a/mailnews/mapi/mapihook/src/msgMapiSupport.h +++ /dev/null @@ -1,64 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - # Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika (kkhandrika@netscape.com) - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef MSG_MAPI_SUPPORT_H_ -#define MSG_MAPI_SUPPORT_H_ - -#include "msgMapiFactory.h" -#include "prtypes.h" - -class __declspec(dllexport) nsMapiSupport -{ - private : - - DWORD m_dwRegister; - static nsMapiSupport *m_pSelfRef; - nsMapiFactory *m_nsMapiFactory; - - nsMapiSupport(); - - public : - - static nsMapiSupport *GetNsMapiSupport(); - ~nsMapiSupport(); - - PRBool RegsiterComponents(); - void UnInitMSCom(); - void InitMSCom(); - PRBool UnRegisterComponents(); -}; - -#endif // MSG_MAPI_SUPPORT_H_ diff --git a/mailnews/mapi/mapihook/src/nsMapiRegistry.cpp b/mailnews/mapi/mapihook/src/nsMapiRegistry.cpp deleted file mode 100644 index 42f887c94c25..000000000000 --- a/mailnews/mapi/mapihook/src/nsMapiRegistry.cpp +++ /dev/null @@ -1,249 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsIServiceManager.h" -#include "nsMapiRegistry.h" -#include "nsIGenericFactory.h" -#include "nsXPIDLString.h" -#include "nsIPromptService.h" -#include "nsIStringBundle.h" -#include "nsIProxyObjectManager.h" -#include "nsProxiedService.h" - -#include "nsMapiRegistryUtils.h" -#include "nsString.h" - -static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); - -nsresult ShowMapiErrorDialog(); - -/** Implementation of the nsIMapiRegistry interface. - * Use standard implementation of nsISupports stuff. - */ -NS_IMPL_ISUPPORTS1(nsMapiRegistry, nsIMapiRegistry); - -nsMapiRegistry::nsMapiRegistry() { - NS_INIT_ISUPPORTS(); - m_ShowDialog = !verifyRestrictedAccess(); - m_DefaultMailClient = IsDefaultMailClient(); -} - -nsMapiRegistry::~nsMapiRegistry() { -} - -NS_IMETHODIMP -nsMapiRegistry::GetIsDefaultMailClient(PRBool * retval) { - *retval = m_DefaultMailClient; - return NS_OK; -} - -NS_IMETHODIMP -nsMapiRegistry::GetShowDialog(PRBool * retval) { - *retval = m_ShowDialog; - return NS_OK; -} - -NS_IMETHODIMP -nsMapiRegistry::SetDefaultMailClient() { - nsresult rv = setDefaultMailClient(); - if (NS_SUCCEEDED(rv)) - m_DefaultMailClient = PR_TRUE; - else - rv = ShowMapiErrorDialog(); - return NS_OK; -} - -NS_IMETHODIMP -nsMapiRegistry::UnsetDefaultMailClient() { - nsresult rv = unsetDefaultMailClient(); - if (NS_SUCCEEDED(rv)) - m_DefaultMailClient = PR_FALSE; - else - ShowMapiErrorDialog(); - return NS_OK; -} - -/** This will bring up the dialog box only once per session and - * only if the current app is not default Mail Client. - * This also checks the registry if the registry key - * showMapiDialog is set - */ -NS_IMETHODIMP -nsMapiRegistry::ShowMailIntegrationDialog() { - nsresult rv; - if (!m_ShowDialog || !getShowDialog()) return NS_OK; - nsCOMPtr promptService(do_GetService( - "@mozilla.org/embedcomp/prompt-service;1", &rv)); - if (NS_SUCCEEDED(rv) && promptService) - { - nsCOMPtr bundleService(do_GetService( - kStringBundleServiceCID, &rv)); - if (NS_FAILED(rv) || !bundleService) return NS_ERROR_FAILURE; - - nsCOMPtr bundle; - rv = bundleService->CreateBundle( - "chrome://messenger/locale/mapi.properties", - getter_AddRefs(bundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString dialogTitle; - const PRUnichar *brandStrings[] = { brandName.get() }; - NS_NAMED_LITERAL_STRING(dialogTitlePropertyTag, "dialogTitle"); - const PRUnichar *dTitlepropertyTag = dialogTitlePropertyTag.get(); - rv = bundle->FormatStringFromName(dTitlepropertyTag, - brandStrings, 1, - getter_Copies(dialogTitle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString dialogText; - NS_NAMED_LITERAL_STRING(dialogTextPropertyTag, "dialogText"); - const PRUnichar *dpropertyTag = dialogTextPropertyTag.get(); - rv = bundle->FormatStringFromName(dpropertyTag, - brandStrings, 1, - getter_Copies(dialogText)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString checkboxText; - rv = bundle->GetStringFromName( - NS_LITERAL_STRING("checkboxText").get(), - getter_Copies(checkboxText)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - PRBool checkValue = PR_FALSE; - PRInt32 buttonPressed = 0; - rv = promptService->ConfirmEx(nsnull, - dialogTitle, - dialogText.get(), - (nsIPromptService::BUTTON_TITLE_YES * - nsIPromptService::BUTTON_POS_0) + - (nsIPromptService::BUTTON_TITLE_NO * - nsIPromptService::BUTTON_POS_1), - nsnull, - nsnull, - nsnull, - checkboxText, - &checkValue, - &buttonPressed); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, "Software\\Mozilla\\Desktop", - "showMapiDialog", (checkValue) ? "0" : "1"); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - m_ShowDialog = PR_FALSE; - if (!buttonPressed) - rv = SetDefaultMailClient(); - } - return rv; -} - -nsresult ShowMapiErrorDialog() { - nsresult rv; - nsCOMPtr promptService(do_GetService( - "@mozilla.org/embedcomp/prompt-service;1", &rv)); - if (NS_SUCCEEDED(rv) && promptService) - { - nsCOMPtr bundleService(do_GetService( - kStringBundleServiceCID, &rv)); - if (NS_FAILED(rv) || !bundleService) return NS_ERROR_FAILURE; - - nsCOMPtr bundle; - rv = bundleService->CreateBundle( - "chrome://messenger/locale/mapi.properties", - getter_AddRefs(bundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString dialogTitle; - const PRUnichar *brandStrings[] = { brandName.get() }; - NS_NAMED_LITERAL_STRING(dialogTitlePropertyTag, "errorMessageTitle"); - const PRUnichar *dTitlepropertyTag = dialogTitlePropertyTag.get(); - rv = bundle->FormatStringFromName(dTitlepropertyTag, - brandStrings, 1, - getter_Copies(dialogTitle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - nsXPIDLString dialogText; - NS_NAMED_LITERAL_STRING(dialogTextPropertyTag, "errorMessageText"); - const PRUnichar *dpropertyTag = dialogTextPropertyTag.get(); - rv = bundle->FormatStringFromName(dpropertyTag, - brandStrings, 1, - getter_Copies(dialogText)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - rv = promptService->Alert(nsnull, dialogTitle, - dialogText); - } - return rv; -} - - -NS_GENERIC_FACTORY_CONSTRUCTOR(nsMapiRegistry); - -// The list of components we register -static nsModuleComponentInfo components[] = -{ - { - NS_IMAPIREGISTRY_CLASSNAME, - NS_IMAPIREGISTRY_CID, - NS_IMAPIWINHOOK_CONTRACTID, - nsMapiRegistryConstructor - } -}; - -NS_IMPL_NSGETMODULE(nsMapiRegistryModule, components); - diff --git a/mailnews/mapi/mapihook/src/nsMapiRegistry.h b/mailnews/mapi/mapihook/src/nsMapiRegistry.h deleted file mode 100644 index 15348f524efd..000000000000 --- a/mailnews/mapi/mapihook/src/nsMapiRegistry.h +++ /dev/null @@ -1,73 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsmapiregistry_h____ -#define nsmapiregistry_h____ - -#include "nsIMapiRegistry.h" - -#ifndef MAX_BUF -#define MAX_BUF 4096 -#endif - -/* c5be14ba-4e0a-4eec-a1b8-04363761d63c */ -#define NS_IMAPIREGISTRY_CID \ - { 0xc5be14ba, 0x4e0a, 0x4eec, {0xa1, 0xb8, 0x04, 0x36, 0x37, 0x61, 0xd6, 0x3c} } -#define NS_IMAPIREGISTRY_CONTRACTID "@mozilla.org/mapiregistry;1" -#define NS_IMAPIREGISTRY_CLASSNAME "Mozilla MAPI Registry" - -class nsMapiRegistry : public nsIMapiRegistry { -public: - // ctor/dtor - nsMapiRegistry(); - virtual ~nsMapiRegistry(); - - // Declare all interface methods we must implement. - NS_DECL_ISUPPORTS - NS_DECL_NSIMAPIREGISTRY - -protected: - - PRBool m_DefaultMailClient; - PRBool m_ShowDialog; - -private: - // Special member to handle initialization. - PRBool mHaveBeenSet; -}; // nsMapiRegistry - -#endif // nsmapiregistry_h____ diff --git a/mailnews/mapi/mapihook/src/nsMapiRegistryUtils.cpp b/mailnews/mapi/mapihook/src/nsMapiRegistryUtils.cpp deleted file mode 100644 index c84f72dcf6e5..000000000000 --- a/mailnews/mapi/mapihook/src/nsMapiRegistryUtils.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#undef UNICODE -#undef _UNICODE - -#include "nsIServiceManager.h" -#include "nsMapiRegistryUtils.h" -#include "nsString.h" -#include "nsIStringBundle.h" -#include "nsXPIDLString.h" - -static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - -// Returns the (fully-qualified) name of this executable. -static nsCString thisApplication() { - static nsCAutoString result; - - if (result.IsEmpty()) { - char buffer[MAX_PATH] = {0}; - DWORD len = ::GetModuleFileName(NULL, buffer, sizeof buffer); - len = ::GetShortPathName(buffer, buffer, sizeof buffer); - - result = buffer; - result.ToUpperCase(); - } - - return result; -} - -/** This returns the brand name for this application - */ -static nsCString brandName() { - static nsCAutoString brand; - nsresult rv; - if (brand.IsEmpty()) { - nsCOMPtr bundleService(do_GetService( - kStringBundleServiceCID, &rv)); - if (NS_SUCCEEDED(rv) && bundleService) { - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_SUCCEEDED(rv)) { - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_SUCCEEDED(rv)) { - brand.AssignWithConversion(brandName.get()); - } - } - } - } - return brand; -} - -// verifyRestrictedAccess - Returns PR_TRUE if this user only has restricted access -// to the registry keys we need to modify. -PRBool verifyRestrictedAccess() { - char subKey[] = "Software\\Mozilla - Test Key"; - PRBool result = PR_FALSE; - DWORD dwDisp = 0; - HKEY key; - // Try to create/open a subkey under HKLM. - DWORD rc = ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, - subKey, - 0, - NULL, - REG_OPTION_NON_VOLATILE, - KEY_WRITE, - NULL, - &key, - &dwDisp); - - if (rc == ERROR_SUCCESS) { - // Key was opened; first close it. - ::RegCloseKey(key); - // Delete it if we just created it. - switch(dwDisp) { - case REG_CREATED_NEW_KEY: - ::RegDeleteKey(HKEY_LOCAL_MACHINE, subKey); - break; - case REG_OPENED_EXISTING_KEY: - break; - } - } else { - // Can't create/open it; we don't have access. - result = PR_TRUE; - } - return result; -} - -nsresult SetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName, char * value) -{ - nsresult result = NS_ERROR_FAILURE; - HKEY key; - LONG rc = ::RegCreateKey(baseKey, keyName, &key); - - if (rc == ERROR_SUCCESS) { - char buffer[MAX_PATH] = {0}; - DWORD len = sizeof buffer; - rc = ::RegQueryValueEx(key, valueName, NULL, NULL, (LPBYTE)buffer, - &len ); - if (strcmp(value, buffer) != 0 ) { - rc = ::RegSetValueEx(key, valueName, NULL, REG_SZ, - (LPBYTE)(const char*)value, strlen(value)); - if (rc == ERROR_SUCCESS) { - result = NS_OK; - } - } else { - result = NS_OK; - } - ::RegCloseKey(key); - } - return result; -} - -nsCString GetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName) -{ - nsCAutoString value; - HKEY key; - LONG rc = ::RegOpenKey(baseKey, keyName, &key); - if (rc == ERROR_SUCCESS) { - char buffer[MAX_PATH] = {0}; - DWORD len = sizeof buffer; - rc = ::RegQueryValueEx(key, valueName, NULL, NULL, - (LPBYTE)buffer, &len); - if (rc == ERROR_SUCCESS) { - if (len) - value = buffer; - } - ::RegCloseKey(key); - } - return value; -} - -#define EXE_EXTENSION ".exe" - -/** Returns TRUE if the current application is default mail client. - */ -PRBool IsDefaultMailClient() -{ - nsCAutoString name(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", "")); - if (!name.IsEmpty()) { - nsCString keyName("Software\\Clients\\Mail\\"); - keyName += name.get(); - keyName += "\\protocols\\mailto\\shell\\open\\command"; - - nsCAutoString result(GetRegistryKey(HKEY_LOCAL_MACHINE, - keyName.get(), "")); - if (!result.IsEmpty()) { - nsCAutoString strExtension; - strExtension.Assign(EXE_EXTENSION); - result.ToUpperCase(); - strExtension.ToUpperCase(); - PRInt32 index = result.RFind(strExtension.get()); - if (index != kNotFound) { - result.Truncate(index + strExtension.Length()); - } - return (result == thisApplication()); - } - } - return PR_FALSE; - -} - -/** Saves the current setting of the default Mail Client in - * HKEY_LOCAL_MACHINE\\Software\\Mozilla\\Desktop - */ -nsresult saveDefaultMailClient() -{ - nsresult rv; - nsCAutoString name(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", "")); - if (!name.IsEmpty()) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail", - (char *)name.get()); - if (NS_SUCCEEDED(rv)) { - nsCString keyName("Software\\Clients\\Mail\\"); - keyName += name.get(); - keyName += "\\protocols\\mailto\\shell\\open\\command"; - nsCAutoString appPath(GetRegistryKey(HKEY_LOCAL_MACHINE, - keyName.get(), "")); - if (!appPath.IsEmpty()) { - nsCString stringName("HKEY_LOCAL_MACHINE\\"); - stringName += keyName.get(); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - stringName.get(), (char *)appPath.get()); - } - } - } - else - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail", - ""); - return rv; -} - -/** Saves the current user setting of the default Mail Client in - * HKEY_LOCAL_MACHINE\\Software\\Mozilla\\Desktop - */ -nsresult saveUserDefaultMailClient() -{ - nsresult rv; - nsCAutoString name(GetRegistryKey(HKEY_CURRENT_USER, - "Software\\Clients\\Mail", "")); - if (!name.IsEmpty()) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_CURRENT_USER\\Software\\Clients\\Mail", - (char *)name.get()); - } - else { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_CURRENT_USER\\Software\\Clients\\Mail", - ""); - } - return rv; -} - -/** Sets Mozilla as default Mail Client - */ -nsresult setDefaultMailClient() -{ - nsresult rv; - if (verifyRestrictedAccess()) return NS_ERROR_FAILURE; - rv = saveDefaultMailClient(); - if (!NS_SUCCEEDED(saveUserDefaultMailClient()) || - !NS_SUCCEEDED(rv)) return NS_ERROR_FAILURE; - nsCAutoString keyName("Software\\Clients\\Mail\\"); - - nsCAutoString appName(brandName()); - if (!appName.IsEmpty()) { - keyName.Append(appName.get()); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "", (char *)appName.get()); - } - else - rv = NS_ERROR_FAILURE; - if (NS_SUCCEEDED(rv)) { - nsCAutoString dllPath(thisApplication()); - PRInt32 index = dllPath.RFind("\\"); - if (index != kNotFound) - dllPath.Truncate(index); - dllPath += "mozMapi32.dll"; - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), "DLLPath", - (char *)dllPath.get()); - if (NS_SUCCEEDED(rv)) { - keyName.Append("\\protocols\\mailto"); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "", "URL:MailTo Protocol"); - if (NS_SUCCEEDED(rv)) { - nsCAutoString appPath(thisApplication()); - appPath += " \"%1\""; - keyName.Append("\\shell\\open\\command"); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "", (char *)appPath.get()); - if (NS_SUCCEEDED(rv)) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", - "", (char *)appName.get()); - } - } - } - } - - nsresult result = SetRegistryKey(HKEY_CURRENT_USER, "Software\\Clients\\Mail", - "", (char *)appName.get()); - if (NS_SUCCEEDED(result)) { - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "setMailDefault", "1"); - } - - if (NS_SUCCEEDED(rv)) { - RegisterServer(CLSID_nsMapiImp, "Mozilla MAPI", "mozMapi", "mozMapi.1"); - if (NS_SUCCEEDED(result)) - return result; - } - - return NS_ERROR_FAILURE; -} - -/** Removes Mozilla as the default Mail client and restores the previous setting - */ -nsresult unsetDefaultMailClient() { - nsresult result = NS_OK; - if (verifyRestrictedAccess()) return NS_ERROR_FAILURE; - nsCAutoString name(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail")); - nsCAutoString appName(brandName()); - - if (!name.IsEmpty() && !appName.IsEmpty() && name.Equals(appName)) { - nsCAutoString keyName("HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\"); - keyName.Append(appName.get()); - keyName.Append("\\protocols\\mailto\\shell\\open\\command"); - nsCAutoString appPath(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - (char *)keyName.get())); - if (!appPath.IsEmpty()) { - keyName.Assign("Software\\Clients\\Mail\\"); - keyName.Append(appName.get()); - keyName.Append("\\protocols\\mailto\\shell\\open\\command"); - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *) keyName.get(), - "", (char *)appPath.get()); - if (NS_SUCCEEDED(result)) { - PRInt32 index = appPath.RFind("\\"); - if (index != kNotFound) - appPath.Truncate(index); - appPath += "mozMapi32.dll"; - keyName.Assign("Software\\Clients\\Mail\\"); - keyName.Append(appName.get()); - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "DLLPath", (char *) appPath.get()); - } - } - } - if (!name.IsEmpty()) - if (NS_SUCCEEDED(result)) - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", - "", (char *)name.get()); - else - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", - "", ""); - - nsCAutoString userAppName(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_CURRENT_USER\\Software\\Clients\\Mail")); - nsresult rv = NS_OK; - if (!userAppName.IsEmpty()) { - rv = SetRegistryKey(HKEY_CURRENT_USER, - "Software\\Clients\\Mail", - "", (char *)userAppName.get()); - } - else { - LONG rc = RegDeleteValue(HKEY_CURRENT_USER, "Software\\Clients\\Mail"); - if (rc == ERROR_SUCCESS) - rv = NS_ERROR_FAILURE; - } - if (NS_SUCCEEDED(rv)) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "isDefaultMailClient", "0"); - } - if (NS_SUCCEEDED(result)) { - UnregisterServer(CLSID_nsMapiImp, "mozMapi", "mozMapi.1"); - if (NS_SUCCEEDED(rv)) - return rv; - } - return NS_ERROR_FAILURE; -} - -/** Returns FALSE if showMapiDialog is set to 0. - * Returns TRUE otherwise - * Also returns TRUE if the Mozilla has been set as the default mail client - * and some other application has changed that setting. - */ -PRBool getShowDialog() { - PRBool rv = PR_FALSE; - nsCString showDialog(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "showMapiDialog")); - if (!showDialog.IsEmpty()) { - if (showDialog.Equals(NS_LITERAL_CSTRING("1"))) - rv = PR_TRUE; - } - else - rv = PR_TRUE; - if (!rv) { - nsCAutoString setMailDefault(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "setMailDefault")); - if (!setMailDefault.IsEmpty() && setMailDefault.Equals(NS_LITERAL_CSTRING("1"))) - rv = PR_TRUE; - } - return rv; -} diff --git a/mailnews/mapi/mapihook/src/nsMapiRegistryUtils.h b/mailnews/mapi/mapihook/src/nsMapiRegistryUtils.h deleted file mode 100644 index 3746ecebd9d8..000000000000 --- a/mailnews/mapi/mapihook/src/nsMapiRegistryUtils.h +++ /dev/null @@ -1,84 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsmapiregistryutils_h____ -#define nsmapiregistryutils_h____ - -#include -#include -#include - -#include "Registry.h" -#include "nsString.h" - -// This function returns the (fully-qualified) name of this executable. -static nsCString thisApplication(); - -// returns the brandName of the current application -static nsCString brandName(); - -//Sets the registry key for basekey/keyname valuename. -nsresult SetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName, char * value); - -// Gets the current regiistry setting for the key. -nsCString GetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName); -// Returns PR_TRUE if this user only has restricted access -// to the registry keys we need to modify. -PRBool verifyRestrictedAccess(); - -// Returns true if mozilla is the default mail client -// by checking the registry. -PRBool IsDefaultMailClient(); - -// Save the current setting for the default mail client. -nsresult saveDefaultMailClient(); - -// Saves the current user setting for the default mail client. -nsresult saveUserDefaultMailClient(); - -// Sets mozilla as the default mail client -nsresult setDefaultMailClient(); - -// unsets mozilla and resets the default mail client setting to previous one -nsresult unsetDefaultMailClient(); - -// returns true if we need to show the mail integration dialog. -PRBool getShowDialog(); - -#endif diff --git a/mailnews/mapi/registry/makefile.win b/mailnews/mapi/registry/makefile.win deleted file mode 100644 index 0a5bc80b4865..000000000000 --- a/mailnews/mapi/registry/makefile.win +++ /dev/null @@ -1,42 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Srilatha Moturi -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\.. - -DIRS=public src - -include <$(DEPTH)\config\rules.mak> diff --git a/mailnews/mapi/registry/public/makefile.win b/mailnews/mapi/registry/public/makefile.win deleted file mode 100644 index ddf0148083cb..000000000000 --- a/mailnews/mapi/registry/public/makefile.win +++ /dev/null @@ -1,48 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Srilatha Moturi -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\..\.. - -MODULE=nsMapiRegistry -XPIDL_MODULE=mapiregistry - -XPIDLSRCS = \ - .\nsIMapiRegistry.idl \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> - diff --git a/mailnews/mapi/registry/public/nsIMapiRegistry.idl b/mailnews/mapi/registry/public/nsIMapiRegistry.idl deleted file mode 100644 index b12fca109243..000000000000 --- a/mailnews/mapi/registry/public/nsIMapiRegistry.idl +++ /dev/null @@ -1,76 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsISupports.idl" - -/** - * This interface provides support for registering Mozilla as the default - * Mail Client. This interface can also be used to get/set the user preference - * for the default Mail Client. - * - */ -[scriptable, uuid(c5be14ba-4e0a-4eec-a1b8-04363761d63c)] -interface nsIMapiRegistry: nsISupports { - - /** This is set to TRUE if Mozilla is the default Application - */ - readonly attribute boolean isDefaultMailClient; - - /** This is set TRUE only once per session. - */ - readonly attribute boolean showDialog; - - /** This will update the registry keys to set Mozilla as default Mail Client. - */ - void setDefaultMailClient(); - - /** This will reset the registry keys for the default Mail Client. - */ - void unsetDefaultMailClient(); - - /** This will bring the dialog asking the user if he/she wants to set - * Mozilla as default Mail Client. - * Call this only if Mozilla is not the default Mail client - */ - void showMailIntegrationDialog(); - -}; - -%{C++ -#define NS_IMAPIWINHOOK_CONTRACTID "@mozilla.org/mapiregistry;1" -#define NS_IMAPIWINHOOK_CLASSNAME "Mozilla MAPI Registry" -%} diff --git a/mailnews/mapi/registry/src/Registry.cpp b/mailnews/mapi/registry/src/Registry.cpp deleted file mode 100644 index 51e59f82eedf..000000000000 --- a/mailnews/mapi/registry/src/Registry.cpp +++ /dev/null @@ -1,322 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla - * - * The Initial Developer of the Original Code is - * Netscape Communications Corp. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): Krishna Mohan Khandrika - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include -#include -#include "nsString.h" -#include "Registry.h" - -#define MAPI_PROXY_DLL_NAME "MapiProxy.dll" -#define MAPI_STARTUP_ARG "/MAPIStartUp" -#define MAX_SIZE 2048 - -// Size of a CLSID as a string -const int CLSID_STRING_SIZE = 39; - -// Proxy/Stub Dll Routines - -typedef HRESULT (__stdcall ProxyServer)(); - - -// Convert a CLSID to a char string. - -BOOL CLSIDtochar(const CLSID& clsid, char* szCLSID, - int length) -{ - LPOLESTR wszCLSID = NULL; - - // Get CLSID - HRESULT hr = StringFromCLSID(clsid, &wszCLSID); - if (FAILED(hr)) - return FALSE; - - // Covert from wide characters to non-wide. - wcstombs(szCLSID, wszCLSID, length); - - // Free memory. - CoTaskMemFree(wszCLSID); - - return TRUE; -} - -// Create a key and set its value. - -BOOL setKeyAndValue(nsCAutoString keyName, const char* subKey, - const char* theValue) -{ - HKEY hKey; - BOOL retValue = TRUE; - - nsCAutoString theKey(keyName); - if (subKey != NULL) - { - theKey += "\\"; - theKey += subKey; - } - - // Create and open key and subkey. - long lResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, theKey.get(), - 0, NULL, REG_OPTION_NON_VOLATILE, - KEY_ALL_ACCESS, NULL, &hKey, NULL); - if (lResult != ERROR_SUCCESS) - return FALSE ; - - // Set the Value. - if (theValue != NULL) - { - lResult = RegSetValueEx(hKey, NULL, 0, REG_SZ, (BYTE *)theValue, - strlen(theValue)+1); - if (lResult != ERROR_SUCCESS) - retValue = FALSE; - } - - RegCloseKey(hKey); - return TRUE; -} - -// Delete a key and all of its descendents. - -LONG recursiveDeleteKey(HKEY hKeyParent, // Parent of key to delete - const char* lpszKeyChild) // Key to delete -{ - // Open the child. - HKEY hKeyChild ; - LONG lRes = RegOpenKeyEx(hKeyParent, lpszKeyChild, 0, - KEY_ALL_ACCESS, &hKeyChild) ; - if (lRes != ERROR_SUCCESS) - { - return lRes ; - } - - // Enumerate all of the decendents of this child. - FILETIME time ; - char szBuffer[MAX_SIZE] ; - DWORD dwSize = MAX_SIZE ; - while (RegEnumKeyEx(hKeyChild, 0, szBuffer, &dwSize, NULL, - NULL, NULL, &time) == S_OK) - { - // Delete the decendents of this child. - lRes = recursiveDeleteKey(hKeyChild, szBuffer) ; - if (lRes != ERROR_SUCCESS) - { - // Cleanup before exiting. - RegCloseKey(hKeyChild) ; - return lRes; - } - dwSize = MAX_SIZE; - } - - // Close the child. - RegCloseKey(hKeyChild) ; - - // Delete this child. - return RegDeleteKey(hKeyParent, lpszKeyChild) ; -} - -void RegisterProxy() -{ - HINSTANCE h = NULL; - ProxyServer *RegisterFunc = NULL; - - char szModule[MAX_SIZE]; - char *pTemp = NULL; - - HMODULE hModule = GetModuleHandle(NULL); - DWORD dwResult = ::GetModuleFileName(hModule, szModule, - sizeof(szModule)/sizeof(char)); - if (dwResult == 0) - return; - - pTemp = strrchr(szModule, '\\'); - if (pTemp == NULL) - return; - - *pTemp = '\0'; - nsCAutoString proxyPath(szModule); - - proxyPath += "\\"; - proxyPath += MAPI_PROXY_DLL_NAME; - - h = LoadLibrary(proxyPath.get()); - if (h == NULL) - return; - - RegisterFunc = (ProxyServer *) GetProcAddress(h, "DllRegisterServer"); - if (RegisterFunc) - RegisterFunc(); - - FreeLibrary(h); -} - -void UnRegisterProxy() -{ - HINSTANCE h = NULL; - ProxyServer *UnRegisterFunc = NULL; - - char szModule[MAX_SIZE]; - char *pTemp = NULL; - - HMODULE hModule = GetModuleHandle(NULL); - DWORD dwResult = ::GetModuleFileName(hModule, szModule, - sizeof(szModule)/sizeof(char)); - if (dwResult == 0) - return; - - pTemp = strrchr(szModule, '\\'); - if (pTemp == NULL) - return; - - *pTemp = '\0'; - nsCAutoString proxyPath(szModule); - - proxyPath += "\\"; - proxyPath += MAPI_PROXY_DLL_NAME; - - h = LoadLibrary(proxyPath.get()); - if (h == NULL) - return; - - UnRegisterFunc = (ProxyServer *) GetProcAddress(h, "DllUnregisterServer"); - if (UnRegisterFunc) - UnRegisterFunc(); - - FreeLibrary(h); -} - -// Register the component in the registry. - -HRESULT RegisterServer(const CLSID& clsid, // Class ID - const char* szFriendlyName, // Friendly Name - const char* szVerIndProgID, // Programmatic - const char* szProgID) // IDs -{ - HMODULE hModule = GetModuleHandle(NULL); - char szModuleName[MAX_SIZE]; - char szCLSID[CLSID_STRING_SIZE]; - - nsCAutoString independentProgId(szVerIndProgID); - nsCAutoString progId(szProgID); - - DWORD dwResult = ::GetModuleFileName(hModule, szModuleName, - sizeof(szModuleName)/sizeof(char)); - - if (dwResult == 0) - return S_FALSE; - - nsCAutoString moduleName(szModuleName); - nsCAutoString registryKey("CLSID\\"); - - moduleName += " /server "; - moduleName += MAPI_STARTUP_ARG; - - // Convert the CLSID into a char. - - if (!CLSIDtochar(clsid, szCLSID, sizeof(szCLSID))) - return S_FALSE; - registryKey += szCLSID; - - // Add the CLSID to the registry. - if (!setKeyAndValue(registryKey, NULL, szFriendlyName)) - return S_FALSE; - - if (!setKeyAndValue(registryKey, "LocalServer32", moduleName.get())) - return S_FALSE; - - // Add the ProgID subkey under the CLSID key. - if (!setKeyAndValue(registryKey, "ProgID", szProgID)) - return S_FALSE; - - // Add the version-independent ProgID subkey under CLSID key. - if (!setKeyAndValue(registryKey, "VersionIndependentProgID", szVerIndProgID)) - return S_FALSE; - - // Add the version-independent ProgID subkey under HKEY_CLASSES_ROOT. - if (!setKeyAndValue(independentProgId, NULL, szFriendlyName)) - return S_FALSE; - if (!setKeyAndValue(independentProgId, "CLSID", szCLSID)) - return S_FALSE; - if (!setKeyAndValue(independentProgId, "CurVer", szProgID)) - return S_FALSE; - - // Add the versioned ProgID subkey under HKEY_CLASSES_ROOT. - if (!setKeyAndValue(progId, NULL, szFriendlyName)) - return S_FALSE; - if (!setKeyAndValue(progId, "CLSID", szCLSID)) - return S_FALSE; - - RegisterProxy(); - - return S_OK; -} - -LONG UnregisterServer(const CLSID& clsid, // Class ID - const char* szVerIndProgID, // Programmatic - const char* szProgID) // IDs -{ - LONG lResult = S_OK; - - // Convert the CLSID into a char. - - char szCLSID[CLSID_STRING_SIZE]; - if (!CLSIDtochar(clsid, szCLSID, sizeof(szCLSID))) - return S_FALSE; - - UnRegisterProxy(); - - nsCAutoString registryKey("CLSID\\"); - registryKey += szCLSID; - - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, registryKey.get()); - if (lResult == ERROR_SUCCESS || lResult == ERROR_FILE_NOT_FOUND) - return lResult; - - registryKey += "\\LocalServer32"; - - // Delete only the path for this server. - - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, registryKey.get()); - if (lResult != ERROR_SUCCESS && lResult != ERROR_FILE_NOT_FOUND) - return lResult; - - // Delete the version-independent ProgID Key. - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szVerIndProgID); - if (lResult != ERROR_SUCCESS && lResult != ERROR_FILE_NOT_FOUND) - return lResult; - - lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szProgID); - - return lResult; -} diff --git a/mailnews/mapi/registry/src/Registry.h b/mailnews/mapi/registry/src/Registry.h deleted file mode 100644 index 428b88f1ddf1..000000000000 --- a/mailnews/mapi/registry/src/Registry.h +++ /dev/null @@ -1,57 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Krishna Mohan Khandrika - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef _REGISTRY_H_ -#define _REGISTRY_H_ - -#include -#include - -// This function will register a component in the Registry. - -HRESULT RegisterServer(const CLSID& clsid, - const char* szFriendlyName, - const char* szVerIndProgID, - const char* szProgID) ; - -// This function will unregister a component. - -HRESULT UnregisterServer(const CLSID& clsid, - const char* szVerIndProgID, - const char* szProgID) ; - -#endif diff --git a/mailnews/mapi/registry/src/makefile.win b/mailnews/mapi/registry/src/makefile.win deleted file mode 100644 index 2f2d9f753f7d..000000000000 --- a/mailnews/mapi/registry/src/makefile.win +++ /dev/null @@ -1,72 +0,0 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Srilatha Moturi -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH=..\..\..\.. - -MODULE=nsMapiRegistry -MAKE_OBJ_TYPE = DLL -LIBRARY_NAME=$(MODULE) -MODULE_NAME=nsMapiRegistry - - -CPPSRCS= \ - nsMapiRegistry.cpp \ - Registry.cpp \ - nsMapiRegistryUtils.cpp \ - $(NULL) - -CPP_OBJS= \ - .\$(OBJDIR)\nsMapiRegistry.obj \ - .\$(OBJDIR)\Registry.obj \ - .\$(OBJDIR)\nsMapiRegistryUtils.obj \ - $(NULL) - -LLIBS= \ - $(DIST)\lib\xpcom.lib \ - $(LIBNSPR) \ - $(NULL) - -WIN_LIBS= \ - ole32.lib \ - $(NULL) -EXPORTS= \ - nsMapiRegistry.h \ - Registry.h \ - nsMapiRegistryUtils.h \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> diff --git a/mailnews/mapi/registry/src/nsMapiRegistry.cpp b/mailnews/mapi/registry/src/nsMapiRegistry.cpp deleted file mode 100644 index 42f887c94c25..000000000000 --- a/mailnews/mapi/registry/src/nsMapiRegistry.cpp +++ /dev/null @@ -1,249 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsIServiceManager.h" -#include "nsMapiRegistry.h" -#include "nsIGenericFactory.h" -#include "nsXPIDLString.h" -#include "nsIPromptService.h" -#include "nsIStringBundle.h" -#include "nsIProxyObjectManager.h" -#include "nsProxiedService.h" - -#include "nsMapiRegistryUtils.h" -#include "nsString.h" - -static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); - -nsresult ShowMapiErrorDialog(); - -/** Implementation of the nsIMapiRegistry interface. - * Use standard implementation of nsISupports stuff. - */ -NS_IMPL_ISUPPORTS1(nsMapiRegistry, nsIMapiRegistry); - -nsMapiRegistry::nsMapiRegistry() { - NS_INIT_ISUPPORTS(); - m_ShowDialog = !verifyRestrictedAccess(); - m_DefaultMailClient = IsDefaultMailClient(); -} - -nsMapiRegistry::~nsMapiRegistry() { -} - -NS_IMETHODIMP -nsMapiRegistry::GetIsDefaultMailClient(PRBool * retval) { - *retval = m_DefaultMailClient; - return NS_OK; -} - -NS_IMETHODIMP -nsMapiRegistry::GetShowDialog(PRBool * retval) { - *retval = m_ShowDialog; - return NS_OK; -} - -NS_IMETHODIMP -nsMapiRegistry::SetDefaultMailClient() { - nsresult rv = setDefaultMailClient(); - if (NS_SUCCEEDED(rv)) - m_DefaultMailClient = PR_TRUE; - else - rv = ShowMapiErrorDialog(); - return NS_OK; -} - -NS_IMETHODIMP -nsMapiRegistry::UnsetDefaultMailClient() { - nsresult rv = unsetDefaultMailClient(); - if (NS_SUCCEEDED(rv)) - m_DefaultMailClient = PR_FALSE; - else - ShowMapiErrorDialog(); - return NS_OK; -} - -/** This will bring up the dialog box only once per session and - * only if the current app is not default Mail Client. - * This also checks the registry if the registry key - * showMapiDialog is set - */ -NS_IMETHODIMP -nsMapiRegistry::ShowMailIntegrationDialog() { - nsresult rv; - if (!m_ShowDialog || !getShowDialog()) return NS_OK; - nsCOMPtr promptService(do_GetService( - "@mozilla.org/embedcomp/prompt-service;1", &rv)); - if (NS_SUCCEEDED(rv) && promptService) - { - nsCOMPtr bundleService(do_GetService( - kStringBundleServiceCID, &rv)); - if (NS_FAILED(rv) || !bundleService) return NS_ERROR_FAILURE; - - nsCOMPtr bundle; - rv = bundleService->CreateBundle( - "chrome://messenger/locale/mapi.properties", - getter_AddRefs(bundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString dialogTitle; - const PRUnichar *brandStrings[] = { brandName.get() }; - NS_NAMED_LITERAL_STRING(dialogTitlePropertyTag, "dialogTitle"); - const PRUnichar *dTitlepropertyTag = dialogTitlePropertyTag.get(); - rv = bundle->FormatStringFromName(dTitlepropertyTag, - brandStrings, 1, - getter_Copies(dialogTitle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString dialogText; - NS_NAMED_LITERAL_STRING(dialogTextPropertyTag, "dialogText"); - const PRUnichar *dpropertyTag = dialogTextPropertyTag.get(); - rv = bundle->FormatStringFromName(dpropertyTag, - brandStrings, 1, - getter_Copies(dialogText)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString checkboxText; - rv = bundle->GetStringFromName( - NS_LITERAL_STRING("checkboxText").get(), - getter_Copies(checkboxText)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - PRBool checkValue = PR_FALSE; - PRInt32 buttonPressed = 0; - rv = promptService->ConfirmEx(nsnull, - dialogTitle, - dialogText.get(), - (nsIPromptService::BUTTON_TITLE_YES * - nsIPromptService::BUTTON_POS_0) + - (nsIPromptService::BUTTON_TITLE_NO * - nsIPromptService::BUTTON_POS_1), - nsnull, - nsnull, - nsnull, - checkboxText, - &checkValue, - &buttonPressed); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, "Software\\Mozilla\\Desktop", - "showMapiDialog", (checkValue) ? "0" : "1"); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - m_ShowDialog = PR_FALSE; - if (!buttonPressed) - rv = SetDefaultMailClient(); - } - return rv; -} - -nsresult ShowMapiErrorDialog() { - nsresult rv; - nsCOMPtr promptService(do_GetService( - "@mozilla.org/embedcomp/prompt-service;1", &rv)); - if (NS_SUCCEEDED(rv) && promptService) - { - nsCOMPtr bundleService(do_GetService( - kStringBundleServiceCID, &rv)); - if (NS_FAILED(rv) || !bundleService) return NS_ERROR_FAILURE; - - nsCOMPtr bundle; - rv = bundleService->CreateBundle( - "chrome://messenger/locale/mapi.properties", - getter_AddRefs(bundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - - nsXPIDLString dialogTitle; - const PRUnichar *brandStrings[] = { brandName.get() }; - NS_NAMED_LITERAL_STRING(dialogTitlePropertyTag, "errorMessageTitle"); - const PRUnichar *dTitlepropertyTag = dialogTitlePropertyTag.get(); - rv = bundle->FormatStringFromName(dTitlepropertyTag, - brandStrings, 1, - getter_Copies(dialogTitle)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - nsXPIDLString dialogText; - NS_NAMED_LITERAL_STRING(dialogTextPropertyTag, "errorMessageText"); - const PRUnichar *dpropertyTag = dialogTextPropertyTag.get(); - rv = bundle->FormatStringFromName(dpropertyTag, - brandStrings, 1, - getter_Copies(dialogText)); - if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - rv = promptService->Alert(nsnull, dialogTitle, - dialogText); - } - return rv; -} - - -NS_GENERIC_FACTORY_CONSTRUCTOR(nsMapiRegistry); - -// The list of components we register -static nsModuleComponentInfo components[] = -{ - { - NS_IMAPIREGISTRY_CLASSNAME, - NS_IMAPIREGISTRY_CID, - NS_IMAPIWINHOOK_CONTRACTID, - nsMapiRegistryConstructor - } -}; - -NS_IMPL_NSGETMODULE(nsMapiRegistryModule, components); - diff --git a/mailnews/mapi/registry/src/nsMapiRegistry.h b/mailnews/mapi/registry/src/nsMapiRegistry.h deleted file mode 100644 index 15348f524efd..000000000000 --- a/mailnews/mapi/registry/src/nsMapiRegistry.h +++ /dev/null @@ -1,73 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsmapiregistry_h____ -#define nsmapiregistry_h____ - -#include "nsIMapiRegistry.h" - -#ifndef MAX_BUF -#define MAX_BUF 4096 -#endif - -/* c5be14ba-4e0a-4eec-a1b8-04363761d63c */ -#define NS_IMAPIREGISTRY_CID \ - { 0xc5be14ba, 0x4e0a, 0x4eec, {0xa1, 0xb8, 0x04, 0x36, 0x37, 0x61, 0xd6, 0x3c} } -#define NS_IMAPIREGISTRY_CONTRACTID "@mozilla.org/mapiregistry;1" -#define NS_IMAPIREGISTRY_CLASSNAME "Mozilla MAPI Registry" - -class nsMapiRegistry : public nsIMapiRegistry { -public: - // ctor/dtor - nsMapiRegistry(); - virtual ~nsMapiRegistry(); - - // Declare all interface methods we must implement. - NS_DECL_ISUPPORTS - NS_DECL_NSIMAPIREGISTRY - -protected: - - PRBool m_DefaultMailClient; - PRBool m_ShowDialog; - -private: - // Special member to handle initialization. - PRBool mHaveBeenSet; -}; // nsMapiRegistry - -#endif // nsmapiregistry_h____ diff --git a/mailnews/mapi/registry/src/nsMapiRegistryUtils.cpp b/mailnews/mapi/registry/src/nsMapiRegistryUtils.cpp deleted file mode 100644 index c84f72dcf6e5..000000000000 --- a/mailnews/mapi/registry/src/nsMapiRegistryUtils.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#undef UNICODE -#undef _UNICODE - -#include "nsIServiceManager.h" -#include "nsMapiRegistryUtils.h" -#include "nsString.h" -#include "nsIStringBundle.h" -#include "nsXPIDLString.h" - -static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); -const CLSID CLSID_nsMapiImp = {0x29f458be, 0x8866, 0x11d5, {0xa3, 0xdd, 0x0, 0xb0, 0xd0, 0xf3, 0xba, 0xa7}}; - -// Returns the (fully-qualified) name of this executable. -static nsCString thisApplication() { - static nsCAutoString result; - - if (result.IsEmpty()) { - char buffer[MAX_PATH] = {0}; - DWORD len = ::GetModuleFileName(NULL, buffer, sizeof buffer); - len = ::GetShortPathName(buffer, buffer, sizeof buffer); - - result = buffer; - result.ToUpperCase(); - } - - return result; -} - -/** This returns the brand name for this application - */ -static nsCString brandName() { - static nsCAutoString brand; - nsresult rv; - if (brand.IsEmpty()) { - nsCOMPtr bundleService(do_GetService( - kStringBundleServiceCID, &rv)); - if (NS_SUCCEEDED(rv) && bundleService) { - nsCOMPtr brandBundle; - rv = bundleService->CreateBundle( - "chrome://global/locale/brand.properties", - getter_AddRefs(brandBundle)); - if (NS_SUCCEEDED(rv)) { - nsXPIDLString brandName; - rv = brandBundle->GetStringFromName( - NS_LITERAL_STRING("brandShortName").get(), - getter_Copies(brandName)); - if (NS_SUCCEEDED(rv)) { - brand.AssignWithConversion(brandName.get()); - } - } - } - } - return brand; -} - -// verifyRestrictedAccess - Returns PR_TRUE if this user only has restricted access -// to the registry keys we need to modify. -PRBool verifyRestrictedAccess() { - char subKey[] = "Software\\Mozilla - Test Key"; - PRBool result = PR_FALSE; - DWORD dwDisp = 0; - HKEY key; - // Try to create/open a subkey under HKLM. - DWORD rc = ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, - subKey, - 0, - NULL, - REG_OPTION_NON_VOLATILE, - KEY_WRITE, - NULL, - &key, - &dwDisp); - - if (rc == ERROR_SUCCESS) { - // Key was opened; first close it. - ::RegCloseKey(key); - // Delete it if we just created it. - switch(dwDisp) { - case REG_CREATED_NEW_KEY: - ::RegDeleteKey(HKEY_LOCAL_MACHINE, subKey); - break; - case REG_OPENED_EXISTING_KEY: - break; - } - } else { - // Can't create/open it; we don't have access. - result = PR_TRUE; - } - return result; -} - -nsresult SetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName, char * value) -{ - nsresult result = NS_ERROR_FAILURE; - HKEY key; - LONG rc = ::RegCreateKey(baseKey, keyName, &key); - - if (rc == ERROR_SUCCESS) { - char buffer[MAX_PATH] = {0}; - DWORD len = sizeof buffer; - rc = ::RegQueryValueEx(key, valueName, NULL, NULL, (LPBYTE)buffer, - &len ); - if (strcmp(value, buffer) != 0 ) { - rc = ::RegSetValueEx(key, valueName, NULL, REG_SZ, - (LPBYTE)(const char*)value, strlen(value)); - if (rc == ERROR_SUCCESS) { - result = NS_OK; - } - } else { - result = NS_OK; - } - ::RegCloseKey(key); - } - return result; -} - -nsCString GetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName) -{ - nsCAutoString value; - HKEY key; - LONG rc = ::RegOpenKey(baseKey, keyName, &key); - if (rc == ERROR_SUCCESS) { - char buffer[MAX_PATH] = {0}; - DWORD len = sizeof buffer; - rc = ::RegQueryValueEx(key, valueName, NULL, NULL, - (LPBYTE)buffer, &len); - if (rc == ERROR_SUCCESS) { - if (len) - value = buffer; - } - ::RegCloseKey(key); - } - return value; -} - -#define EXE_EXTENSION ".exe" - -/** Returns TRUE if the current application is default mail client. - */ -PRBool IsDefaultMailClient() -{ - nsCAutoString name(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", "")); - if (!name.IsEmpty()) { - nsCString keyName("Software\\Clients\\Mail\\"); - keyName += name.get(); - keyName += "\\protocols\\mailto\\shell\\open\\command"; - - nsCAutoString result(GetRegistryKey(HKEY_LOCAL_MACHINE, - keyName.get(), "")); - if (!result.IsEmpty()) { - nsCAutoString strExtension; - strExtension.Assign(EXE_EXTENSION); - result.ToUpperCase(); - strExtension.ToUpperCase(); - PRInt32 index = result.RFind(strExtension.get()); - if (index != kNotFound) { - result.Truncate(index + strExtension.Length()); - } - return (result == thisApplication()); - } - } - return PR_FALSE; - -} - -/** Saves the current setting of the default Mail Client in - * HKEY_LOCAL_MACHINE\\Software\\Mozilla\\Desktop - */ -nsresult saveDefaultMailClient() -{ - nsresult rv; - nsCAutoString name(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", "")); - if (!name.IsEmpty()) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail", - (char *)name.get()); - if (NS_SUCCEEDED(rv)) { - nsCString keyName("Software\\Clients\\Mail\\"); - keyName += name.get(); - keyName += "\\protocols\\mailto\\shell\\open\\command"; - nsCAutoString appPath(GetRegistryKey(HKEY_LOCAL_MACHINE, - keyName.get(), "")); - if (!appPath.IsEmpty()) { - nsCString stringName("HKEY_LOCAL_MACHINE\\"); - stringName += keyName.get(); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - stringName.get(), (char *)appPath.get()); - } - } - } - else - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail", - ""); - return rv; -} - -/** Saves the current user setting of the default Mail Client in - * HKEY_LOCAL_MACHINE\\Software\\Mozilla\\Desktop - */ -nsresult saveUserDefaultMailClient() -{ - nsresult rv; - nsCAutoString name(GetRegistryKey(HKEY_CURRENT_USER, - "Software\\Clients\\Mail", "")); - if (!name.IsEmpty()) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_CURRENT_USER\\Software\\Clients\\Mail", - (char *)name.get()); - } - else { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_CURRENT_USER\\Software\\Clients\\Mail", - ""); - } - return rv; -} - -/** Sets Mozilla as default Mail Client - */ -nsresult setDefaultMailClient() -{ - nsresult rv; - if (verifyRestrictedAccess()) return NS_ERROR_FAILURE; - rv = saveDefaultMailClient(); - if (!NS_SUCCEEDED(saveUserDefaultMailClient()) || - !NS_SUCCEEDED(rv)) return NS_ERROR_FAILURE; - nsCAutoString keyName("Software\\Clients\\Mail\\"); - - nsCAutoString appName(brandName()); - if (!appName.IsEmpty()) { - keyName.Append(appName.get()); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "", (char *)appName.get()); - } - else - rv = NS_ERROR_FAILURE; - if (NS_SUCCEEDED(rv)) { - nsCAutoString dllPath(thisApplication()); - PRInt32 index = dllPath.RFind("\\"); - if (index != kNotFound) - dllPath.Truncate(index); - dllPath += "mozMapi32.dll"; - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), "DLLPath", - (char *)dllPath.get()); - if (NS_SUCCEEDED(rv)) { - keyName.Append("\\protocols\\mailto"); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "", "URL:MailTo Protocol"); - if (NS_SUCCEEDED(rv)) { - nsCAutoString appPath(thisApplication()); - appPath += " \"%1\""; - keyName.Append("\\shell\\open\\command"); - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "", (char *)appPath.get()); - if (NS_SUCCEEDED(rv)) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", - "", (char *)appName.get()); - } - } - } - } - - nsresult result = SetRegistryKey(HKEY_CURRENT_USER, "Software\\Clients\\Mail", - "", (char *)appName.get()); - if (NS_SUCCEEDED(result)) { - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "setMailDefault", "1"); - } - - if (NS_SUCCEEDED(rv)) { - RegisterServer(CLSID_nsMapiImp, "Mozilla MAPI", "mozMapi", "mozMapi.1"); - if (NS_SUCCEEDED(result)) - return result; - } - - return NS_ERROR_FAILURE; -} - -/** Removes Mozilla as the default Mail client and restores the previous setting - */ -nsresult unsetDefaultMailClient() { - nsresult result = NS_OK; - if (verifyRestrictedAccess()) return NS_ERROR_FAILURE; - nsCAutoString name(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail")); - nsCAutoString appName(brandName()); - - if (!name.IsEmpty() && !appName.IsEmpty() && name.Equals(appName)) { - nsCAutoString keyName("HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\"); - keyName.Append(appName.get()); - keyName.Append("\\protocols\\mailto\\shell\\open\\command"); - nsCAutoString appPath(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - (char *)keyName.get())); - if (!appPath.IsEmpty()) { - keyName.Assign("Software\\Clients\\Mail\\"); - keyName.Append(appName.get()); - keyName.Append("\\protocols\\mailto\\shell\\open\\command"); - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *) keyName.get(), - "", (char *)appPath.get()); - if (NS_SUCCEEDED(result)) { - PRInt32 index = appPath.RFind("\\"); - if (index != kNotFound) - appPath.Truncate(index); - appPath += "mozMapi32.dll"; - keyName.Assign("Software\\Clients\\Mail\\"); - keyName.Append(appName.get()); - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - (char *)keyName.get(), - "DLLPath", (char *) appPath.get()); - } - } - } - if (!name.IsEmpty()) - if (NS_SUCCEEDED(result)) - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", - "", (char *)name.get()); - else - result = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Clients\\Mail", - "", ""); - - nsCAutoString userAppName(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "HKEY_CURRENT_USER\\Software\\Clients\\Mail")); - nsresult rv = NS_OK; - if (!userAppName.IsEmpty()) { - rv = SetRegistryKey(HKEY_CURRENT_USER, - "Software\\Clients\\Mail", - "", (char *)userAppName.get()); - } - else { - LONG rc = RegDeleteValue(HKEY_CURRENT_USER, "Software\\Clients\\Mail"); - if (rc == ERROR_SUCCESS) - rv = NS_ERROR_FAILURE; - } - if (NS_SUCCEEDED(rv)) { - rv = SetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "isDefaultMailClient", "0"); - } - if (NS_SUCCEEDED(result)) { - UnregisterServer(CLSID_nsMapiImp, "mozMapi", "mozMapi.1"); - if (NS_SUCCEEDED(rv)) - return rv; - } - return NS_ERROR_FAILURE; -} - -/** Returns FALSE if showMapiDialog is set to 0. - * Returns TRUE otherwise - * Also returns TRUE if the Mozilla has been set as the default mail client - * and some other application has changed that setting. - */ -PRBool getShowDialog() { - PRBool rv = PR_FALSE; - nsCString showDialog(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "showMapiDialog")); - if (!showDialog.IsEmpty()) { - if (showDialog.Equals(NS_LITERAL_CSTRING("1"))) - rv = PR_TRUE; - } - else - rv = PR_TRUE; - if (!rv) { - nsCAutoString setMailDefault(GetRegistryKey(HKEY_LOCAL_MACHINE, - "Software\\Mozilla\\Desktop", - "setMailDefault")); - if (!setMailDefault.IsEmpty() && setMailDefault.Equals(NS_LITERAL_CSTRING("1"))) - rv = PR_TRUE; - } - return rv; -} diff --git a/mailnews/mapi/registry/src/nsMapiRegistryUtils.h b/mailnews/mapi/registry/src/nsMapiRegistryUtils.h deleted file mode 100644 index 3746ecebd9d8..000000000000 --- a/mailnews/mapi/registry/src/nsMapiRegistryUtils.h +++ /dev/null @@ -1,84 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 2001 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Srilatha Moturi - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsmapiregistryutils_h____ -#define nsmapiregistryutils_h____ - -#include -#include -#include - -#include "Registry.h" -#include "nsString.h" - -// This function returns the (fully-qualified) name of this executable. -static nsCString thisApplication(); - -// returns the brandName of the current application -static nsCString brandName(); - -//Sets the registry key for basekey/keyname valuename. -nsresult SetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName, char * value); - -// Gets the current regiistry setting for the key. -nsCString GetRegistryKey(HKEY baseKey, const char * keyName, - const char * valueName); -// Returns PR_TRUE if this user only has restricted access -// to the registry keys we need to modify. -PRBool verifyRestrictedAccess(); - -// Returns true if mozilla is the default mail client -// by checking the registry. -PRBool IsDefaultMailClient(); - -// Save the current setting for the default mail client. -nsresult saveDefaultMailClient(); - -// Saves the current user setting for the default mail client. -nsresult saveUserDefaultMailClient(); - -// Sets mozilla as the default mail client -nsresult setDefaultMailClient(); - -// unsets mozilla and resets the default mail client setting to previous one -nsresult unsetDefaultMailClient(); - -// returns true if we need to show the mail integration dialog. -PRBool getShowDialog(); - -#endif