Closed
Bug 709581
Opened 13 years ago
Closed 13 years ago
invalid folder in spamActionTargetAccount pref causes problems when changing account settings
Categories
(MailNews Core :: Account Manager, defect)
MailNews Core
Account Manager
Tracking
(Not tracked)
RESOLVED
FIXED
Thunderbird 14.0
People
(Reporter: info, Assigned: aceman)
References
(Blocks 1 open bug)
Details
(Keywords: uiwanted, ux-interruption)
Attachments
(1 file, 3 obsolete files)
11.31 KB,
patch
|
standard8
:
review+
|
Details | Diff | Splinter Review |
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0
Build ID: 20110615151330
Steps to reproduce:
change the settings in an account
Actual results:
clicking on OK - nothing happens
Expected results:
SOLUTION (not "what should..."):
One line in prefs.js which sets the account properties has to be (p.e.):
user_pref("mail.server.server4.spamActionTargetAccount", "mailbox://nobody@Local%20Folders");
In my prefs.js the line contained an old account-name instead of Local%Folders, such as webmaster@domain.de
[also thunderbird is not able to manage it, if an user renames the 'local orders', p.e. in 'local' - I had to correct it in the prefs.js, because thunderbird got a problem by updating the prefs.js for a new thunderbird release]
That error I know since I work with Thunderbird. It seems to be a very old and ignored bug (Version3, Version 5, Version 8).
Perhaps the cause is an write-error. But then I think, it would be possible, to program this in another way so that this error doesn't occur again and again.
Thank you very much for your attention!
Bye, Thomas.
I do not really understand what the problem is. Can you rephrase it somehow?
o. k.
I choose menue extras - account settings
If I don't change a property, I can click on the ok button and the dialog-window will disappear.
But if I change a property, I can click on the ok button and nothing happens. I have to click on cancel, to get out of the dialog surface.
The reason for this bad behaviour I painted in my last message:
There's a line in the prefs.js, which thunderbird cannot understand, because there is an mistake in the line. The mistake didn't cause the user but thunderbird itself!
How did you find out that line is the problem?
Also, after you click OK and nothing happens, then on Cancel, please go to Tools->Error console and see if there are any messages. Paste them here.
OK, I manually edited prefs.js and made that preference point to nonexistent account. When I open Junk settings, the fields are empty. There are no addressbooks to choose, "junk folder on" and "other" are empty. But I get an error in Error console saying "Error: uncaught exception: unable to find folder to select!". I can't see the nonworking OK button. What is your Thunderbird version?
Do you know how Thunderbird got into this state? Have you deleted some account where the junk setting pointed to?
Version 8
I don't know, but this problem I had got with different Thunderbird Versions (see obove).
Yes, I deleted this account - perhaps this is the cause of the error.
But if the setup of thunderbird would not react so very sensitive and silly only at a single line in the prefs.js, the programer could change the reaction in an other way, perhaps to check the line and to let change the value by the user and restart correctly, or not?
I can confirm the behavior you describe on TB8.
The message I see only happens when I visit Junk settings pane.
If TB can detect the folder is nonexistent (as the error message tells), it should be able to just reset it to current account/junk folder. Better than nothing.
Status: UNCONFIRMED → NEW
Component: General → Preferences
Ever confirmed: true
QA Contact: general → preferences
Summary: tipp for a bug, which blocks account saving (prefs.js) → invalid folder in spamActionTargetAccount pref causes problems when changing account settings
Version: unspecified → Trunk
Comment 8•13 years ago
|
||
Same problem as bug 536768? See also bug 472959.
Well, the cause may be the same, but this report noticed, that also other panes can't be edited (stored) if the junk settings are broken. We'll see if fixes for those bugs will fix this one too.
The problem is, the fixes must work even without entering Junk settings. Something like we discuss in bug 472959.
Reporter | ||
Comment 10•13 years ago
|
||
yes, thank you very much, bye.
Assignee | ||
Comment 11•13 years ago
|
||
I have determined the problem happens in AccountManager.js. When clicking OK, the function saveAccount(accountValues, account) is called and the last lines are these:
if (server && server.spamSettings)
server.spamSettings.initialize(server);
This code does not return properly (or throws, but nothing is in the Error console) when the spamactiontarget is invalid.
Assignee | ||
Comment 12•13 years ago
|
||
Looks like the server.spamSettings.initialize C++ code works fine, detects the failure and returns error. But I can't see yet if it is propagated to the JS so that it can be catched.
WARNING: can't determine folder's server type: file mailnews/base/util/nsMsgDBFolder.cpp, line 3213
WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005: file mailnews/base/src/nsSpamSettings.cpp, line 568
WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005: file mailnews/base/src/nsSpamSettings.cpp, line 462
Assignee | ||
Comment 13•13 years ago
|
||
If somebody helps me how I can get the proper error value from this function (out of the C++ implementation) then I can catch it and notify/move the user to fix his Junk settings. More description to this in Bug 472959 comment 47.
Assignee: nobody → acelists
Comment 14•13 years ago
|
||
The error should be propagated and you should just be able to wrap the initialize in a try/catch. I suspect the error console doesn't show it probably because there's some listener or something that is effectively hiding the error.
Assignee | ||
Comment 15•13 years ago
|
||
Thanks, I can try it. I put an alert before server.spamSettings.initialize and after it, and the "After" one didn't happen. So I concluded the server.spamSettings.initialize either didn't return or somehow escaped from the saveaccount function prematurely (like exception). But there was nothing in the console. Yes, maybe the whole saveaccount function is in some try () block, but I can't see it. I will check it.
Assignee | ||
Comment 16•13 years ago
|
||
You are right, the exception can be caught.
Bwinton, now I need UI advice. I can detect there is something wrong with the target folders in Junk settings (or something else). Should I now:
1. show some warning and throw the user into the Junk settings panel. This would allow sanitizing code in bug 472959 to run and fix the targets. CON: If the code or user can't fix the settings (i.e. the exception is caused by something else, outside of user reach) there would be no way to press OK and save settings. Only exit from the account manager would be via Cancel.
2. show some warning and let the user decide (Yes/No) whether to continue exiting the dialog (with broken target folders) or go review the Junk settings.
3. run sanitizing code from bug 472959 silently (I hope I can reach it as it is in another file). Whether it helps in any way or not, save the rest of the settings and close dialog. CON: the user would not see the target folders have changed and his Junk could go somewhere unexpected.
What do you think?
Comment 17•13 years ago
|
||
I don't like #3, because we shouldn't be changing the target folders without notifying the use.
#1 also doesn't seem right, because it's unlikely the user was intending to go to the junk settings page, and also because fixing the problem may not be the user's top priority.
That leaves us with #2, which seems reasonable, if more invasive than I'ld like. But still, of those three options, #2 is the best.
Thanks,
Blake.
Assignee | ||
Comment 18•13 years ago
|
||
Is there any other solution?
Comment 19•13 years ago
|
||
I can't think of one, off the top of my head. If you think of any, please propose them. :)
Assignee | ||
Comment 20•13 years ago
|
||
So here it is. Ask the user and if he agrees throw him straight into the Junk settings pane. The sanitizing code there runs and fixes the targets silently. He sees the fixed values now. Even if he doesn't change any field and just clicks OK, it saves fine now (tested as bug 472959 has already landed).
Bug 536768 is not yet fixed, so some breakage will not be fixed in this way. If that is the case and he would be in a loop, he can click Cancel, or No to this new question. The Junk settings will stay broken but other changes should be saved.
The question string probably needs refinement.
Attachment #600723 -
Flags: ui-review?(bwinton)
Attachment #600723 -
Flags: feedback?(iann_bugzilla)
Status: NEW → ASSIGNED
Product: Thunderbird → MailNews Core
QA Contact: account-manager → account-manager
Assignee | ||
Comment 21•13 years ago
|
||
There is already one nit, when jumping to the Junk settings, it is not selected in the tree on the left. I'll try to fix that.
Assignee | ||
Comment 22•13 years ago
|
||
So this one is better.
Attachment #600723 -
Attachment is obsolete: true
Attachment #600723 -
Flags: ui-review?(bwinton)
Attachment #600723 -
Flags: feedback?(iann_bugzilla)
Attachment #600791 -
Flags: ui-review?(bwinton)
Attachment #600791 -
Flags: feedback?(iann_bugzilla)
Comment 23•13 years ago
|
||
Comment on attachment 600791 [details] [diff] [review]
patch v2
Even for accounts that don't have a "Junk Settings" (e.g. news accounts) you get presented with that accounts "Junk Settings" pane.
Also there is no indication to the user as to what the issue is (e.g. when the targetaccount doesn't exist), does the "e" variable give that in some way?
f- for the moment.
Attachment #600791 -
Flags: feedback?(iann_bugzilla) → feedback-
Assignee | ||
Comment 24•13 years ago
|
||
(In reply to Ian Neal from comment #23)
> Comment on attachment 600791 [details] [diff] [review]
> patch v2
>
> Even for accounts that don't have a "Junk Settings" (e.g. news accounts) you
> get presented with that accounts "Junk Settings" pane.
I don't understand this. This is dependent on "if (server && server.spamSettings)" so should not happen on accounts that don't have Junk Settings. What did you do exactly?
> Also there is no indication to the user as to what the issue is (e.g. when
> the targetaccount doesn't exist), does the "e" variable give that in some way?
I didn't want to analyze the error at this point. Also the exception seems not much helpful (0x80004005 from comment 12). So I just show a generic message. The code in am-junk.js then makes the proper analysis and fixes the values. It may also not be able to fix it.
But it could show a sliding alert (bug 725615) to say which field exactly it fixed. Would that be enough?
Comment 25•13 years ago
|
||
(In reply to :aceman from comment #24)
> (In reply to Ian Neal from comment #23)
> > Comment on attachment 600791 [details] [diff] [review]
> > patch v2
> >
> > Even for accounts that don't have a "Junk Settings" (e.g. news accounts) you
> > get presented with that accounts "Junk Settings" pane.
>
> I don't understand this. This is dependent on "if (server &&
> server.spamSettings)" so should not happen on accounts that don't have Junk
> Settings. What did you do exactly?
Sorry, probably a bit of an edge case where about:config or prefs.js has been edited to change the setting for a mailnews account.
>
> > Also there is no indication to the user as to what the issue is (e.g. when
> > the targetaccount doesn't exist), does the "e" variable give that in some way?
> I didn't want to analyze the error at this point. Also the exception seems
> not much helpful (0x80004005 from comment 12). So I just show a generic
> message. The code in am-junk.js then makes the proper analysis and fixes the
> values. It may also not be able to fix it.
> But it could show a sliding alert (bug 725615) to say which field exactly it
> fixed. Would that be enough?
Yes, outside the scope of this bug.
Assignee | ||
Comment 26•13 years ago
|
||
So do I have to do anything?
Attachment #600791 -
Flags: feedback- → feedback+
Comment 27•13 years ago
|
||
(In reply to :aceman from comment #26)
> So do I have to do anything?
No, that is fine.
Comment 28•13 years ago
|
||
Comment on attachment 600791 [details] [diff] [review]
patch v2
>+++ b/mail/locales/en-US/chrome/messenger/prefs.properties
>+junkSettingsBroken=The Junk settings on account "%1$S" have a possible problem. Would you like to review them before saving Account settings?
Should this be "Account Settings?" rather than "Account settings?"
>+++ b/mailnews/base/prefs/content/AccountManager.js
>+ let changeView = (pageId && account);
Not sure you actually need the ().
>+ pageId = node.getAttribute('PageTag')
Is the style for ' or " in this file? Probably mixed, if so I prefer "
>+++ b/mailnews/base/prefs/content/AccountManager.xul
>+ <tree flex="1" onselect="onAccountTreeSelect(null, null)" id="accounttree"
Probably don't need to make this change as null is assumed when nothing is specified but if you do keep it put ; after )
>+++ b/suite/locales/en-US/chrome/mailnews/pref/prefs.properties
>+junkSettingsBroken=The Junk settings on account "%1$S" have a possible problem. Would you like to review them before saving Account settings?
As for TB version.
Assignee | ||
Comment 29•13 years ago
|
||
Thanks, done. Let's get ui-review now and then I'll give it back to yoy for review.
Attachment #600791 -
Attachment is obsolete: true
Attachment #600791 -
Flags: ui-review?(bwinton)
Attachment #606865 -
Flags: ui-review?(bwinton)
Comment 31•13 years ago
|
||
Comment on attachment 606865 [details] [diff] [review]
patch v3
I think I like this. I would prefer it if the message was more explicit about what's broken, though. ui-r=me with that change.
Also, tests would _really_ help me see how the UI works in practice (without me having to muck with my profile… :P )
Thanks,
Blake.
Attachment #606865 -
Flags: ui-review?(bwinton) → ui-review+
Assignee | ||
Comment 32•13 years ago
|
||
Have you seen comment 24? We don't know what happens, the .cpp backend does not tell us much. How can we be more explicit? What do you suggest?
And I can't do tests yet :(
Attachment #606865 -
Flags: review?(iann_bugzilla)
Comment 34•13 years ago
|
||
Comment on attachment 606865 [details] [diff] [review]
patch v3
r=me
Attachment #606865 -
Flags: review?(iann_bugzilla) → review+
Attachment #606865 -
Flags: review?(mbanner)
Comment 35•13 years ago
|
||
Comment on attachment 606865 [details] [diff] [review]
patch v3
Review of attachment 606865 [details] [diff] [review]:
-----------------------------------------------------------------
Generally looks ok, just need that localisation note.
::: mail/locales/en-US/chrome/messenger/prefs.properties
@@ +4,5 @@
> accountExists=A mail or newsgroup account with the same user name and server name already exists. Click Back and enter a different server name, or click Cancel.
> modifiedAccountExists=An account with that user name and server name already exists. Please enter a different user name and/or server name.
> userNameChanged=Your User Name has been updated. You may also need to update your Email Address and/or User Name associated with this account.
> serverNameChanged=The server name setting has changed. Please verify that any folders used by filters exist on the new server.
> +junkSettingsBroken=The Junk settings on account "%1$S" have a possible problem. Would you like to review them before saving Account Settings?
This needs a localisation note for the %1$S
Attachment #606865 -
Flags: review?(mbanner) → review-
Assignee | ||
Comment 36•13 years ago
|
||
Good catch, fixed and some bitrot too.
Attachment #606865 -
Attachment is obsolete: true
Attachment #617546 -
Flags: review?(mbanner)
Updated•13 years ago
|
Attachment #617546 -
Flags: review?(mbanner) → review+
Keywords: checkin-needed
Comment 37•13 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → Thunderbird 14.0
You need to log in
before you can comment on or make changes to this bug.
Description
•