diff --git a/mailnews/addrbook/public/nsIAbDirectory.idl b/mailnews/addrbook/public/nsIAbDirectory.idl
index 5585c704a8c..09f75e6f26f 100644
--- a/mailnews/addrbook/public/nsIAbDirectory.idl
+++ b/mailnews/addrbook/public/nsIAbDirectory.idl
@@ -130,6 +130,11 @@ interface nsIAbDirectory : nsISupports {
*/
readonly attribute boolean isRemote;
+ /**
+ * directory is secure (as in LDAP over SSL)
+ */
+ readonly attribute boolean isSecure;
+
/**
* directory should be searched when doing local autocomplete
*/
diff --git a/mailnews/addrbook/resources/content/abDirTreeOverlay.xul b/mailnews/addrbook/resources/content/abDirTreeOverlay.xul
index 761526785d8..b64b60ce68a 100644
--- a/mailnews/addrbook/resources/content/abDirTreeOverlay.xul
+++ b/mailnews/addrbook/resources/content/abDirTreeOverlay.xul
@@ -65,13 +65,16 @@ Contributors:
+
-
+
diff --git a/mailnews/addrbook/src/nsAbDirProperty.cpp b/mailnews/addrbook/src/nsAbDirProperty.cpp
index 7bbe6a5845d..235cb64ecae 100644
--- a/mailnews/addrbook/src/nsAbDirProperty.cpp
+++ b/mailnews/addrbook/src/nsAbDirProperty.cpp
@@ -280,6 +280,13 @@ NS_IMETHODIMP nsAbDirProperty::GetIsRemote(PRBool *aIsRemote)
return NS_OK;
}
+NS_IMETHODIMP nsAbDirProperty::GetIsSecure(PRBool *aIsSecure)
+{
+ NS_ENSURE_ARG_POINTER(aIsSecure);
+ *aIsSecure = PR_FALSE;
+ return NS_OK;
+}
+
NS_IMETHODIMP nsAbDirProperty::GetSearchDuringLocalAutocomplete(PRBool *aSearchDuringLocalAutocomplete)
{
NS_ENSURE_ARG_POINTER(aSearchDuringLocalAutocomplete);
diff --git a/mailnews/addrbook/src/nsAbLDAPDirectory.cpp b/mailnews/addrbook/src/nsAbLDAPDirectory.cpp
index 08b391f19aa..534f87d8b61 100644
--- a/mailnews/addrbook/src/nsAbLDAPDirectory.cpp
+++ b/mailnews/addrbook/src/nsAbLDAPDirectory.cpp
@@ -55,6 +55,7 @@
#include "nsIPref.h"
#include "nsXPCOM.h"
#include "nsISupportsPrimitives.h"
+#include "nsIPrefBranch.h"
nsAbLDAPDirectory::nsAbLDAPDirectory() :
nsAbDirectoryRDFResource(),
@@ -454,6 +455,27 @@ NS_IMETHODIMP nsAbLDAPDirectory::GetIsRemote(PRBool *aIsRemote)
return NS_OK;
}
+NS_IMETHODIMP nsAbLDAPDirectory::GetIsSecure(PRBool *aIsSecure)
+{
+ NS_ENSURE_ARG_POINTER(aIsSecure);
+
+ nsresult rv;
+ nsCOMPtr prefBranch = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // use mURINoQuery to get a prefName
+ nsCAutoString prefName;
+ prefName = nsDependentCString(mURINoQuery.get() + kLDAPDirectoryRootLen) + NS_LITERAL_CSTRING(".uri");
+
+ nsXPIDLCString URI;
+ rv = prefBranch->GetCharPref(prefName.get(), getter_Copies(URI));
+ NS_ENSURE_SUCCESS(rv,rv);
+
+ // to determine if this is a secure directory, check if the uri is ldaps:// or not
+ *aIsSecure = (strncmp(URI.get(), "ldaps:", 6) == 0);
+ return NS_OK;
+}
+
NS_IMETHODIMP nsAbLDAPDirectory::GetSearchDuringLocalAutocomplete(PRBool *aSearchDuringLocalAutocomplete)
{
NS_ENSURE_ARG_POINTER(aSearchDuringLocalAutocomplete);
diff --git a/mailnews/addrbook/src/nsAbLDAPDirectory.h b/mailnews/addrbook/src/nsAbLDAPDirectory.h
index d28971bbf1d..1a73d4c6919 100644
--- a/mailnews/addrbook/src/nsAbLDAPDirectory.h
+++ b/mailnews/addrbook/src/nsAbLDAPDirectory.h
@@ -67,6 +67,7 @@ public:
NS_IMETHOD HasCard(nsIAbCard *cards, PRBool *hasCard);
NS_IMETHOD GetSupportsMailingLists(PRBool *aSupportsMailingsLists);
NS_IMETHOD GetIsRemote(PRBool *aIsRemote);
+ NS_IMETHOD GetIsSecure(PRBool *aIsRemote);
NS_IMETHOD GetSearchDuringLocalAutocomplete(PRBool *aSearchDuringLocalAutocomplete);
// nsAbLDAPDirectoryQuery methods
diff --git a/mailnews/addrbook/src/nsAbView.cpp b/mailnews/addrbook/src/nsAbView.cpp
index 1e6e7f3524b..52e82c27db9 100644
--- a/mailnews/addrbook/src/nsAbView.cpp
+++ b/mailnews/addrbook/src/nsAbView.cpp
@@ -805,12 +805,12 @@ nsresult nsAbView::CreateCollationKey(const PRUnichar *aSource, PRUint8 **aKey,
NS_ENSURE_SUCCESS(rv, rv);
}
- // XXX can we avoid this copy?
+ // XXX can we avoid this copy?
nsAutoString sourceString(aSource);
rv = mCollationKeyGenerator->GetSortKeyLen(kCollationCaseInSensitive, sourceString, aKeyLen);
NS_ENSURE_SUCCESS(rv, rv);
- *aKey = (PRUint8*) nsMemory::Alloc (*aKeyLen);
+ *aKey = (PRUint8*) nsMemory::Alloc(*aKeyLen);
if (!aKey)
return NS_ERROR_OUT_OF_MEMORY;
diff --git a/mailnews/addrbook/src/nsDirectoryDataSource.cpp b/mailnews/addrbook/src/nsDirectoryDataSource.cpp
index b50a366b7e1..37f9f1835bd 100644
--- a/mailnews/addrbook/src/nsDirectoryDataSource.cpp
+++ b/mailnews/addrbook/src/nsDirectoryDataSource.cpp
@@ -60,9 +60,9 @@
#define NC_RDF_DIRURI "http://home.netscape.com/NC-rdf#DirUri"
#define NC_RDF_ISMAILLIST "http://home.netscape.com/NC-rdf#IsMailList"
#define NC_RDF_ISREMOTE "http://home.netscape.com/NC-rdf#IsRemote"
+#define NC_RDF_ISSECURE "http://home.netscape.com/NC-rdf#IsSecure"
#define NC_RDF_ISWRITEABLE "http://home.netscape.com/NC-rdf#IsWriteable"
-
//Directory Commands
#define NC_RDF_DELETE "http://home.netscape.com/NC-rdf#Delete"
#define NC_RDF_DELETECARDS "http://home.netscape.com/NC-rdf#DeleteCards"
@@ -145,6 +145,8 @@ nsAbDirectoryDataSource::Init()
NS_ENSURE_SUCCESS(rv,rv);
rv = rdf->GetResource(NC_RDF_ISREMOTE, getter_AddRefs(kNC_IsRemote));
NS_ENSURE_SUCCESS(rv,rv);
+ rv = rdf->GetResource(NC_RDF_ISSECURE, getter_AddRefs(kNC_IsSecure));
+ NS_ENSURE_SUCCESS(rv,rv);
rv = rdf->GetResource(NC_RDF_ISWRITEABLE, getter_AddRefs(kNC_IsWriteable));
NS_ENSURE_SUCCESS(rv,rv);
rv = rdf->GetResource(NC_RDF_DELETE, getter_AddRefs(kNC_Delete));
@@ -229,6 +231,7 @@ NS_IMETHODIMP nsAbDirectoryDataSource::GetTargets(nsIRDFResource* source,
(kNC_DirUri == property) ||
(kNC_IsMailList == property) ||
(kNC_IsRemote == property) ||
+ (kNC_IsSecure == property) ||
(kNC_IsWriteable == property))
{
nsSingletonEnumerator* cursor =
@@ -300,6 +303,7 @@ nsAbDirectoryDataSource::HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc
aArc == kNC_DirUri ||
aArc == kNC_IsMailList ||
aArc == kNC_IsRemote ||
+ aArc == kNC_IsSecure ||
aArc == kNC_IsWriteable);
}
else {
@@ -349,6 +353,7 @@ nsAbDirectoryDataSource::getDirectoryArcLabelsOut(nsIAbDirectory *directory,
(*arcs)->AppendElement(kNC_DirUri);
(*arcs)->AppendElement(kNC_IsMailList);
(*arcs)->AppendElement(kNC_IsRemote);
+ (*arcs)->AppendElement(kNC_IsSecure);
(*arcs)->AppendElement(kNC_IsWriteable);
return NS_OK;
}
@@ -503,6 +508,8 @@ nsresult nsAbDirectoryDataSource::createDirectoryNode(nsIAbDirectory* directory,
rv = createDirectoryIsMailListNode(directory, target);
if ((kNC_IsRemote == property))
rv = createDirectoryIsRemoteNode(directory, target);
+ if ((kNC_IsSecure == property))
+ rv = createDirectoryIsSecureNode(directory, target);
if ((kNC_IsWriteable == property))
rv = createDirectoryIsWriteableNode(directory, target);
return rv;
@@ -579,16 +586,23 @@ nsresult
nsAbDirectoryDataSource::createDirectoryIsRemoteNode(nsIAbDirectory* directory,
nsIRDFNode **target)
{
- nsresult rv;
PRBool isRemote;
- rv = directory->GetIsRemote(&isRemote);
+ nsresult rv = directory->GetIsRemote(&isRemote);
NS_ENSURE_SUCCESS(rv, rv);
- if (isRemote)
- *target = kTrueLiteral;
- else
- *target = kFalseLiteral;
- NS_IF_ADDREF(*target);
+ NS_IF_ADDREF(*target = (isRemote ? kTrueLiteral : kFalseLiteral));
+ return NS_OK;
+}
+
+nsresult
+nsAbDirectoryDataSource::createDirectoryIsSecureNode(nsIAbDirectory* directory,
+ nsIRDFNode **target)
+{
+ PRBool IsSecure;
+ nsresult rv = directory->GetIsSecure(&IsSecure);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ NS_IF_ADDREF(*target = (IsSecure ? kTrueLiteral : kFalseLiteral));
return NS_OK;
}
@@ -596,16 +610,11 @@ nsresult
nsAbDirectoryDataSource::createDirectoryIsWriteableNode(nsIAbDirectory* directory,
nsIRDFNode **target)
{
- nsresult rv;
PRBool isWriteable;
- rv = directory->GetOperations(&isWriteable);
+ nsresult rv = directory->GetOperations(&isWriteable);
NS_ENSURE_SUCCESS(rv, rv);
- if (isWriteable & nsIAbDirectory::opWrite)
- *target = kTrueLiteral;
- else
- *target = kFalseLiteral;
- NS_IF_ADDREF(*target);
+ NS_IF_ADDREF(*target = ((isWriteable & nsIAbDirectory::opWrite) ? kTrueLiteral : kFalseLiteral));
return NS_OK;
}
@@ -618,11 +627,7 @@ nsAbDirectoryDataSource::createDirectoryIsMailListNode(nsIAbDirectory* directory
rv = directory->GetIsMailList(&isMailList);
NS_ENSURE_SUCCESS(rv, rv);
- if (isMailList)
- *target = kTrueLiteral;
- else
- *target = kFalseLiteral;
- NS_IF_ADDREF(*target);
+ NS_IF_ADDREF(*target = (isMailList ? kTrueLiteral : kFalseLiteral));
return NS_OK;
}
@@ -715,7 +720,7 @@ nsresult nsAbDirectoryDataSource::DoDirectoryHasAssertion(nsIAbDirectory *direct
rv = directory->HasDirectory(newDirectory, hasAssertion);
}
else if ((kNC_IsMailList == property) || (kNC_IsRemote == property) ||
- (kNC_IsWriteable == property))
+ (kNC_IsSecure == property) || (kNC_IsWriteable == property))
{
nsCOMPtr dirResource(do_QueryInterface(directory, &rv));
NS_ENSURE_SUCCESS(rv, rv);
diff --git a/mailnews/addrbook/src/nsDirectoryDataSource.h b/mailnews/addrbook/src/nsDirectoryDataSource.h
index 7151aed75b7..461aec6c709 100644
--- a/mailnews/addrbook/src/nsDirectoryDataSource.h
+++ b/mailnews/addrbook/src/nsDirectoryDataSource.h
@@ -120,6 +120,8 @@ protected:
nsresult createDirectoryIsMailListNode(nsIAbDirectory *directory,
nsIRDFNode **target);
nsresult createDirectoryIsRemoteNode(nsIAbDirectory *directory,
+ nsIRDFNode **target);
+ nsresult createDirectoryIsSecureNode(nsIAbDirectory *directory,
nsIRDFNode **target);
nsresult createDirectoryIsWriteableNode(nsIAbDirectory *directory,
nsIRDFNode **target);
@@ -146,6 +148,7 @@ protected:
nsCOMPtr kNC_DirUri;
nsCOMPtr kNC_IsMailList;
nsCOMPtr kNC_IsRemote;
+ nsCOMPtr kNC_IsSecure;
nsCOMPtr kNC_IsWriteable;
// commands
diff --git a/themes/classic/jar.mn b/themes/classic/jar.mn
index 702d8a854b3..418b4ffef03 100644
--- a/themes/classic/jar.mn
+++ b/themes/classic/jar.mn
@@ -289,6 +289,7 @@ classic.jar:
skin/classic/messenger/addressbook/icons/addrbook.gif (messenger/addressbook/icons/addrbook.gif)
skin/classic/messenger/addressbook/icons/ablist.gif (messenger/addressbook/icons/ablist.gif)
skin/classic/messenger/addressbook/icons/remote-addrbook.gif (messenger/addressbook/icons/remote-addrbook.gif)
+ skin/classic/messenger/addressbook/icons/secure-remote-addrbook.gif (messenger/addressbook/icons/secure-remote-addrbook.gif)
skin/classic/messenger/addressbook/icons/remote-addrbook-error.gif (messenger/addressbook/icons/remote-addrbook-error.gif)
skin/classic/messenger/addressbook/icons/abcard.gif (messenger/addressbook/icons/abcard.gif)
skin/classic/messenger/addressbook/icons/im.gif (messenger/addressbook/icons/im.gif)
diff --git a/themes/classic/messenger/addressbook/addressPanes.css b/themes/classic/messenger/addressbook/addressPanes.css
index c9a3f478a45..278fc9dd3b3 100644
--- a/themes/classic/messenger/addressbook/addressPanes.css
+++ b/themes/classic/messenger/addressbook/addressPanes.css
@@ -42,3 +42,8 @@ treechildren:-moz-tree-image(DirCol, IsMailList-true) {
treechildren:-moz-tree-image(DirCol, IsRemote-true) {
list-style-image: url("chrome://messenger/skin/addressbook/icons/remote-addrbook.gif");
}
+
+treechildren:-moz-tree-image(DirCol, IsRemote-true, IsSecure-true) {
+ list-style-image: url("chrome://messenger/skin/addressbook/icons/secure-remote-addrbook.gif");
+}
+
diff --git a/themes/modern/jar.mn b/themes/modern/jar.mn
index df545e8f579..211cd77574f 100644
--- a/themes/modern/jar.mn
+++ b/themes/modern/jar.mn
@@ -296,6 +296,7 @@ modern.jar:
skin/modern/messenger/addressbook/icons/directory-down.gif (messenger/addressbook/icons/directory-down.gif)
skin/modern/messenger/addressbook/icons/directory-open.gif (messenger/addressbook/icons/directory-open.gif)
skin/modern/messenger/addressbook/icons/directory.gif (messenger/addressbook/icons/directory.gif)
+ skin/modern/messenger/addressbook/icons/secure-directory.gif (messenger/addressbook/icons/secure-directory.gif)
skin/modern/messenger/addressbook/icons/list.gif (messenger/addressbook/icons/list.gif)
skin/modern/messenger/addressbook/icons/mast-ab.gif (messenger/addressbook/icons/mast-ab.gif)
skin/modern/messenger/addressbook/icons/myaddrbk.gif (messenger/addressbook/icons/myaddrbk.gif)
diff --git a/themes/modern/messenger/addressbook/addressPanes.css b/themes/modern/messenger/addressbook/addressPanes.css
index becdceed12f..f210b28cea8 100644
--- a/themes/modern/messenger/addressbook/addressPanes.css
+++ b/themes/modern/messenger/addressbook/addressPanes.css
@@ -56,3 +56,8 @@ treechildren:-moz-tree-image(DirCol, IsMailList-true) {
treechildren:-moz-tree-image(DirCol, IsRemote-true) {
list-style-image: url("chrome://messenger/skin/addressbook/icons/directory.gif");
}
+
+treechildren:-moz-tree-image(DirCol, IsRemote-true, IsSecure-true) {
+ list-style-image: url("chrome://messenger/skin/addressbook/icons/secure-directory.gif");
+}
+