Closed
Bug 1042125
Opened 10 years ago
Closed 10 years ago
Make the CalDAV provider async safe
Categories
(Calendar :: Provider: CalDAV, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
3.6
People
(Reporter: anderson, Assigned: anderson)
References
(Blocks 1 open bug)
Details
Attachments
(1 file, 3 obsolete files)
(deleted),
patch
|
Fallen
:
review+
|
Details | Diff | Splinter Review |
Currently CalDAV assumes some storage calendar functions are synchronous, which will no longer be the case.
Assignee | ||
Comment 1•10 years ago
|
||
Attachment #8460305 -
Flags: review?(philipp)
Assignee | ||
Comment 2•10 years ago
|
||
Attachment #8460305 -
Attachment is obsolete: true
Attachment #8460305 -
Flags: review?(philipp)
Attachment #8460307 -
Flags: review?(philipp)
Comment 3•10 years ago
|
||
Comment on attachment 8460307 [details] [diff] [review]
AsyncCalDAV
Review of attachment 8460307 [details] [diff] [review]:
-----------------------------------------------------------------
Code looks good, r=philipp. I will give this a test run after my rebuild finishes. I'd appreciate if you could upload a new patch with the below comments fixed.
Please pull the latest changes from comm-central, there are some minor conflicts in the first chunk of calDavCalendar.js after bug 1021684.
::: calendar/base/modules/calAsyncUtils.jsm
@@ +3,5 @@
> + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
> +
> + Components.utils.import("resource://calendar/modules/calUtils.jsm");
> + Components.utils.import("resource://gre/modules/Promise.jsm");
> +
Looks like I left a few redundant whitespaces in this file, could you remove them?
::: calendar/providers/caldav/calDavCalendar.js
@@ +1036,2 @@
>
> + Task.spawn(function() {
function*() {
@@ +1103,5 @@
> * @param path Path of the item to delete, must not be encoded
> */
> deleteTargetCalendarItem: function caldav_deleteTargetCalendarItem(path) {
> + let self = this;
> + return Task.spawn(function*() {
I just found a pretty cool feature of Task.jsm thats not documented on MDN. Its very useful for functions like this where all that is run is a Task. It also saves us the let self = this crutch.
deleteTargetCalendaItem: Task.async(function*() {
let pcal = promisifyCalendar(this.mOfflineStorage);
....
}),
See here for more details:
http://mxr.mozilla.org/comm-central/source/mozilla/toolkit/modules/Task.jsm#168
On a side note, you should also use this in the async storage patch.
Attachment #8460307 -
Flags: review?(philipp) → review+
Comment 4•10 years ago
|
||
Comment on attachment 8460307 [details] [diff] [review]
AsyncCalDAV
As discussed via IRC, there are still some issues with the patch. First of all the missing cal.async prefix, then the item is not removed from the calendar. Setting r- to reflect this, looking forward to the new patch.
Attachment #8460307 -
Flags: review+ → review-
Assignee | ||
Comment 5•10 years ago
|
||
Attachment #8460307 -
Attachment is obsolete: true
Attachment #8460765 -
Flags: review?(philipp)
Comment 6•10 years ago
|
||
Comment on attachment 8460765 [details] [diff] [review]
AsyncCalDAV
Review of attachment 8460765 [details] [diff] [review]:
-----------------------------------------------------------------
Great, works as expected and code looks good. r=philipp
Attachment #8460765 -
Flags: review?(philipp) → review+
Comment 7•10 years ago
|
||
Setting checkin-needed as the tree currently has APPROVAL REQUIRED. https://tbpl.mozilla.org/?tree=Thunderbird-Trunk
Keywords: checkin-needed
Target Milestone: --- → 3.6
Comment 8•10 years ago
|
||
Ah I found a minor issue with calAsyncUtils.jsm. First of all it was indented by one level, then we forgot to change this.itemStatus when the onGetResult fails. This patch fixes both issues.
Attachment #8460765 -
Attachment is obsolete: true
Attachment #8460807 -
Flags: review+
Comment 9•10 years ago
|
||
You need to log in
before you can comment on or make changes to this bug.
Description
•