Closed Bug 471344 Opened 16 years ago Closed 15 years ago

Account Manager stops working after selecting one specific Copies & Folders pane

Categories

(Thunderbird :: Account Manager, defect)

x86
All
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: rpmdisguise-nave, Unassigned)

References

Details

Tested on TB 3.0b1 en-US and es-ES Linux, and es-ES Windows.

While running Litmus tests for L10n, I've noticed TB account manager stops switching panels every time I enter in a specific panel of a specific account. Error console shows this error:

Error: document.getElementById(accountPickerId).selectedItem is null
Source File: chrome://messenger/content/am-copies.js
Line: 269

The accounts have been imported from SeaMonkey 1.1.13, where the account manager works OK. The accounts were also imported to SeaMonkey 2.0a1pre and now works OK with SM 2.0a2.

After getting the error, I've closed TB and edited prefs.js to change references to real accounts, but after that, I couldn't reproduce the problem. However, I've restored the original prefs.js and the error persist. Therefore, I can't attach my prefs.js to this public bug, but I can send it to TB developers if needed.
(In reply to comment #0)
> I've closed TB and edited prefs.js to change references to real accounts,

What does "change reference to real accounts" mean?
Following entries relate to account definition itself.
What in which entry was wrong?
> user_pref("mail.accountmanager.accounts","...,accountN,...");
> user_pref("mail.account.accountN.identities", "idP");
> user_pref("mail.account.accountN.server", "serverQ");
> user_pref("mail.identity.idP.xxx, value);
> user_pref("mail.server.serverQ.xxx", value);
(In reply to comment #1)
> (In reply to comment #0)
> > I've closed TB and edited prefs.js to change references to real accounts,
> 
> What does "change reference to real accounts" mean?


prefs.js contains all information relative to my real e-mail accounts. I'd rather not make all of them public, so I tried to replace those references by fake addresses, like "another_address@nowhere.com" or "offending-account@nowhere.com".


> Following entries relate to account definition itself.
> What in which entry was wrong?
> > user_pref("mail.accountmanager.accounts","...,accountN,...");
> > user_pref("mail.account.accountN.identities", "idP");
> > user_pref("mail.account.accountN.server", "serverQ");
> > user_pref("mail.identity.idP.xxx, value);
> > user_pref("mail.server.serverQ.xxx", value);


Absolutely no idea. The program itself works OK, it is just the account manager panel what fails, and I didn't see anything weird.
You did next?
(1) Imported profile from SeaMonkey 1.1.13
(2) Edit prefs.js, and replaced string of "a@b.c.d" for real mail address by fake  address.
(3) Tb trunk didn't save Account Settings/Copies&Folders.
(4) Edit prefs.js, and change back to string of "a@b.c.d" for real mail address.
(5) No problem.

Did you replace mail-address-like string in next entries by fake address ?
> user_pref("mail.identity.idP.draft_folder", "mailbox://c@c.c.c/Drafts");
> user_pref("mail.identity.idP.fcc_folder", "mailbox://c@c.c.c/Sent");
> user_pref("mail.identity.idP.stationery_folder", "mailbox://c@c.c.c/Templates");
(In reply to comment #3)
> You did next?
> (1) Imported profile from SeaMonkey 1.1.13
> (2) Edit prefs.js, and replaced string of "a@b.c.d" for real mail address by
> fake  address.
> (3) Tb trunk didn't save Account Settings/Copies&Folders.
> (4) Edit prefs.js, and change back to string of "a@b.c.d" for real mail
> address.
> (5) No problem.


I don't really understand the above set of steps. Let me counter-attack with my own set of steps: :-)

This is what I did:

1) I created a new profile with TB3.0b1 es-ES Linux, importing data from "Mozilla" (SeaMonkey 1.1.13, actually).

2) I detected the not-refresh-pane problem in account manager in TB 3.0b1. When I either click with mouse or enter by keyboard into Copies & Folders of an specific account, the data is shown, but selecting another node in the account treeview does not refresh the pane as it must do.

3) I checked that neither SM 1.1.13, nor SM 2.0a2 show the same problem.

4) I downloaded TB 3.0b1 en-US, un-tarballed it and tried with the same profile. The problem is the same that with es-ES. I copied the Linux profile to Windows and tried with TB 3.0b1 es-ES Windows, and the problem persisted.

5) As the problem is restricted to a specific pane of an specific account, I understand there is something in the data (or in the position of that specific pane in the treeview) causing the error.

6) As the data in the offending pane gets displayed, I check the data visually and can't find any obvious error on it.

7) So I exit TB 3.0b1 and edit prefs.js. I do a search & replace on every identifiable e-mail account (my_name@domain.com) or account name (my_name) with fake data. It is a global search and replace, so it changes occurrences in entries like mailbox://c@c.c.c/Drafts and so (I can confirm that, not just guessing; I saw it). :-)

8) I run TB 3.0b1 using the modified prefs.js and the problem has gone away. Every pane is refreshed properly.

9) I exit TB 3.0b1, put back the old prefs.js and re-run TB3.0b1. The problem reappears.

I hope this make things a bit clearer. I understand that the problem is in the code, but only shows up with certain data (like my imported configuration).
(In reply to comment #4)
> 7) So I exit TB 3.0b1 and edit prefs.js. I do a search & replace on every
> identifiable e-mail account (my_name@domain.com) or account name (my_name) with
> fake data. It is a global search and replace, so it changes occurrences in
> entries like mailbox://c@c.c.c/Drafts and so (I can confirm that, not just
> guessing; I saw it). :-)
> 8) I run TB 3.0b1 using the modified prefs.js and the problem has gone away.
> Every pane is refreshed properly.

Oh, it was opposite to my guess. fake address -> good, real address -> bad.

> user_pref("mail.identity.idP.draft_folder", "mailbox://abc@x.y.z/Drafts");
Meaning of above setting is;
  - A folder named "Drafts" of an account identified by "abc@x.y.z"
    is used as "draft save folder" by identity=idP.
  - "abc@x.y.z" == an account who has;
                   mail.server.serverX.hostname = x.y.z 
                   mail.server.serverX.userName = abc

Because you say that you replaced only "abc@x.y.z" and "abc" part by fake ones,                    mail.server.serverX.hostname=x.y.z is probably kept.  
> user_pref("mail.identity.idP.draft_folder", "mailbox://aabbcc@xx.yy.zz/Drafts");
> user_pref("mail.server.serverQ.hostname", x.y.z);
> user_pref("mail.server.serverQ.userName", aabbcc);
It seems that Tb 3 does nothing if no server entry is found(prefs.js with fake one), but Tb 3 detects error if server entry is found(prefs.js with real one) and inconsistency exists.

Check whether inconsistency exists or not among account/identity/server entries for the troublesome account(prefs.js with real one).
(In reply to comment #5)
> > user_pref("mail.identity.idP.draft_folder", "mailbox://abc@x.y.z/Drafts");
> Meaning of above setting is;
>   - A folder named "Drafts" of an account identified by "abc@x.y.z"
>     is used as "draft save folder" by identity=idP.
>   - "abc@x.y.z" == an account who has;
>                    mail.server.serverX.hostname = x.y.z 
>                    mail.server.serverX.userName = abc


Good to know about that correlation. :-)


> Because you say that you replaced only "abc@x.y.z" and "abc" part by
> fake ones, mail.server.serverX.hostname=x.y.z is probably kept.
> > user_pref("mail.identity.idP.draft_folder", "mailbox://aabbcc@xx.yy.zz/Drafts");
> > user_pref("mail.server.serverQ.hostname", x.y.z);
> > user_pref("mail.server.serverQ.userName", aabbcc);
> It seems that Tb 3 does nothing if no server entry is found(prefs.js with fake
> one), but Tb 3 detects error if server entry is found(prefs.js with real one)
> and inconsistency exists.
> 
> Check whether inconsistency exists or not among account/identity/server
> entries for the troublesome account(prefs.js with real one).


It doesn't look like it is the problem:


user_pref("mail.identity.id4.draft_folder",
          "mailbox://mysecretname@correo.pop.yahoo.es/Drafts");
user_pref("mail.server.server5.hostname", "correo.pop.yahoo.es");
user_pref("mail.server.server5.name", "mysecretname@yahoo.es");
user_pref("mail.server.server5.userName", "mysecretname");


...and the account appears in the account manager treeview as mysecretname@yahoo.es.

In Thunderbird 3 imported configuration, the same account appears as:

user_pref("mail.identity.id4.draft_folder",
          "mailbox://mysecretname@correo.pop.yahoo.es/Drafts");
user_pref("mail.server.server5.hostname", "correo.pop.yahoo.es");
user_pref("mail.server.server5.name", "mysecretname");
user_pref("mail.server.server5.userName", "mysecretname");

The only difference is ...serverX.name (and so is reflected in the account manager treeview and pane title).

I've verified that, in each prefs.js, the ...serverX.name,"correo.pop.yahoo.es"); line only exists once.

So, the new hint is that TB 3 changed the account name from "a@x.y.z" to "a". :-?
(In reply to comment #6)
> In Thunderbird 3 imported configuration, the same account appears as:
>(snip)
> user_pref("mail.server.server5.name", "mysecretname");

This entry is merely used as label of the account displayed in folder pane.
Your problem is only "same label was displayed for two accounts at folder pane"?
You can change it at main Account Settings panel for the account, by altering "Account Name:" field value.
There is other entry which points "internal mail folder path", in additon to Drafts, Templates, and Sent.
>(folder for Drafts, Templates, Sent)
> mail.identity.idP.draft_folder
> mail.identity.idP.fcc_folder
> mail.identity.idP.stationery_folder
>(folder to move Junk mail).
> mail.server.serverQ.spamActionTargetAccount
> mail.server.serverQ.spamActionTargetFolder

Is there any inconsistency in Junk related setting?
(In reply to comment #7)
> This entry is merely used as label of the account displayed in folder pane.
> Your problem is only "same label was displayed for two accounts at folder
> pane"?


Of course not. :-) What I meant is that this entry is the only one that seems to have changed from SM to TB. The problem is, as I said, the not refreshing pane on certain conditions.


(In reply to comment #8)
> There is other entry which points "internal mail folder path", in additon to
> Drafts, Templates, and Sent.
> >(folder for Drafts, Templates, Sent)
> > mail.identity.idP.draft_folder
> > mail.identity.idP.fcc_folder
> > mail.identity.idP.stationery_folder
> >(folder to move Junk mail).
> > mail.server.serverQ.spamActionTargetAccount
> > mail.server.serverQ.spamActionTargetFolder
> 
> Is there any inconsistency in Junk related setting?


Both prefs.js files have the same values:

user_pref("mail.server.server5.spamActionTargetAccount",
          "mailbox://nobody@Local%20Folders");
user_pref("mail.server.server5.spamActionTargetFolder",
          "mailbox://nobody@Local%20Folders/Junk");

For mail.identity.idP.fcc_folder both files have:

user_pref("mail.identity.id4.fcc_folder",
          "mailbox://nobody@Local%20Folders/Sent");

And for mail.identity.idP.stationery_folder both files have the same than for Drafts folder.
(In reply to comment #9)
> user_pref("mail.server.server5.spamActionTargetAccount",
>           "mailbox://nobody@Local%20Folders");
> user_pref("mail.server.server5.spamActionTargetFolder",
>           "mailbox://nobody@Local%20Folders/Junk");
 
> For mail.identity.idP.fcc_folder both files have:
> user_pref("mail.identity.id4.fcc_folder",
>           "mailbox://nobody@Local%20Folders/Sent");

Do you use "Global Inbox" for the account? (account5 uses Inbox of "Local Folders", insted of his own Inbox folder)
If yes, following may be cause. "Drafts" folder of his own is hidden, so user can't see saved draft mail if "Global Inbox" is used.   
> user_pref("mail.identity.id4.draft_folder", "mailbox://mysecretname@correo.pop.yahoo.es/Drafts");
Same phenomenon could be observed with Tb trunk.
> Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081231 Shredder/3.0b2pre
(1) Define dummpy POP3 account, without using "Global Inbox".
    Drafts/Templates/Sent is set to use my own folder.
(2) Change Server Settings/Advanced to "Global Inbox(Local Folders Account)"
    => Dialog => OK.
(3) View Copies&Folders => OK => Nothing happens. Panel is not closed.
I think no warning/message is unkind for user, and it's confusing.
confirm error repeatable as follows:
1. create email account with servers setting dialog box checked use 'Global Inbox'
comment 12 finishing...
complete wizard.
2. In account manager click on 'copies and folders' all are local folders except archives which is email address. cannot click out of folder until archives is reset to local.

suggest change filling in the archives to local if set to global
Seems to have problem when 'copies and folders' has the accounts special folder settings(emailaddress for me). Apparently this folder is not recognized and the exit is stuck trying to save to folder that isn't recognized.
Note to my comment 12 the problem was remedied by setting folder to global but anything in list would do it.
Depends on: 476218
I saw the same freeze when i used a fake account for testing but when i copied my tb2 profile to the test profile i didn't see the problem anymore
Ricardo do you see this in version 3 final?
(In reply to comment #18)
> Ricardo do you see this in version 3 final?


I've removed all TB3 profiles and let TB3 final to import my SM (2.0) profile. Everything works OK now, :-) so I guess the bug can be closed now.
->WFM then
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.