Closed
Bug 438333
Opened 16 years ago
Closed 16 years ago
Make determining which address books to search on autocomplete a lot easier
Categories
(MailNews Core :: Address Book, defect)
MailNews Core
Address Book
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.9
People
(Reporter: standard8, Assigned: standard8)
References
Details
Attachments
(1 file)
19.96 KB,
patch
|
neil
:
review+
neil
:
superreview+
|
Details | Diff | Splinter Review |
Currently in nsAbAutoCompleteSession we first of all find out if local autocomplete is enabled, then we also look to see if we need to search any replicated (cached) LDAP directories, then we iterate through all the local directories, before finally getting the last replicated LDAP directory. There is currently an attribute in nsIAbDirectory:
searchDuringLocalAutocomplete
Currently, this returns true for an address book type, apart from LDAP which returns false.
I want to change this to:
boolean useForAutocomplete([optional] in ACString aIdentityKey);
The intention currently is that:
1) local directories (mork/outlook/os x) will return the value of mail.enable_autocomplete
2) remote directories (ldap and any others that come along) will return false when they are online, and true when they are offline and data is available.
Although the existing code can't use the identity key, when implementing the next step of bug 370306 I will hook it up, so that the correct offline cache will be used i.e. match the online address book with the offline version.
With this new function we'll be able to iterate through the directories and query each one in turn. The only disadvantage I see is that we'll be getting the mail.enable_autocomplete pref n times as opposed to once.
It is a shame I'm having to change the old autocomplete code, but it seemed the easiest way to make the new code clean from the start.
There are two things I'm expecting to happen at some stage in the future which is why I want to implement this interface in this manner:
1) GetChildCards and the other search functions will be replaced by some async/sync generic method of getting the cards.
2) Fixing bug 125188 (specify which directories and ABs)
This API change now would mean that we could do this without having to change the API again (just the documentation).
Attachment #324447 -
Flags: superreview?(neil)
Attachment #324447 -
Flags: review?(neil)
Comment 1•16 years ago
|
||
Comment on attachment 324447 [details] [diff] [review]
The fix
>+ * Whether or not the directory should be searched when doing autocomplete,
>+ * *by using GetChildCards*. Currently LDAP does not support this in online
The *s look odd... perhaps something like this:
(currently by using GetChildCards); LDAP does not support this
>+ boolean useForAutocomplete([optional] in ACString aIdentityKey);
All of our "real" callers will "have" a key, so no need for it to be optional.
>+ PRBool useForAutocomplete;
>+ rv = directory->UseForAutocomplete(EmptyCString(), &useForAutocomplete);
> NS_ENSURE_SUCCESS(rv, rv);
>+
>+ if (!useForAutocomplete)
> return NS_OK;
This won't work for kAllDirectoryRoot. r=me with this fixed.
>+ searchedDirs = PR_TRUE;
Hmm, maybe call this didSearch?
Attachment #324447 -
Flags: superreview?(neil)
Attachment #324447 -
Flags: superreview+
Attachment #324447 -
Flags: review?(neil)
Attachment #324447 -
Flags: review+
Assignee | ||
Comment 2•16 years ago
|
||
Checked in with nits addressed. For testers, there should currently be no change to the existing autocomplete functionality. Local searches and offline LDAP searches should work as they did before this patch.
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Assignee | ||
Updated•16 years ago
|
Flags: in-testsuite+
Target Milestone: --- → mozilla1.9
Updated•16 years ago
|
Product: Core → MailNews Core
You need to log in
before you can comment on or make changes to this bug.
Description
•