Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 668036
Collapse All | Expand All

(-)a/comm/calendar/lightning/versions.mk (-2 lines)
Lines 12-19 else Link Here
12
LIGHTNING_VERSION := $(shell $(PYTHON) $(commtopsrcdir)/calendar/lightning/build/makeversion.py $(word 1,$(MOZ_PKG_VERSION) $(THUNDERBIRD_VERSION)))
12
LIGHTNING_VERSION := $(shell $(PYTHON) $(commtopsrcdir)/calendar/lightning/build/makeversion.py $(word 1,$(MOZ_PKG_VERSION) $(THUNDERBIRD_VERSION)))
13
endif
13
endif
14
14
15
#GDATA_VERSION := $(shell $(PYTHON) $(commtopsrcdir)/calendar/providers/gdata/makeversion.py $(LIGHTNING_VERSION))
16
17
# For extensions we require a max version that is compatible across security releases.
15
# For extensions we require a max version that is compatible across security releases.
18
# THUNDERBIRD_MAXVERSION and SEAMONKEY_MAXVERSION is our method for doing that.
16
# THUNDERBIRD_MAXVERSION and SEAMONKEY_MAXVERSION is our method for doing that.
19
# Alpha versions 10.0a1 and 10.0a2 aren't affected
17
# Alpha versions 10.0a1 and 10.0a2 aren't affected
(-)a/comm/calendar/providers/gdata/Makefile.in (-21 / +13 lines)
Lines 2-33 Link Here
2
# License, v. 2.0. If a copy of the MPL was not distributed with this
2
# License, v. 2.0. If a copy of the MPL was not distributed with this
3
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
3
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
5
XPI_PKGNAME = gdata-provider-$(GDATA_VERSION).$(AB_CD).$(MOZ_PKG_PLATFORM)
5
XPI_NAME = gdata-provider
6
XPI_VERSION = $(GDATA_VERSION)
6
XPI_PKGNAME = gdata-provider-$(GDATA_VERSION).$(AB_CD)
7
XPI_EM_ID = {a62ef8ec-5fdc-40c2-873c-223b8a6925cc}
7
XPI_EM_ID = {a62ef8ec-5fdc-40c2-873c-223b8a6925cc}
8
XPI_INSTALL_EXTENSION = $(XPI_EM_ID)
8
XPI_INSTALL_EXTENSION = $(XPI_EM_ID)
9
9
10
DEFINES += -DLIGHTNING_VERSION=$(LIGHTNING_VERSION) \
10
ifdef MOZ_SUITE
11
           -DSEAMONKEY_VERSION=$(SEAMONKEY_VERSION) \
11
LIGHTNING_VERSION := $(shell $(PYTHON) $(commtopsrcdir)/calendar/lightning/build/makeversion.py $(THUNDERBIRD_VERSION))
12
           -DTHUNDERBIRD_VERSION=$(THUNDERBIRD_VERSION) \
12
else
13
           -DCOMM_BUILD=$(COMM_BUILD) \
13
LIGHTNING_VERSION := $(shell $(PYTHON) $(commtopsrcdir)/calendar/lightning/build/makeversion.py $(word 1,$(MOZ_PKG_VERSION) $(THUNDERBIRD_VERSION)))
14
           -DGDATA_VERSION=$(GDATA_VERSION) \
15
           $(NULL)
16
17
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
18
# If the macbundle dist dir was already created, sync the gdata provider here to avoid
19
# the need to make -C objdir/mail/app each time
20
tools repackage::
21
	[ -d $(DIST)/$(MOZ_MACBUNDLE_NAME) ] && rsync -a $(FINAL_TARGET)/ $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/extensions/$(XPI_EM_ID) || true
22
endif
14
endif
23
15
24
# stage the extension for use in packaged tests
16
GDATA_VERSION := $(shell $(PYTHON) $(commtopsrcdir)/calendar/providers/gdata/makeversion.py $(LIGHTNING_VERSION))
25
PKG_STAGE = $(DIST)/test-stage
17
THUNDERBIRD_VERSION := $(shell cat $(commtopsrcdir)/mail/config/version.txt)
18
SEAMONKEY_VERSION := $(shell cat $(commtopsrcdir)/suite/config/version.txt)
26
19
27
stage-package:
20
DEFINES += -DSEAMONKEY_VERSION=$(SEAMONKEY_VERSION) \
28
	$(NSINSTALL) -D $(PKG_STAGE)/extensions/$(XPI_EM_ID)
21
           -DTHUNDERBIRD_VERSION=$(THUNDERBIRD_VERSION) \
29
	(cd $(FINAL_TARGET) && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/extensions/$(XPI_EM_ID) && tar -xf -)
22
           -DGDATA_VERSION=$(GDATA_VERSION) \
23
           $(NULL)
30
24
31
include $(moztopsrcdir)/config/rules.mk
32
include $(commtopsrcdir)/calendar/lightning/versions.mk
33
include $(commtopsrcdir)/calendar/lightning/lightning-packager.mk
25
include $(commtopsrcdir)/calendar/lightning/lightning-packager.mk
(-)a/comm/calendar/providers/gdata/moz.build (+4 lines)
Lines 4-9 Link Here
4
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
5
6
XPI_NAME = 'gdata-provider'
6
XPI_NAME = 'gdata-provider'
7
export('XPI_NAME')
7
8
8
FINAL_TARGET_PP_FILES += ['install.rdf']
9
FINAL_TARGET_PP_FILES += ['install.rdf']
9
10
Lines 26-31 EXTRA_COMPONENTS += [ Link Here
26
    'components/calGoogleCalendar.manifest',
27
    'components/calGoogleCalendar.manifest',
27
]
28
]
28
29
30
USE_EXTENSION_MANIFEST = True
31
export('USE_EXTENSION_MANIFEST')
32
29
JAR_MANIFESTS += ['jar.mn']
33
JAR_MANIFESTS += ['jar.mn']
30
34
31
JS_PREFERENCE_FILES += [
35
JS_PREFERENCE_FILES += [
(-)a/comm/calendar/test/unit/test_gdata_provider.js (-122 / +122 lines)
Lines 508-514 function run_test() { Link Here
508
    });
508
    });
509
}
509
}
510
510
511
add_task(function* test_migrate_cache() {
511
add_task(async function test_migrate_cache() {
512
    let uriString = "googleapi://xpcshell/?calendar=xpcshell%40example.com";
512
    let uriString = "googleapi://xpcshell/?calendar=xpcshell%40example.com";
513
    let uri = Services.io.newURI(uriString);
513
    let uri = Services.io.newURI(uriString);
514
    let client = cal.getCalendarManager().createCalendar("gdata", uri);
514
    let client = cal.getCalendarManager().createCalendar("gdata", uri);
Lines 520-545 add_task(function* test_migrate_cache() { Link Here
520
    });
520
    });
521
521
522
    // No version, should not reset
522
    // No version, should not reset
523
    equal(yield migrateStorageCache(), false);
523
    equal(await migrateStorageCache(), false);
524
    equal(client.getProperty("cache.version"), 3);
524
    equal(client.getProperty("cache.version"), 3);
525
525
526
    // Check migrate 1 -> 2
526
    // Check migrate 1 -> 2
527
    unwrapped.CACHE_DB_VERSION = 2;
527
    unwrapped.CACHE_DB_VERSION = 2;
528
    client.setProperty("cache.version", 1);
528
    client.setProperty("cache.version", 1);
529
    equal(yield migrateStorageCache(), true);
529
    equal(await migrateStorageCache(), true);
530
    equal(client.getProperty("cache.version"), 2);
530
    equal(client.getProperty("cache.version"), 2);
531
531
532
    // Check migrate 2 -> 3 normal calendar
532
    // Check migrate 2 -> 3 normal calendar
533
    unwrapped.CACHE_DB_VERSION = 3;
533
    unwrapped.CACHE_DB_VERSION = 3;
534
    client.setProperty("cache.version", 2);
534
    client.setProperty("cache.version", 2);
535
    equal(yield migrateStorageCache(), false);
535
    equal(await migrateStorageCache(), false);
536
536
537
    // Check migrate 2 -> 3 birthday calendar
537
    // Check migrate 2 -> 3 birthday calendar
538
    unwrapped.CACHE_DB_VERSION = 3;
538
    unwrapped.CACHE_DB_VERSION = 3;
539
    uri = "googleapi://xpcshell/?calendar=%23contacts%40group.v.calendar.google.com";
539
    uri = "googleapi://xpcshell/?calendar=%23contacts%40group.v.calendar.google.com";
540
    unwrapped.uri = Services.io.newURI(uri);
540
    unwrapped.uri = Services.io.newURI(uri);
541
    client.setProperty("cache.version", 2);
541
    client.setProperty("cache.version", 2);
542
    equal(yield migrateStorageCache(), true);
542
    equal(await migrateStorageCache(), true);
543
});
543
});
544
544
545
add_test(function test_migrate_uri() {
545
add_test(function test_migrate_uri() {
Lines 573-579 add_test(function test_migrate_uri() { Link Here
573
    run_next_test();
573
    run_next_test();
574
});
574
});
575
575
576
add_task(function* test_dateToJSON() {
576
add_task(async function test_dateToJSON() {
577
    function _createDateTime(tzid, offset=0) {
577
    function _createDateTime(tzid, offset=0) {
578
        let offsetFrom = offset <= 0 ? "-0" + (offset - 1) : "+0" + (offset - 1) + "00";
578
        let offsetFrom = offset <= 0 ? "-0" + (offset - 1) : "+0" + (offset - 1) + "00";
579
        let offsetTo = "+0" + offset + "00";
579
        let offsetTo = "+0" + offset + "00";
Lines 672-678 add_task(function* test_dateToJSON() { Link Here
672
    deepEqual(dateToJSON(date), { date: "2015-01-30" });
672
    deepEqual(dateToJSON(date), { date: "2015-01-30" });
673
});
673
});
674
674
675
add_task(function* test_JSONToDate() {
675
add_task(async function test_JSONToDate() {
676
    function convert(aEntry, aTimezone="Europe/Berlin") {
676
    function convert(aEntry, aTimezone="Europe/Berlin") {
677
        let tzs = cal.getTimezoneService();
677
        let tzs = cal.getTimezoneService();
678
        let calendarTz = tzs.getTimezone(aTimezone);
678
        let calendarTz = tzs.getTimezone(aTimezone);
Lines 716-724 add_task(function* test_JSONToDate() { Link Here
716
    equal(convert({ dateTime: "2015-01-02T03:04:05+05:00" }), "20150102T030405 in Antarctica/Mawson");
716
    equal(convert({ dateTime: "2015-01-02T03:04:05+05:00" }), "20150102T030405 in Antarctica/Mawson");
717
});
717
});
718
718
719
add_task(function* test_organizerCN() {
719
add_task(async function test_organizerCN() {
720
    gServer.events = [];
720
    gServer.events = [];
721
    let client = yield gServer.getClient();
721
    let client = await gServer.getClient();
722
    equal(client.getProperty("organizerCN"), null);
722
    equal(client.getProperty("organizerCN"), null);
723
    gServer.resetClient(client);
723
    gServer.resetClient(client);
724
724
Lines 735-746 add_task(function* test_organizerCN() { Link Here
735
        end: { dateTime: "2006-06-10T20:00:00+02:00" },
735
        end: { dateTime: "2006-06-10T20:00:00+02:00" },
736
        iCalUID: "go6ijb0b46hlpbu4eeu92njevo@google.com"
736
        iCalUID: "go6ijb0b46hlpbu4eeu92njevo@google.com"
737
    }];
737
    }];
738
    client = yield gServer.getClient();
738
    client = await gServer.getClient();
739
    equal(client.getProperty("organizerCN"), gServer.creator.displayName);
739
    equal(client.getProperty("organizerCN"), gServer.creator.displayName);
740
    gServer.resetClient(client);
740
    gServer.resetClient(client);
741
});
741
});
742
742
743
add_task(function* test_always_readOnly() {
743
add_task(async function test_always_readOnly() {
744
    gServer.events = [{
744
    gServer.events = [{
745
        kind: "calendar#event",
745
        kind: "calendar#event",
746
        etag: "\"2299601498276000\"",
746
        etag: "\"2299601498276000\"",
Lines 755-780 add_task(function* test_always_readOnly() { Link Here
755
        iCalUID: "go6ijb0b46hlpbu4eeu92njevo@google.com"
755
        iCalUID: "go6ijb0b46hlpbu4eeu92njevo@google.com"
756
    }];
756
    }];
757
    gServer.calendarListData.accessRole = "freeBusyReader";
757
    gServer.calendarListData.accessRole = "freeBusyReader";
758
    let client = yield gServer.getClient();
758
    let client = await gServer.getClient();
759
    let pclient = cal.async.promisifyCalendar(client);
759
    let pclient = cal.async.promisifyCalendar(client);
760
    ok(client.readOnly);
760
    ok(client.readOnly);
761
    client.readOnly = false;
761
    client.readOnly = false;
762
    ok(client.readOnly);
762
    ok(client.readOnly);
763
763
764
    let items = yield pclient.getAllItems();
764
    let items = await pclient.getAllItems();
765
    equal(items.length, 1);
765
    equal(items.length, 1);
766
    notEqual(items[0].title, "New Event");
766
    notEqual(items[0].title, "New Event");
767
    gServer.resetClient(client);
767
    gServer.resetClient(client);
768
768
769
    gServer.calendarListData.accessRole = "reader";
769
    gServer.calendarListData.accessRole = "reader";
770
    client = yield gServer.getClient();
770
    client = await gServer.getClient();
771
    ok(client.readOnly);
771
    ok(client.readOnly);
772
    client.readOnly = false;
772
    client.readOnly = false;
773
    ok(client.readOnly);
773
    ok(client.readOnly);
774
    gServer.resetClient(client);
774
    gServer.resetClient(client);
775
});
775
});
776
776
777
add_task(function* test_reset_sync() {
777
add_task(async function test_reset_sync() {
778
    gServer.tasks = [{
778
    gServer.tasks = [{
779
        kind: "tasks#task",
779
        kind: "tasks#task",
780
        id: "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU",
780
        id: "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU",
Lines 819-836 add_task(function* test_reset_sync() { Link Here
819
        end: { dateTime: "2006-06-10T20:00:00+02:00" },
819
        end: { dateTime: "2006-06-10T20:00:00+02:00" },
820
        iCalUID: "fepf8uf6n7n04w7feukucs9n8e@google.com"
820
        iCalUID: "fepf8uf6n7n04w7feukucs9n8e@google.com"
821
    }];
821
    }];
822
    let client = yield gServer.getClient();
822
    let client = await gServer.getClient();
823
    let uncached = client.wrappedJSObject.mUncachedCalendar.wrappedJSObject;
823
    let uncached = client.wrappedJSObject.mUncachedCalendar.wrappedJSObject;
824
    let pclient = cal.async.promisifyCalendar(client);
824
    let pclient = cal.async.promisifyCalendar(client);
825
825
826
    let items = yield pclient.getAllItems();
826
    let items = await pclient.getAllItems();
827
    equal(items.length, 4);
827
    equal(items.length, 4);
828
828
829
    notEqual(client.getProperty("syncToken.events"), "");
829
    notEqual(client.getProperty("syncToken.events"), "");
830
    notEqual(client.getProperty("lastUpdated.tasks"), "");
830
    notEqual(client.getProperty("lastUpdated.tasks"), "");
831
831
832
    yield uncached.resetSync();
832
    await uncached.resetSync();
833
    items = yield pclient.getAllItems();
833
    items = await pclient.getAllItems();
834
    equal(items.length, 0);
834
    equal(items.length, 0);
835
835
836
    equal(client.getProperty("syncToken.events"), "");
836
    equal(client.getProperty("syncToken.events"), "");
Lines 839-845 add_task(function* test_reset_sync() { Link Here
839
    gServer.resetClient(client);
839
    gServer.resetClient(client);
840
});
840
});
841
841
842
add_task(function* test_basicItems() {
842
add_task(async function test_basicItems() {
843
    gServer.events = [{
843
    gServer.events = [{
844
        kind: "calendar#event",
844
        kind: "calendar#event",
845
        etag: "\"2299601498276000\"",
845
        etag: "\"2299601498276000\"",
Lines 903-912 add_task(function* test_basicItems() { Link Here
903
        }]
903
        }]
904
    }];
904
    }];
905
905
906
    let client = yield gServer.getClient();
906
    let client = await gServer.getClient();
907
    let pclient = cal.async.promisifyCalendar(client);
907
    let pclient = cal.async.promisifyCalendar(client);
908
908
909
    let items = yield pclient.getAllItems();
909
    let items = await pclient.getAllItems();
910
    equal(items.length, 2);
910
    equal(items.length, 2);
911
911
912
    let event = cal.item.isEvent(items[0]) ? items[0] : items[1];
912
    let event = cal.item.isEvent(items[0]) ? items[0] : items[1];
Lines 965-972 add_task(function* test_basicItems() { Link Here
965
    gServer.resetClient(client);
965
    gServer.resetClient(client);
966
});
966
});
967
967
968
add_task(function* test_addModifyDeleteItem() {
968
add_task(async function test_addModifyDeleteItem() {
969
    let client = yield gServer.getClient();
969
    let client = await gServer.getClient();
970
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
970
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
971
    equal(gServer.events.length, 0);
971
    equal(gServer.events.length, 0);
972
    equal(gServer.tasks.length, 0);
972
    equal(gServer.tasks.length, 0);
Lines 1016-1026 add_task(function* test_addModifyDeleteItem() { Link Here
1016
    ].join("\r\n"));
1016
    ].join("\r\n"));
1017
1017
1018
    // Add an event
1018
    // Add an event
1019
    let addedEvent = yield pclient.adoptItem(event);
1019
    let addedEvent = await pclient.adoptItem(event);
1020
    notEqual(addedEvent.id, null);
1020
    notEqual(addedEvent.id, null);
1021
    equal(addedEvent.organizer.id, "mailto:xpcshell@example.com");
1021
    equal(addedEvent.organizer.id, "mailto:xpcshell@example.com");
1022
1022
1023
    let items = yield pclient.getAllItems();
1023
    let items = await pclient.getAllItems();
1024
    equal(items.length, 1);
1024
    equal(items.length, 1);
1025
    equal(items[0].id, addedEvent.id);
1025
    equal(items[0].id, addedEvent.id);
1026
    equal(items[0].organizer.id, "mailto:xpcshell@example.com");
1026
    equal(items[0].organizer.id, "mailto:xpcshell@example.com");
Lines 1029-1038 add_task(function* test_addModifyDeleteItem() { Link Here
1029
    equal(gServer.tasks.length, 0);
1029
    equal(gServer.tasks.length, 0);
1030
1030
1031
    // Add a task
1031
    // Add a task
1032
    let addedTask = yield pclient.adoptItem(task);
1032
    let addedTask = await pclient.adoptItem(task);
1033
    notEqual(addedTask.id, null);
1033
    notEqual(addedTask.id, null);
1034
1034
1035
    items = yield pclient.getAllItems();
1035
    items = await pclient.getAllItems();
1036
    equal(items.length, 2);
1036
    equal(items.length, 2);
1037
    equal(items[1].id, addedTask.id);
1037
    equal(items[1].id, addedTask.id);
1038
1038
Lines 1043-1052 add_task(function* test_addModifyDeleteItem() { Link Here
1043
    let newEvent = items[0].clone();
1043
    let newEvent = items[0].clone();
1044
    newEvent.title = "changed";
1044
    newEvent.title = "changed";
1045
1045
1046
    let modifiedEvent = yield pclient.modifyItem(newEvent, items[0]);
1046
    let modifiedEvent = await pclient.modifyItem(newEvent, items[0]);
1047
    equal(modifiedEvent.title, "changed");
1047
    equal(modifiedEvent.title, "changed");
1048
    notEqual(modifiedEvent.getProperty("LAST-MODIFIED"), addedEvent.getProperty("LAST-MODIFIED"));
1048
    notEqual(modifiedEvent.getProperty("LAST-MODIFIED"), addedEvent.getProperty("LAST-MODIFIED"));
1049
    items = yield pclient.getAllItems();
1049
    items = await pclient.getAllItems();
1050
    equal(items.length, 2);
1050
    equal(items.length, 2);
1051
    equal(items[0].title, "changed");
1051
    equal(items[0].title, "changed");
1052
    equal(items[0].id, addedEvent.id);
1052
    equal(items[0].id, addedEvent.id);
Lines 1058-1067 add_task(function* test_addModifyDeleteItem() { Link Here
1058
    let newTask = items[1].clone();
1058
    let newTask = items[1].clone();
1059
    newTask.title = "changed";
1059
    newTask.title = "changed";
1060
1060
1061
    let modifiedTask = yield pclient.modifyItem(newTask, items[1]);
1061
    let modifiedTask = await pclient.modifyItem(newTask, items[1]);
1062
    equal(modifiedTask.title, "changed");
1062
    equal(modifiedTask.title, "changed");
1063
    notEqual(modifiedTask.getProperty("LAST-MODIFIED"), addedTask.getProperty("LAST-MODIFIED"));
1063
    notEqual(modifiedTask.getProperty("LAST-MODIFIED"), addedTask.getProperty("LAST-MODIFIED"));
1064
    items = yield pclient.getAllItems();
1064
    items = await pclient.getAllItems();
1065
    equal(items.length, 2);
1065
    equal(items.length, 2);
1066
    equal(items[1].title, "changed");
1066
    equal(items[1].title, "changed");
1067
    equal(items[1].id, addedTask.id);
1067
    equal(items[1].id, addedTask.id);
Lines 1070-1084 add_task(function* test_addModifyDeleteItem() { Link Here
1070
    equal(gServer.tasks.length, 1);
1070
    equal(gServer.tasks.length, 1);
1071
1071
1072
    // Delete an event
1072
    // Delete an event
1073
    yield pclient.deleteItem(modifiedEvent);
1073
    await pclient.deleteItem(modifiedEvent);
1074
    items = yield pclient.getAllItems();
1074
    items = await pclient.getAllItems();
1075
    equal(items.length, 1);
1075
    equal(items.length, 1);
1076
    equal(gServer.events.length, 0);
1076
    equal(gServer.events.length, 0);
1077
    equal(gServer.tasks.length, 1);
1077
    equal(gServer.tasks.length, 1);
1078
1078
1079
    // Delete a task
1079
    // Delete a task
1080
    yield pclient.deleteItem(modifiedTask);
1080
    await pclient.deleteItem(modifiedTask);
1081
    items = yield pclient.getAllItems();
1081
    items = await pclient.getAllItems();
1082
    equal(items.length, 0);
1082
    equal(items.length, 0);
1083
    equal(gServer.events.length, 0);
1083
    equal(gServer.events.length, 0);
1084
    equal(gServer.tasks.length, 0);
1084
    equal(gServer.tasks.length, 0);
Lines 1086-1093 add_task(function* test_addModifyDeleteItem() { Link Here
1086
    gServer.resetClient(client);
1086
    gServer.resetClient(client);
1087
});
1087
});
1088
1088
1089
add_task(function* test_recurring_event() {
1089
add_task(async function test_recurring_event() {
1090
    let client = yield gServer.getClient();
1090
    let client = await gServer.getClient();
1091
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1091
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1092
1092
1093
    let event = cal.createEvent([
1093
    let event = cal.createEvent([
Lines 1099-1105 add_task(function* test_recurring_event() { Link Here
1099
        "END:VEVENT"
1099
        "END:VEVENT"
1100
    ].join("\r\n"));
1100
    ].join("\r\n"));
1101
1101
1102
    event = yield pclient.addItem(event);
1102
    event = await pclient.addItem(event);
1103
    equal(gServer.events.length, 1);
1103
    equal(gServer.events.length, 1);
1104
    equal(gServer.events[0].recurrence.length, 1);
1104
    equal(gServer.events[0].recurrence.length, 1);
1105
    equal(gServer.events[0].recurrence[0], "RRULE:FREQ=WEEKLY");
1105
    equal(gServer.events[0].recurrence[0], "RRULE:FREQ=WEEKLY");
Lines 1109-1115 add_task(function* test_recurring_event() { Link Here
1109
    changedOcc.title = "changed";
1109
    changedOcc.title = "changed";
1110
    event.recurrenceInfo.modifyException(occ, true);
1110
    event.recurrenceInfo.modifyException(occ, true);
1111
1111
1112
    event = yield pclient.modifyItem(changedOcc, occ);
1112
    event = await pclient.modifyItem(changedOcc, occ);
1113
    occ = event.recurrenceInfo.getNextOccurrence(event.startDate);
1113
    occ = event.recurrenceInfo.getNextOccurrence(event.startDate);
1114
    equal(occ.title, "changed");
1114
    equal(occ.title, "changed");
1115
    equal(gServer.events.length, 2);
1115
    equal(gServer.events.length, 2);
Lines 1117-1123 add_task(function* test_recurring_event() { Link Here
1117
    gServer.resetClient(client);
1117
    gServer.resetClient(client);
1118
});
1118
});
1119
1119
1120
add_task(function* test_recurring_exception() {
1120
add_task(async function test_recurring_exception() {
1121
    gServer.syncs = [{
1121
    gServer.syncs = [{
1122
        token: "1",
1122
        token: "1",
1123
        events: [{
1123
        events: [{
Lines 1162-1171 add_task(function* test_recurring_exception() { Link Here
1162
        }]
1162
        }]
1163
    }];
1163
    }];
1164
1164
1165
    let client = yield gServer.getClient();
1165
    let client = await gServer.getClient();
1166
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1166
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1167
1167
1168
    let items = yield pclient.getAllItems();
1168
    let items = await pclient.getAllItems();
1169
    equal(items.length, 1);
1169
    equal(items.length, 1);
1170
1170
1171
    let exIds = items[0].recurrenceInfo.getExceptionIds({});
1171
    let exIds = items[0].recurrenceInfo.getExceptionIds({});
Lines 1175-1183 add_task(function* test_recurring_exception() { Link Here
1175
    equal(ex.title, "New Event changed");
1175
    equal(ex.title, "New Event changed");
1176
1176
1177
    client.refresh();
1177
    client.refresh();
1178
    yield gServer.waitForLoad(client);
1178
    await gServer.waitForLoad(client);
1179
1179
1180
    items = yield pclient.getAllItems();
1180
    items = await pclient.getAllItems();
1181
    equal(items.length, 1);
1181
    equal(items.length, 1);
1182
1182
1183
    exIds = items[0].recurrenceInfo.getExceptionIds({});
1183
    exIds = items[0].recurrenceInfo.getExceptionIds({});
Lines 1186-1192 add_task(function* test_recurring_exception() { Link Here
1186
    gServer.resetClient(client);
1186
    gServer.resetClient(client);
1187
});
1187
});
1188
1188
1189
add_task(function* test_recurring_cancelled_exception() {
1189
add_task(async function test_recurring_cancelled_exception() {
1190
    gServer.syncs = [{
1190
    gServer.syncs = [{
1191
        token: "1",
1191
        token: "1",
1192
        events: [{
1192
        events: [{
Lines 1204-1221 add_task(function* test_recurring_cancelled_exception() { Link Here
1204
        }]
1204
        }]
1205
    }];
1205
    }];
1206
1206
1207
    let client = yield gServer.getClient();
1207
    let client = await gServer.getClient();
1208
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1208
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1209
1209
1210
    let items = yield pclient.getAllItems();
1210
    let items = await pclient.getAllItems();
1211
    equal(items.length, 0);
1211
    equal(items.length, 0);
1212
1212
1213
    gServer.resetClient(client);
1213
    gServer.resetClient(client);
1214
});
1214
});
1215
1215
1216
add_task(function* test_import_invitation() {
1216
add_task(async function test_import_invitation() {
1217
    Preferences.set("calendar.google.enableAttendees", true);
1217
    Preferences.set("calendar.google.enableAttendees", true);
1218
    let client = yield gServer.getClient();
1218
    let client = await gServer.getClient();
1219
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1219
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1220
    let event = cal.createEvent([
1220
    let event = cal.createEvent([
1221
        "BEGIN:VEVENT",
1221
        "BEGIN:VEVENT",
Lines 1236-1249 add_task(function* test_import_invitation() { Link Here
1236
        "END:VEVENT"
1236
        "END:VEVENT"
1237
    ].join("\r\n"));
1237
    ].join("\r\n"));
1238
1238
1239
    let addedItem = yield pclient.adoptItem(event);
1239
    let addedItem = await pclient.adoptItem(event);
1240
    equal(gServer.events.length, 1);
1240
    equal(gServer.events.length, 1);
1241
    equal(addedItem.icalString, event.icalString);
1241
    equal(addedItem.icalString, event.icalString);
1242
    gServer.resetClient(client);
1242
    gServer.resetClient(client);
1243
    Preferences.set("calendar.google.enableAttendees", false);
1243
    Preferences.set("calendar.google.enableAttendees", false);
1244
});
1244
});
1245
1245
1246
add_task(function* test_modify_invitation() {
1246
add_task(async function test_modify_invitation() {
1247
    Preferences.set("calendar.google.enableAttendees", true);
1247
    Preferences.set("calendar.google.enableAttendees", true);
1248
    let organizer = {
1248
    let organizer = {
1249
        displayName: "organizer name",
1249
        displayName: "organizer name",
Lines 1278-1287 add_task(function* test_modify_invitation() { Link Here
1278
    }];
1278
    }];
1279
1279
1280
    // Case #1: User is attendee
1280
    // Case #1: User is attendee
1281
    let client = yield gServer.getClient();
1281
    let client = await gServer.getClient();
1282
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1282
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1283
1283
1284
    let items = yield pclient.getAllItems();
1284
    let items = await pclient.getAllItems();
1285
    equal(items.length, 1);
1285
    equal(items.length, 1);
1286
1286
1287
    let item = items[0];
1287
    let item = items[0];
Lines 1297-1303 add_task(function* test_modify_invitation() { Link Here
1297
    att.participationStatus = "ACCEPTED";
1297
    att.participationStatus = "ACCEPTED";
1298
    newItem.addAttendee(att);
1298
    newItem.addAttendee(att);
1299
1299
1300
    yield pclient.modifyItem(newItem, items[0]);
1300
    await pclient.modifyItem(newItem, items[0]);
1301
    equal(gServer.lastMethod, "PATCH");
1301
    equal(gServer.lastMethod, "PATCH");
1302
1302
1303
    // Case #2: User is organizer
1303
    // Case #2: User is organizer
Lines 1318-1327 add_task(function* test_modify_invitation() { Link Here
1318
    gServer.events[0].creator = gServer.creator;
1318
    gServer.events[0].creator = gServer.creator;
1319
    gServer.events[0].attendees = [organizer, attendee];
1319
    gServer.events[0].attendees = [organizer, attendee];
1320
1320
1321
    client = yield gServer.getClient();
1321
    client = await gServer.getClient();
1322
    pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1322
    pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1323
1323
1324
    items = yield pclient.getAllItems();
1324
    items = await pclient.getAllItems();
1325
    equal(items.length, 1);
1325
    equal(items.length, 1);
1326
1326
1327
    item = items[0];
1327
    item = items[0];
Lines 1337-1349 add_task(function* test_modify_invitation() { Link Here
1337
    org.participationStatus = "TENTATIVE";
1337
    org.participationStatus = "TENTATIVE";
1338
    newItem.addAttendee(org);
1338
    newItem.addAttendee(org);
1339
1339
1340
    modifiedItem = yield pclient.modifyItem(newItem, items[0]);
1340
    modifiedItem = await pclient.modifyItem(newItem, items[0]);
1341
    equal(gServer.lastMethod, "PUT");
1341
    equal(gServer.lastMethod, "PUT");
1342
1342
1343
    gServer.resetClient(client);
1343
    gServer.resetClient(client);
1344
});
1344
});
1345
1345
1346
add_task(function* test_metadata() {
1346
add_task(async function test_metadata() {
1347
    gServer.events = [{
1347
    gServer.events = [{
1348
        kind: "calendar#event",
1348
        kind: "calendar#event",
1349
        etag: "\"1\"",
1349
        etag: "\"1\"",
Lines 1367-1378 add_task(function* test_metadata() { Link Here
1367
        notes: "description"
1367
        notes: "description"
1368
    }];
1368
    }];
1369
1369
1370
    let client = yield gServer.getClient();
1370
    let client = await gServer.getClient();
1371
    let offline = client.wrappedJSObject.mCachedCalendar;
1371
    let offline = client.wrappedJSObject.mCachedCalendar;
1372
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1372
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1373
1373
1374
    // Check initial metadata
1374
    // Check initial metadata
1375
    let items = yield pclient.getAllItems();
1375
    let items = await pclient.getAllItems();
1376
    let meta = getAllMeta(offline);
1376
    let meta = getAllMeta(offline);
1377
    let [event, task] = items;
1377
    let [event, task] = items;
1378
    ok(cal.item.isEvent(event));
1378
    ok(cal.item.isEvent(event));
Lines 1385-1393 add_task(function* test_metadata() { Link Here
1385
    gServer.nextEtag = '"3"';
1385
    gServer.nextEtag = '"3"';
1386
    let newEvent = event.clone();
1386
    let newEvent = event.clone();
1387
    newEvent.title = "changed";
1387
    newEvent.title = "changed";
1388
    yield pclient.modifyItem(newEvent, event);
1388
    await pclient.modifyItem(newEvent, event);
1389
1389
1390
    items = yield pclient.getAllItems();
1390
    items = await pclient.getAllItems();
1391
    meta = getAllMeta(offline);
1391
    meta = getAllMeta(offline);
1392
    [event, task] = items;
1392
    [event, task] = items;
1393
    ok(cal.item.isEvent(event));
1393
    ok(cal.item.isEvent(event));
Lines 1400-1408 add_task(function* test_metadata() { Link Here
1400
    gServer.nextEtag = '"4"';
1400
    gServer.nextEtag = '"4"';
1401
    let newTask = task.clone();
1401
    let newTask = task.clone();
1402
    newTask.title = "changed";
1402
    newTask.title = "changed";
1403
    yield pclient.modifyItem(newTask, task);
1403
    await pclient.modifyItem(newTask, task);
1404
1404
1405
    items = yield pclient.getAllItems();
1405
    items = await pclient.getAllItems();
1406
    meta = getAllMeta(offline);
1406
    meta = getAllMeta(offline);
1407
    [event, task] = items;
1407
    [event, task] = items;
1408
    equal(meta.size, 2);
1408
    equal(meta.size, 2);
Lines 1410-1428 add_task(function* test_metadata() { Link Here
1410
    equal(meta.get(task.hashId), ['"4"', "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU", false].join("\u001A"));
1410
    equal(meta.get(task.hashId), ['"4"', "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU", false].join("\u001A"));
1411
1411
1412
    // Delete an event
1412
    // Delete an event
1413
    yield pclient.deleteItem(event);
1413
    await pclient.deleteItem(event);
1414
    meta = getAllMeta(offline);
1414
    meta = getAllMeta(offline);
1415
    equal(meta.size, 1);
1415
    equal(meta.size, 1);
1416
    equal(meta.get(task.hashId), ['"4"', "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU", false].join("\u001A"));
1416
    equal(meta.get(task.hashId), ['"4"', "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU", false].join("\u001A"));
1417
1417
1418
    // Delete a task
1418
    // Delete a task
1419
    yield pclient.deleteItem(task);
1419
    await pclient.deleteItem(task);
1420
    meta = getAllMeta(offline);
1420
    meta = getAllMeta(offline);
1421
    equal(meta.size, 0);
1421
    equal(meta.size, 0);
1422
1422
1423
    // Add an event
1423
    // Add an event
1424
    gServer.nextEtag = '"6"';
1424
    gServer.nextEtag = '"6"';
1425
    newEvent = yield pclient.addItem(event);
1425
    newEvent = await pclient.addItem(event);
1426
    meta = getAllMeta(offline);
1426
    meta = getAllMeta(offline);
1427
    equal(meta.size, 1);
1427
    equal(meta.size, 1);
1428
    equal(gServer.events.length, 1);
1428
    equal(gServer.events.length, 1);
Lines 1430-1436 add_task(function* test_metadata() { Link Here
1430
1430
1431
    // Add a task
1431
    // Add a task
1432
    gServer.nextEtag = '"7"';
1432
    gServer.nextEtag = '"7"';
1433
    newTask = yield pclient.addItem(task);
1433
    newTask = await pclient.addItem(task);
1434
    meta = getAllMeta(offline);
1434
    meta = getAllMeta(offline);
1435
    equal(meta.size, 2);
1435
    equal(meta.size, 2);
1436
    equal(gServer.events.length, 1);
1436
    equal(gServer.events.length, 1);
Lines 1441-1447 add_task(function* test_metadata() { Link Here
1441
    gServer.resetClient(client);
1441
    gServer.resetClient(client);
1442
});
1442
});
1443
1443
1444
add_task(function* test_metadata_recurring() {
1444
add_task(async function test_metadata_recurring() {
1445
    gServer.events = [{
1445
    gServer.events = [{
1446
        kind: "calendar#event",
1446
        kind: "calendar#event",
1447
        etag: "\"1\"",
1447
        etag: "\"1\"",
Lines 1477-1486 add_task(function* test_metadata_recurring() { Link Here
1477
        originalStartTime: { dateTime: "2006-06-17T18:00:00+02:00" }
1477
        originalStartTime: { dateTime: "2006-06-17T18:00:00+02:00" }
1478
    }];
1478
    }];
1479
1479
1480
    let client = yield gServer.getClient();
1480
    let client = await gServer.getClient();
1481
    let offline = client.wrappedJSObject.mCachedCalendar;
1481
    let offline = client.wrappedJSObject.mCachedCalendar;
1482
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1482
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1483
    let items = yield pclient.getAllItems();
1483
    let items = await pclient.getAllItems();
1484
1484
1485
    let meta = getAllMeta(offline);
1485
    let meta = getAllMeta(offline);
1486
    equal(meta.size, 3);
1486
    equal(meta.size, 3);
Lines 1496-1502 add_task(function* test_metadata_recurring() { Link Here
1496
    let newEx = ex.clone();
1496
    let newEx = ex.clone();
1497
    newEx.title = "New Event changed again";
1497
    newEx.title = "New Event changed again";
1498
    gServer.nextEtag = '"4"';
1498
    gServer.nextEtag = '"4"';
1499
    yield pclient.modifyItem(newEx, ex);
1499
    await pclient.modifyItem(newEx, ex);
1500
    meta = getAllMeta(offline);
1500
    meta = getAllMeta(offline);
1501
    equal(meta.size, 3);
1501
    equal(meta.size, 3);
1502
    equal(meta.get(newEx.hashId), ['"4"', "go6ijb0b46hlpbu4eeu92njevo_20060610T160000Z", false].join("\u001A"));
1502
    equal(meta.get(newEx.hashId), ['"4"', "go6ijb0b46hlpbu4eeu92njevo_20060610T160000Z", false].join("\u001A"));
Lines 1504-1523 add_task(function* test_metadata_recurring() { Link Here
1504
    // Deleting an exception should delete the metadata, as it turns into an EXDATE
1504
    // Deleting an exception should delete the metadata, as it turns into an EXDATE
1505
    let newItem = items[0].clone();
1505
    let newItem = items[0].clone();
1506
    newItem.recurrenceInfo.removeOccurrenceAt(exIds[0]);
1506
    newItem.recurrenceInfo.removeOccurrenceAt(exIds[0]);
1507
    yield pclient.modifyItem(newItem, items[0]);
1507
    await pclient.modifyItem(newItem, items[0]);
1508
1508
1509
    meta = getAllMeta(offline);
1509
    meta = getAllMeta(offline);
1510
    equal(meta.size, 2);
1510
    equal(meta.size, 2);
1511
1511
1512
    // Deleting the master item should remove all metadata entries
1512
    // Deleting the master item should remove all metadata entries
1513
    yield pclient.deleteItem(items[0]);
1513
    await pclient.deleteItem(items[0]);
1514
    meta = getAllMeta(offline);
1514
    meta = getAllMeta(offline);
1515
    equal(meta.size, 0);
1515
    equal(meta.size, 0);
1516
1516
1517
    gServer.resetClient(client);
1517
    gServer.resetClient(client);
1518
});
1518
});
1519
1519
1520
add_task(function* test_conflict_modify() {
1520
add_task(async function test_conflict_modify() {
1521
    // TODO task/event conflicts are handled in the same way so I'm going to
1521
    // TODO task/event conflicts are handled in the same way so I'm going to
1522
    // skip adding tests for tasks here, but it probably wouldn't hurt to
1522
    // skip adding tests for tasks here, but it probably wouldn't hurt to
1523
    // create them at some point.
1523
    // create them at some point.
Lines 1534-1542 add_task(function* test_conflict_modify() { Link Here
1534
        end: { dateTime: "2006-06-10T20:00:00+02:00" },
1534
        end: { dateTime: "2006-06-10T20:00:00+02:00" },
1535
        iCalUID: "go6ijb0b46hlpbu4eeu92njevo@google.com"
1535
        iCalUID: "go6ijb0b46hlpbu4eeu92njevo@google.com"
1536
    }];
1536
    }];
1537
    let client = yield gServer.getClient();
1537
    let client = await gServer.getClient();
1538
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1538
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1539
    let item = (yield pclient.getAllItems())[0];
1539
    let item = (await pclient.getAllItems())[0];
1540
1540
1541
    // Case #1: Modified on server, modify locally, overwrite conflict
1541
    // Case #1: Modified on server, modify locally, overwrite conflict
1542
    MockConflictPrompt.overwrite = true;
1542
    MockConflictPrompt.overwrite = true;
Lines 1544-1551 add_task(function* test_conflict_modify() { Link Here
1544
    newItem.title = "local change";
1544
    newItem.title = "local change";
1545
    gServer.events[0].etag = '"2"';
1545
    gServer.events[0].etag = '"2"';
1546
    gServer.events[0].summary = "remote change";
1546
    gServer.events[0].summary = "remote change";
1547
    let modifiedItem = yield pclient.modifyItem(newItem, item);
1547
    let modifiedItem = await pclient.modifyItem(newItem, item);
1548
    item = (yield pclient.getAllItems())[0];
1548
    item = (await pclient.getAllItems())[0];
1549
    equal(gServer.events[0].summary, "local change");
1549
    equal(gServer.events[0].summary, "local change");
1550
    notEqual(gServer.events[0].etag, '"2"');
1550
    notEqual(gServer.events[0].etag, '"2"');
1551
    equal(item.title, "local change");
1551
    equal(item.title, "local change");
Lines 1557-1563 add_task(function* test_conflict_modify() { Link Here
1557
    gServer.events[0].etag = '"3"';
1557
    gServer.events[0].etag = '"3"';
1558
    gServer.events[0].summary = "remote change";
1558
    gServer.events[0].summary = "remote change";
1559
    try {
1559
    try {
1560
        modifiedItem = yield pclient.modifyItem(newItem, item);
1560
        modifiedItem = await pclient.modifyItem(newItem, item);
1561
        do_throw("Expected modifyItem to be cancelled");
1561
        do_throw("Expected modifyItem to be cancelled");
1562
    } catch (e) {
1562
    } catch (e) {
1563
        // Swallow cancelling the request
1563
        // Swallow cancelling the request
Lines 1566-1574 add_task(function* test_conflict_modify() { Link Here
1566
        }
1566
        }
1567
    }
1567
    }
1568
1568
1569
    yield gServer.waitForLoad(client);
1569
    await gServer.waitForLoad(client);
1570
1570
1571
    item = (yield pclient.getAllItems())[0];
1571
    item = (await pclient.getAllItems())[0];
1572
    equal(gServer.events[0].summary, "remote change");
1572
    equal(gServer.events[0].summary, "remote change");
1573
    equal(gServer.events[0].etag, '"3"');
1573
    equal(gServer.events[0].etag, '"3"');
1574
    equal(item.title, "remote change");
1574
    equal(item.title, "remote change");
Lines 1578-1584 add_task(function* test_conflict_modify() { Link Here
1578
    gServer.events[0].etag = '"4"';
1578
    gServer.events[0].etag = '"4"';
1579
    gServer.events[0].summary = "remote change";
1579
    gServer.events[0].summary = "remote change";
1580
    try {
1580
    try {
1581
        yield pclient.deleteItem(item);
1581
        await pclient.deleteItem(item);
1582
        do_throw("Expected deleteItem to be cancelled");
1582
        do_throw("Expected deleteItem to be cancelled");
1583
    } catch (e) {
1583
    } catch (e) {
1584
        // Swallow cancelling the request
1584
        // Swallow cancelling the request
Lines 1587-1595 add_task(function* test_conflict_modify() { Link Here
1587
        }
1587
        }
1588
    }
1588
    }
1589
1589
1590
    yield gServer.waitForLoad(client);
1590
    await gServer.waitForLoad(client);
1591
1591
1592
    item = (yield pclient.getAllItems())[0];
1592
    item = (await pclient.getAllItems())[0];
1593
    equal(gServer.events[0].summary, "remote change");
1593
    equal(gServer.events[0].summary, "remote change");
1594
    equal(gServer.events[0].etag, '"4"');
1594
    equal(gServer.events[0].etag, '"4"');
1595
    equal(item.title, "remote change");
1595
    equal(item.title, "remote change");
Lines 1598-1611 add_task(function* test_conflict_modify() { Link Here
1598
    MockConflictPrompt.overwrite = true;
1598
    MockConflictPrompt.overwrite = true;
1599
    gServer.events[0].etag = '"5"';
1599
    gServer.events[0].etag = '"5"';
1600
    gServer.events[0].summary = "remote change";
1600
    gServer.events[0].summary = "remote change";
1601
    yield pclient.deleteItem(item);
1601
    await pclient.deleteItem(item);
1602
    item = (yield pclient.getAllItems())[0];
1602
    item = (await pclient.getAllItems())[0];
1603
    equal(gServer.events.length, 0);
1603
    equal(gServer.events.length, 0);
1604
1604
1605
    gServer.resetClient(client);
1605
    gServer.resetClient(client);
1606
});
1606
});
1607
1607
1608
add_task(function* test_conflict_delete() {
1608
add_task(async function test_conflict_delete() {
1609
    // TODO task/event conflicts are handled in the same way so I'm going to
1609
    // TODO task/event conflicts are handled in the same way so I'm going to
1610
    // skip adding tests for tasks here, but it probably wouldn't hurt to
1610
    // skip adding tests for tasks here, but it probably wouldn't hurt to
1611
    // create them at some point.
1611
    // create them at some point.
Lines 1625-1641 add_task(function* test_conflict_delete() { Link Here
1625
1625
1626
    // Load intial event to server
1626
    // Load intial event to server
1627
    gServer.events = [coreEvent];
1627
    gServer.events = [coreEvent];
1628
    let client = yield gServer.getClient();
1628
    let client = await gServer.getClient();
1629
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1629
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1630
    let item = (yield pclient.getAllItems())[0];
1630
    let item = (await pclient.getAllItems())[0];
1631
1631
1632
    // Case #1: Deleted on server, modify locally, overwrite conflict
1632
    // Case #1: Deleted on server, modify locally, overwrite conflict
1633
    MockConflictPrompt.overwrite = true;
1633
    MockConflictPrompt.overwrite = true;
1634
    gServer.events = [];
1634
    gServer.events = [];
1635
    let newItem = item.clone();
1635
    let newItem = item.clone();
1636
    newItem.title = "local change";
1636
    newItem.title = "local change";
1637
    let modifiedItem = yield pclient.modifyItem(newItem, item);
1637
    let modifiedItem = await pclient.modifyItem(newItem, item);
1638
    item = (yield pclient.getAllItems())[0];
1638
    item = (await pclient.getAllItems())[0];
1639
    equal(gServer.events[0].summary, "local change");
1639
    equal(gServer.events[0].summary, "local change");
1640
    notEqual(gServer.events[0].etag, '"2"');
1640
    notEqual(gServer.events[0].etag, '"2"');
1641
    equal(item.title, "local change");
1641
    equal(item.title, "local change");
Lines 1646-1652 add_task(function* test_conflict_delete() { Link Here
1646
    MockConflictPrompt.overwrite = false;
1646
    MockConflictPrompt.overwrite = false;
1647
    gServer.events = [];
1647
    gServer.events = [];
1648
    try {
1648
    try {
1649
        modifiedItem = yield pclient.modifyItem(newItem, item);
1649
        modifiedItem = await pclient.modifyItem(newItem, item);
1650
        do_throw("Expected modifyItem to be cancelled");
1650
        do_throw("Expected modifyItem to be cancelled");
1651
    } catch (e) {
1651
    } catch (e) {
1652
        // Swallow cancelling the request
1652
        // Swallow cancelling the request
Lines 1658-1681 add_task(function* test_conflict_delete() { Link Here
1658
    coreEvent.status = "cancelled";
1658
    coreEvent.status = "cancelled";
1659
    gServer.events = [coreEvent];
1659
    gServer.events = [coreEvent];
1660
1660
1661
    yield gServer.waitForLoad(client);
1661
    await gServer.waitForLoad(client);
1662
1662
1663
    let items = yield pclient.getAllItems();
1663
    let items = await pclient.getAllItems();
1664
    equal(items.length, 0);
1664
    equal(items.length, 0);
1665
    equal(gServer.events.length, 1);
1665
    equal(gServer.events.length, 1);
1666
1666
1667
    // Put the event back in the calendar for the next run
1667
    // Put the event back in the calendar for the next run
1668
    delete gServer.events[0].status;
1668
    delete gServer.events[0].status;
1669
    client.refresh();
1669
    client.refresh();
1670
    yield gServer.waitForLoad(client);
1670
    await gServer.waitForLoad(client);
1671
    items = yield pclient.getAllItems();
1671
    items = await pclient.getAllItems();
1672
    equal(items.length, 1);
1672
    equal(items.length, 1);
1673
1673
1674
    // Case #3: Deleted on server, delete locally, don't overwrite conflict
1674
    // Case #3: Deleted on server, delete locally, don't overwrite conflict
1675
    MockConflictPrompt.overwrite = false;
1675
    MockConflictPrompt.overwrite = false;
1676
    gServer.events = [];
1676
    gServer.events = [];
1677
    try {
1677
    try {
1678
        yield pclient.deleteItem(item);
1678
        await pclient.deleteItem(item);
1679
        do_throw("Expected deleteItem to be cancelled");
1679
        do_throw("Expected deleteItem to be cancelled");
1680
    } catch (e) {
1680
    } catch (e) {
1681
        // Swallow cancelling the request
1681
        // Swallow cancelling the request
Lines 1686-1714 add_task(function* test_conflict_delete() { Link Here
1686
    // The next synchronize should cause the event to be deleted locally.
1686
    // The next synchronize should cause the event to be deleted locally.
1687
    coreEvent.status = "cancelled";
1687
    coreEvent.status = "cancelled";
1688
    gServer.events = [coreEvent];
1688
    gServer.events = [coreEvent];
1689
    yield gServer.waitForLoad(client);
1689
    await gServer.waitForLoad(client);
1690
1690
1691
    items = yield pclient.getAllItems();
1691
    items = await pclient.getAllItems();
1692
    equal(items.length, 0);
1692
    equal(items.length, 0);
1693
1693
1694
    // Put the event back in the calendar for the next run
1694
    // Put the event back in the calendar for the next run
1695
    delete gServer.events[0].status;
1695
    delete gServer.events[0].status;
1696
    client.refresh();
1696
    client.refresh();
1697
    yield gServer.waitForLoad(client);
1697
    await gServer.waitForLoad(client);
1698
    items = yield pclient.getAllItems();
1698
    items = await pclient.getAllItems();
1699
    equal(items.length, 1);
1699
    equal(items.length, 1);
1700
1700
1701
    // Case #4: Deleted on server, delete locally, overwrite conflict
1701
    // Case #4: Deleted on server, delete locally, overwrite conflict
1702
    MockConflictPrompt.overwrite = true;
1702
    MockConflictPrompt.overwrite = true;
1703
    gServer.events = [];
1703
    gServer.events = [];
1704
    yield pclient.deleteItem(item);
1704
    await pclient.deleteItem(item);
1705
    items = yield pclient.getAllItems();
1705
    items = await pclient.getAllItems();
1706
    equal(items.length, 0);
1706
    equal(items.length, 0);
1707
1707
1708
    gServer.resetClient(client);
1708
    gServer.resetClient(client);
1709
});
1709
});
1710
1710
1711
add_task(function* test_default_alarms() {
1711
add_task(async function test_default_alarms() {
1712
    let defaultReminders = [
1712
    let defaultReminders = [
1713
        { method: "popup", minutes: 10 },
1713
        { method: "popup", minutes: 10 },
1714
        { method: "email", minutes: 20 },
1714
        { method: "email", minutes: 20 },
Lines 1731-1741 add_task(function* test_default_alarms() { Link Here
1731
    }];
1731
    }];
1732
1732
1733
    // Case #1: read default alarms from event stream
1733
    // Case #1: read default alarms from event stream
1734
    let client = yield gServer.getClient();
1734
    let client = await gServer.getClient();
1735
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1735
    let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1736
    equal(client.getProperty("settings.defaultReminders"), JSON.stringify(defaultReminders));
1736
    equal(client.getProperty("settings.defaultReminders"), JSON.stringify(defaultReminders));
1737
1737
1738
    let item = (yield pclient.getAllItems())[0];
1738
    let item = (await pclient.getAllItems())[0];
1739
    let alarms = item.getAlarms({});
1739
    let alarms = item.getAlarms({});
1740
1740
1741
    equal(alarms.length, 2);
1741
    equal(alarms.length, 2);
Lines 1760-1766 add_task(function* test_default_alarms() { Link Here
1760
        "END:VEVENT"
1760
        "END:VEVENT"
1761
    ].join("\r\n"));
1761
    ].join("\r\n"));
1762
1762
1763
    yield pclient.addItem(event);
1763
    await pclient.addItem(event);
1764
    ok(gServer.events[1].reminders.useDefault);
1764
    ok(gServer.events[1].reminders.useDefault);
1765
    equal(gServer.events[1].reminders.overrides.length, 0);
1765
    equal(gServer.events[1].reminders.overrides.length, 0);
1766
1766
Lines 1784-1790 add_task(function* test_default_alarms() { Link Here
1784
        "END:VEVENT"
1784
        "END:VEVENT"
1785
    ].join("\r\n"));
1785
    ].join("\r\n"));
1786
1786
1787
    yield pclient.addItem(event);
1787
    await pclient.addItem(event);
1788
    ok(gServer.events[2].reminders.useDefault);
1788
    ok(gServer.events[2].reminders.useDefault);
1789
    equal(gServer.events[2].reminders.overrides.length, 1);
1789
    equal(gServer.events[2].reminders.overrides.length, 1);
1790
    equal(gServer.events[2].reminders.overrides[0].minutes, 5);
1790
    equal(gServer.events[2].reminders.overrides[0].minutes, 5);
Lines 1794-1800 add_task(function* test_default_alarms() { Link Here
1794
    // Case #4a: Empty default alarms
1794
    // Case #4a: Empty default alarms
1795
    gServer.calendarListData.defaultReminders = [];
1795
    gServer.calendarListData.defaultReminders = [];
1796
    gServer.eventsData.defaultReminders = [];
1796
    gServer.eventsData.defaultReminders = [];
1797
    client = yield gServer.getClient();
1797
    client = await gServer.getClient();
1798
    pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1798
    pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1799
1799
1800
    event = cal.createEvent([
1800
    event = cal.createEvent([
Lines 1806-1812 add_task(function* test_default_alarms() { Link Here
1806
        "END:VEVENT"
1806
        "END:VEVENT"
1807
    ].join("\r\n"));
1807
    ].join("\r\n"));
1808
1808
1809
    yield pclient.addItem(event);
1809
    await pclient.addItem(event);
1810
    ok(gServer.events[0].reminders.useDefault);
1810
    ok(gServer.events[0].reminders.useDefault);
1811
    equal(gServer.events[0].reminders.overrides, undefined);
1811
    equal(gServer.events[0].reminders.overrides, undefined);
1812
1812
Lines 1815-1830 add_task(function* test_default_alarms() { Link Here
1815
1815
1816
    // Case #4b: Read an item with empty default alarms
1816
    // Case #4b: Read an item with empty default alarms
1817
    gServer.events = events;
1817
    gServer.events = events;
1818
    client = yield gServer.getClient();
1818
    client = await gServer.getClient();
1819
    pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1819
    pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
1820
1820
1821
    item = (yield pclient.getAllItems())[0];
1821
    item = (await pclient.getAllItems())[0];
1822
    equal(item.getProperty("X-DEFAULT-ALARM"), "TRUE");
1822
    equal(item.getProperty("X-DEFAULT-ALARM"), "TRUE");
1823
1823
1824
    gServer.resetClient(client);
1824
    gServer.resetClient(client);
1825
});
1825
});
1826
1826
1827
add_task(function* test_paginate() {
1827
add_task(async function test_paginate() {
1828
    gServer.events = [{
1828
    gServer.events = [{
1829
        kind: "calendar#event",
1829
        kind: "calendar#event",
1830
        etag: "\"1\"",
1830
        etag: "\"1\"",
Lines 1873-1879 add_task(function* test_paginate() { Link Here
1873
1873
1874
    Preferences.set("calendar.google.maxResultsPerRequest", 1);
1874
    Preferences.set("calendar.google.maxResultsPerRequest", 1);
1875
1875
1876
    let client = yield gServer.getClient();
1876
    let client = await gServer.getClient();
1877
    let pclient = cal.async.promisifyCalendar(client);
1877
    let pclient = cal.async.promisifyCalendar(client);
1878
1878
1879
    // Make sure all pages were requested
1879
    // Make sure all pages were requested
Lines 1882-1888 add_task(function* test_paginate() { Link Here
1882
1882
1883
    // ...and we have all items. Not checking props
1883
    // ...and we have all items. Not checking props
1884
    // because the other tests do this sufficiently.
1884
    // because the other tests do this sufficiently.
1885
    let items = yield pclient.getAllItems();
1885
    let items = await pclient.getAllItems();
1886
    equal(items.length, 4);
1886
    equal(items.length, 4);
1887
1887
1888
    equal(client.getProperty("syncToken.events"), "next-sync-token");
1888
    equal(client.getProperty("syncToken.events"), "next-sync-token");
Lines 1891-1897 add_task(function* test_paginate() { Link Here
1891
    gServer.resetClient(client);
1891
    gServer.resetClient(client);
1892
});
1892
});
1893
1893
1894
add_task(function* test_incremental_reset() {
1894
add_task(async function test_incremental_reset() {
1895
    gServer.syncs = [{
1895
    gServer.syncs = [{
1896
        token: "1",
1896
        token: "1",
1897
        events: [{
1897
        events: [{
Lines 1926-1942 add_task(function* test_incremental_reset() { Link Here
1926
            iCalUID: "fepf8uf6n7n04w7feukucs9n8e@google.com"
1926
            iCalUID: "fepf8uf6n7n04w7feukucs9n8e@google.com"
1927
        }]
1927
        }]
1928
    }];
1928
    }];
1929
    let client = yield gServer.getClient();
1929
    let client = await gServer.getClient();
1930
    let pclient = cal.async.promisifyCalendar(client);
1930
    let pclient = cal.async.promisifyCalendar(client);
1931
1931
1932
    let items = yield pclient.getAllItems();
1932
    let items = await pclient.getAllItems();
1933
    equal(items.length, 1);
1933
    equal(items.length, 1);
1934
    equal(items[0].title, "New Event");
1934
    equal(items[0].title, "New Event");
1935
1935
1936
    client.refresh();
1936
    client.refresh();
1937
    yield gServer.waitForLoad(client);
1937
    await gServer.waitForLoad(client);
1938
1938
1939
    items = yield pclient.getAllItems();
1939
    items = await pclient.getAllItems();
1940
    equal(items.length, 1);
1940
    equal(items.length, 1);
1941
    equal(items[0].title, "New Event 2");
1941
    equal(items[0].title, "New Event 2");
1942
1942
(-)a/comm/calendar/test/unit/xpcshell-shared.ini (-2 / +2 lines)
Lines 29-36 Link Here
29
[test_email_utils.js]
29
[test_email_utils.js]
30
[test_freebusy.js]
30
[test_freebusy.js]
31
[test_freebusy_service.js]
31
[test_freebusy_service.js]
32
#[test_gdata_provider.js]
32
[test_gdata_provider.js]
33
#requesttimeoutfactor = 2
33
requesttimeoutfactor = 2
34
[test_hashedarray.js]
34
[test_hashedarray.js]
35
[test_ics.js]
35
[test_ics.js]
36
[test_ics_parser.js]
36
[test_ics_parser.js]
(-)a/comm/mail/app.mozbuild (-1 / +2 lines)
Lines 21-27 DIRS += ['/%s' % CONFIG['MOZ_BRANDING_DIRECTORY']] Link Here
21
if CONFIG['MOZ_CALENDAR']:
21
if CONFIG['MOZ_CALENDAR']:
22
    DIRS += [
22
    DIRS += [
23
        '/%s/calendar/lightning' % CONFIG['commreltopsrcdir'],
23
        '/%s/calendar/lightning' % CONFIG['commreltopsrcdir'],
24
        '/%s/calendar/timezones' % CONFIG['commreltopsrcdir']
24
        '/%s/calendar/providers/gdata' % CONFIG['commreltopsrcdir'],
25
        '/%s/calendar/timezones' % CONFIG['commreltopsrcdir'],
25
    ]
26
    ]
26
27
27
DIRS += [
28
DIRS += [

Return to bug 668036