Closed Bug 419349 Opened 16 years ago Closed 16 years ago

after landing of Bug 379198 decline button on imip-bar stopped working

Categories

(Calendar :: E-mail based Scheduling (iTIP/iMIP), defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: maxxmozilla, Assigned: Fallen)

References

Details

(Keywords: regression)

Attachments

(3 files, 2 obsolete files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.9) Gecko/20071031 Lightning/0.8pre ID:2008022321 Thunderbird/2.0.0.9 ID:2007103104

Decline button on imip-bar doesn't work.

Reproducible: Always

Steps to Reproduce:
1. Try to decline e-mail with invitation to an event.
Actual Results:  
Nothing.

Expected Results:  
Send e-mail with PARTSTAT=DECLINED and change status of imip-bar to "This message contains an event that has already been declined" (hmm couldn't find string for this under lightning.properties ...)

There should also be available dropdown on imip-bar to allow the user to change the decision but this could be taken care in other bug.

Error: aTargetCal has no properties
Source file: file:///[...]/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/js/calItipProcessor.js
Line: 444

Error: '[JavaScript Error: "aTargetCal has no properties" {file: "file:///[...]/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/js/calItipProcessor.js" line: 444}]' when calling method: [calIItipProcessor::processItipItem] = NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS
Source file: chrome://lightning/content/imip-bar.js
Line: 346
Depends on: 379198
Flags: wanted-calendar0.8?
Keywords: regression
I have one particular e-mail on which decline button didn't worked and produced some errors in the console even before attachment 304185 [details] [diff] [review] landed:
attachment 42674 [details]
Oops, should be:
attachment 242674 [details]
For completeness build 2008021918 works, build 2008022020 doesn't.
This patch handles the case where you don't have a target calendar (such as when declining an invitation).

Nice catch!  Thanks.
Assignee: nobody → ctalbert
Status: NEW → ASSIGNED
Attachment #305451 - Flags: review?(philipp)
Nominating for blocking, we need this to ship, INMHO
Flags: blocking-calendar0.8?
Flags: wanted-calendar0.8?
Flags: blocking-calendar0.8?
Flags: blocking-calendar0.8+
Comment on attachment 305451 [details] [diff] [review]
[checked in] Patch

Moving request over to Sebo, since Philipp won't be around till Thursday.
Attachment #305451 - Flags: review?(philipp) → review?(sebo.moz)
OS: Windows 2000 → All
Hardware: PC → All
Target Milestone: --- → 0.8
Comment on attachment 305451 [details] [diff] [review]
[checked in] Patch

r=sebo
Attachment #305451 - Flags: review?(sebo.moz) → review+
Patch checked in on branch and trunk --> FIXED
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
The patch fixes all testcases I had but not the one I've linked here ;)
attachment 242674 [details] (from bug 357172)

now error console shows:
Error: aOperator is not defined
Source file: file:///[...]/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/js/calItipProcessor.js
Line: 376

Error: '[JavaScript Error: "aOperator is not defined" {file: "file:///[...]/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/js/calItipProcessor.js" line: 376}]' when calling method: [calIItipProcessor::processItipItem] = NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS
Source file: chrome://lightning/content/imip-bar.js
Line: 346

(accept adds event to the calendar but does not send event accepted confirmation)

?
(In reply to comment #9)
> Error: '[JavaScript Error: "aOperator is not defined" {file:
> "file:///[...]/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/js/calItipProcessor.js"
> line: 376}]' when calling method: [calIItipProcessor::processItipItem] =
> NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS
> Source file: chrome://lightning/content/imip-bar.js
> Line: 346
> 
> (accept adds event to the calendar but does not send event accepted
> confirmation)

http://mxr.mozilla.org/seamonkey/source/calendar/base/src/calItipProcessor.js#376
"Undefined Operator: " + aOperator);

This is a typo in the generated error message and has to be |aOperation| imo. But the error message is not connected to the behavior you observe. You should try again with today's nightly build.
I've tried the build with manually applied patch, testing build 2008022521 produced same results so no bug on my side.
Can you also confirm this behavior with this e-mail ? as I'm not sure what's exactly wrong with this event and if lightning could properly support it.
Attached patch Additional Patch (Fix typo) (obsolete) — Splinter Review
Attachment #306022 - Flags: review?(ctalbert)
Attachment #306022 - Attachment is patch: true
Attachment #306022 - Attachment mime type: application/octet-stream → text/plain
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
(In reply to comment #9)
> The patch fixes all testcases I had but not the one I've linked here ;)
> attachment 242674 [details] (from bug 357172)
> 
> now error console shows:
> Error: aOperator is not defined
> Source file:
> file:///[...]/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/js/calItipProcessor.js
> Line: 376
> 

P
> Error: '[JavaScript Error: "aOperator is not defined" {file:
> "file:///[...]/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/js/calItipProcessor.js"
> line: 376}]' when calling method: [calIItipProcessor::processItipItem] =
> NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS
> Source file: chrome://lightning/content/imip-bar.js
> Line: 346
> 
> (accept adds event to the calendar but does not send event accepted
> confirmation)
> 
> ?
> 
Przemyslaw,
Martin and I have tested this on the latest nightly (2008022622) and we cannot recreate this error that you are seeing. We tried both accepting the event and declining the event.  Neither generated this error.  How are you generating this error?  What steps are you using?

Thanks for the help.
Now I've retested on new profile and my previous comments applies there as well.
Steps to reproduce:
(using Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12 ID:2008021305)
1. set up new profile with test account
2. install latest lightning 0.8pre (build 2008022620)
3. install ImportExportTools 1.6.1 to easily import test e-mail - attachment 242674 [details] to your inbox folder
4. click decline button on imported e-mail
5. nothing happens -> check error console

I can file another bug for attachment 242674 [details] case because this is not a regression (at least not new) as it wasn't working before attachment 304185 [details] [diff] [review] was checked in.
I was able to reproduce the problem using Przemyslaw's steps.

The problem seems to be as follows:

* http://lxr.mozilla.org/mozilla1.8/source/calendar/base/src/calItipProcessor.js#451
-- Here the calAction Parameter of continueProcessingItem is null

* http://lxr.mozilla.org/mozilla1.8/source/calendar/base/src/calItipProcessor.js#173
-- processCalendarAction assumes both a target calendar and an Operation.
   The aOperation is null in this case, therefore it fails.

Unfortunately I don't know too much of iTIP code to understand where to fix the problem. Clint, you probably know better :)
The problem here is that you are importing the email and not sending it.  As a result, you are not in the attendee list, and that is why you're getting this issue.  I opened bug 420516  for adding the ability to delegate an appointment, which is what would be required to make this work.  For now, I just instituted a better error message and picked up the typo fix that Martin found.
Attachment #306022 - Attachment is obsolete: true
Attachment #306798 - Flags: review?(sebo.moz)
Attachment #306022 - Flags: review?(ctalbert)
Comment on attachment 306798 [details] [diff] [review]
New Patch - also contains Martin's fix

I wouldn't say this really fixes the error. Yes, we do have a more descriptive error now, but the imip bar just keeps sitting there. Is this intended?

Also, when I change the email so I *am* an attendee, I still get the following error message:

Error: [Exception... "'Error: _processCalendarAction: Undefined Operation: null' when calling method: [calIItipProcessor::processItipItem]"  nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)"  location: "JS frame :: chrome://lightning/content/imip-bar.js :: doResponse :: line 346"  data: no]
Source File: chrome://lightning/content/imip-bar.js
Line: 346

r- for now to fix the above.
Attachment #306798 - Flags: review?(sebo.moz) → review-
(In reply to comment #17)
> (From update of attachment 306798 [details] [diff] [review])
> I wouldn't say this really fixes the error. Yes, we do have a more descriptive
> error now, but the imip bar just keeps sitting there. Is this intended?
>
yes, for now.  This is pretty rare.  By emailing this appointment back and forth Martin and I were not able to reproduce this at all.  it only happens if you do this import method with the email, so I'd say that this is rare enough that it really shouldn't matter for now. 

> Also, when I change the email so I *am* an attendee, I still get the following
> error message:
> 
> Error: [Exception... "'Error: _processCalendarAction: Undefined Operation:
> null' when calling method: [calIItipProcessor::processItipItem]"  nsresult:
> "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)"  location: "JS frame ::
> chrome://lightning/content/imip-bar.js :: doResponse :: line 346"  data: no]
> Source File: chrome://lightning/content/imip-bar.js
> Line: 346
I'd be interested to know how you added yourself as an attendee since this should never happen if the code finds you in the attendee portion of the ICS.

Same patch, verified that the code works just fine if you modify the email such that you are the actual recipient of the email and you are an attendee of the event.

I cleaned up the patch because it had some changes from a different bug in the original patch.

I really think that for 99% of the usecases out there, this is not an issue.  This is an issue because we are importing an event that was not sent to us and we are not included on the invitation attendee list.

We can fix delegation after 0.8.
Attachment #306798 - Attachment is obsolete: true
Attachment #306822 - Flags: review?(philipp)
> I'd be interested to know how you added yourself as an attendee since this
> should never happen if the code finds you in the attendee portion of the ICS.


I did so by replacing the ATTENDEE property in the ICS of the imported email to use the email of my default identity.
Attachment #305451 - Attachment description: Patch → [checked in] Patch
Comment on attachment 306822 [details] [diff] [review]
[checked in] Cleaner patch, no changes

>         if (attendee) {
>             replyStatus = attendee.participationStatus;
>+        } else {
>+            // Bug 420516 -- we don't support delegation yet TODO: Localize this?
>+            throw new Error("_getReplyStatus: " +
>+                            "You are not on the list of invited attendees, delegation " +
>+                            "is not supported yet.  See bug 420516 for details.");
>         }
>+        
>         return replyStatus;
I'd prefer

if (!attendee) { 
    throw new Error("_getReplyStatus: " +
                    "You are not on the list of invited attendees, delegation " +
                    "is not supported yet.  See bug 420516 for details.");
}

return attendee.participationStatus;


I'm going to check this in since its a first step, but it doesn't fix the bug though.
Attachment #306822 - Flags: review?(philipp) → review+
Comment on attachment 306822 [details] [diff] [review]
[checked in] Cleaner patch, no changes

patch Checked in on HEAD and MOZILLA_1_8_BRANCH

-> Stays Open to fix actual bug
Attachment #306822 - Attachment description: Cleaner patch, no changes → [checked in] Cleaner patch, no changes
(In reply to comment #22)
> -> Stays Open to fix actual bug

Clint (comment #16) filed follow up bug 420516 to add support for delegation so I think this bug can be closed as bug described in comment #0 has been fixed.
I don't think this bug is fixed. The Problem from comment 17 still remains. The reasoning from comment 15 is still valid. While the targetCal is not the culprit, the problem is the same.

Clint, any plans on fixing this soon?
This fixes a couple of recipient related problems, and satisfies me :)

* Correctly decodes mime encoded recipients
* Searches the To and CC list for the correct email address
  - Use the headerparser to safely retrieve the email from the full string
  - If the message has an account key, go through all account identities
  - If the message doesn't (i.e imported message), go through all server
    identities
* Fixes bug 374759, using the first available identity if the default account
  doesn't have a default identity.
* If no recipient can be found, directly throw a descriptive error in the
  imip-bar so the user doesn't run into trouble.

Sorry if I fixed too much in one bug, but I think this is necessary.


Asking Clint for review, please try to review this today. If you don't get to it maybe berend can review, but since we all are quite new to itip code, its probably better if Clint would review.
Assignee: ctalbert → philipp
Status: REOPENED → ASSIGNED
Attachment #307247 - Flags: review?
Attachment #307247 - Flags: review? → review?(ctalbert)
Attachment #307247 - Flags: review?(Berend.Cornelius)
Comment on attachment 307247 [details] [diff] [review]
Fix recipient problems

Looks good to me r=ctalbert
Attachment #307247 - Flags: review?(ctalbert) → review+
Attachment #307247 - Flags: review?(Berend.Cornelius)
Checked in on HEAD and MOZILLA_1_8_BRANCH and SUNBIRD_0_8_BRANCH

-> FIXED
Status: ASSIGNED → RESOLVED
Closed: 16 years ago16 years ago
Resolution: --- → FIXED
Component: Lightning Only → E-mail based Scheduling (iTIP/iMIP)
QA Contact: lightning → email-scheduling
You need to log in before you can comment on or make changes to this bug.