4
<link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" />
6
<script type="text/javascript" src="../../../openlayers/lib/Firebug/firebug.js"></script>
7
<script type="text/javascript" src="../../../openlayers/lib/OpenLayers.js"></script>
9
<script type="text/javascript" src="../../../ext/adapter/ext/ext-base.js"></script>
10
<script type="text/javascript" src="../../../ext/ext-all-debug.js"></script>
12
<script type="text/javascript">
13
// Because of a bug in Firefox 2 we need to specify the MapFish base path.
14
// See https://bugzilla.mozilla.org/show_bug.cgi?id=351282
15
var gMfLocation = "../../../mapfish/";
17
<script type="text/javascript" src="../../../mapfish/MapFish.js"></script>
19
<script type="text/javascript"><!--
21
function test_Offline(t) {
24
var MO = mapfish.Offline;
29
var lastSyncTaskLabel;
30
var activeSyncTasks = 0;
31
function syncTaskEventHandler(syncTaskEvent) {
32
if (syncTaskEvent.type == "syncTaskAdded") {
34
} else if (syncTaskEvent.type == "syncTaskDone") {
37
throw new Error("Unknown syncTask type " + syncTaskEvent.type);
39
lastSyncTaskLabel = syncTaskEvent.syncTask.label;
42
var seenDownloadDone = false;
43
var seenUploadDone = false;
44
function syncEventHandler(type) {
45
if (type == "downloadDone") {
46
seenDownloadDone = true;
48
if (type == "uploadDone") {
49
seenUploadDone = true;
54
t.eq(MO.isOnline, true, "online at startup");
56
var seenOfflineEvent = false;
57
MO.events.register("network", null, function(status) {
58
MO.events.unregister("network", null, arguments.callee);
59
if (status == "offline")
60
seenOfflineEvent = true;
62
setTimeout(function() {
63
t.eq(seenOfflineEvent, true, "offline event fired");
69
t.eq(MO.isOnline, false, "went offline");
71
// Shouldn't fire network event if already offline
72
var seenEvent = false;
73
MO.events.register("network", null, function(status) {
74
MO.events.unregister("network", null, arguments.callee);
77
setTimeout(function() {
78
t.eq(seenEvent, false, "No event fired");
81
setTimeout(function() {
88
t.eq(MO.isOnline, true, "went online");
90
var syncTaskId1, syncTaskId2, syncTaskId3;
91
MO.events.register("synctask", null, syncTaskEventHandler);
93
MO.events.register("sync", null, function(type) {
94
if (type == "download") {
95
MO.events.unregister("sync", null, arguments.callee);
96
t.eq(activeSyncTasks, 0, "no syncTask yet")
98
syncTaskId1 = MO.addSyncTask("Sample syncTask 1");
99
t.eq(activeSyncTasks, 1, "1 active syncTask")
100
t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
102
// for syncTask 2, addSyncTask and syncTaskDone are called
103
// in the same execution flow, in that case check that downloadDone is
104
// not fired after syncTaskDone
105
syncTaskId2 = MO.addSyncTask("Sample syncTask 2");
106
t.eq(activeSyncTasks, 2, "2 active syncTasks")
107
t.eq(lastSyncTaskLabel, "Sample syncTask 2", "correct last task label");
108
MO.syncTaskDone(syncTaskId2);
109
t.eq(seenDownloadDone, false, "downloadDone not yet fired");
110
t.eq(activeSyncTasks, 1, "1 active syncTasks");
112
syncTaskId3 = MO.addSyncTask("Sample syncTask 3");
113
t.eq(activeSyncTasks, 2, "2 active syncTasks")
114
t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
118
MO.events.register("sync", null, syncEventHandler);
120
t.eq(MO.syncState, null, "not syncing");
123
setTimeout(function() {
124
t.eq(MO.isOnline, true, "Not yet offline, syncTasks are pending");
125
t.eq(MO.syncState, "download", "sync download");
127
t.eq(activeSyncTasks, 2, "2 active tasks")
128
MO.syncTaskDone(syncTaskId1);
129
t.eq(activeSyncTasks, 1, "1 active tasks")
130
t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
131
t.eq(seenDownloadDone, false, "downloadDone not yet fired");
133
t.eq(MO.isOnline, true, "Not yet offline, syncTasks are pending");
134
MO.syncTaskDone(syncTaskId3);
135
t.eq(activeSyncTasks, 0, "0 active tasks")
136
t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
137
t.eq(seenDownloadDone, false, "downloadDone not yet fired");
139
MO.events.unregister("synctask", null, syncTaskEventHandler);
140
setTimeout(function() {
141
MO.events.unregister("sync", null, syncEventHandler);
148
t.eq(seenDownloadDone, true, "downloadDone fired");
149
seenDownloadDone = false;
150
t.eq(MO.isOnline, false, "went offline, syncTasks are done");
151
t.eq(MO.syncState, null, "finished sync");
153
var syncTaskId1, syncTaskId2, syncTaskId3;
154
MO.events.register("synctask", null, syncTaskEventHandler);
156
MO.events.register("sync", null, function(type) {
157
if (type == "upload") {
158
MO.events.unregister("sync", null, arguments.callee);
159
t.eq(activeSyncTasks, 0, "no syncTask yet")
161
syncTaskId1 = MO.addSyncTask("Sample syncTask 1");
162
t.eq(activeSyncTasks, 1, "1 active syncTask")
163
t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
165
// for syncTask 2, addSyncTask and syncTaskDone are called
166
// in the same execution flow, in that case check that downloadDone is
167
// not fired after syncTaskDone
168
syncTaskId2 = MO.addSyncTask("Sample syncTask 2");
169
t.eq(activeSyncTasks, 2, "2 active syncTasks")
170
t.eq(lastSyncTaskLabel, "Sample syncTask 2", "correct last task label");
171
MO.syncTaskDone(syncTaskId2);
172
t.eq(seenUploadDone, false, "uploadDone not yet fired");
173
t.eq(activeSyncTasks, 1, "1 active syncTasks");
175
syncTaskId3 = MO.addSyncTask("Sample syncTask 3");
176
t.eq(activeSyncTasks, 2, "2 active syncTasks")
177
t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
181
MO.events.register("sync", null, syncEventHandler);
183
t.eq(MO.syncState, null, "not syncing");
186
setTimeout(function() {
187
t.eq(MO.isOnline, true, "went online, synchronizing upload");
188
t.eq(MO.syncState, "upload", "sync upload");
190
t.eq(activeSyncTasks, 2, "2 active tasks")
191
MO.syncTaskDone(syncTaskId1);
192
t.eq(activeSyncTasks, 1, "1 active tasks")
193
t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
194
t.eq(seenUploadDone, false, "uploadDone not yet fired");
196
t.eq(MO.isOnline, true, "Not yet offline, syncTasks are pending");
197
MO.syncTaskDone(syncTaskId3);
198
t.eq(activeSyncTasks, 0, "0 active tasks")
199
t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
200
t.eq(seenUploadDone, false, "uploadDone not yet fired");
202
setTimeout(function() {
203
MO.events.unregister("sync", null, syncEventHandler);
210
t.eq(seenUploadDone, true, "uploadDone fired");
211
seenUploadDone = false;
212
t.eq(MO.isOnline, true, "went online, syncTasks are done");
213
t.eq(MO.syncState, null, "finished sync");