+
+DDFileUploaderBase.prototype.uploadCompleteHandlerCB = function(req) {
+ // To be implemented by descendant.
+};
+
+DDFileUploaderBase.prototype.uploadCompleteHandler = function(req) {
+ this.uploadCompleteHandlerCB(req);
+ this.uploadQueueLoadNext();
+};
+
+DDFileUploaderBase.prototype.progressHandlerCB = function(progress) {
+ // To be implemented by descendant.
+ // 0 <= progress <= 1
+};
+
+DDFileUploaderBase.prototype.progressHandler = function(evt) {
+ if (evt.lengthComputable) {
+ var progress = evt.loaded / evt.total;
+ this.progressHandlerCB(progress);
+ }
+};
+
+// Methods about queue
+DDFileUploaderBase.prototype.uploadQueuePush = function(item) {
+ this.uploadQueue.push(item);
+ if (!this._uploadQueueRunning) {
+ this.startUploadQueue();
+ }
+};
+
+DDFileUploaderBase.prototype.startUploadQueue = function() {
+ this._uploadQueueRunning = true;
+ this.uploadQueueLoadNext();
+};
+
+DDFileUploaderBase.prototype.uploadQueueLoadNext = function() {
+ var item = this.uploadQueue.shift();
+ if (item) {
+ this.upload(item);
+ }
+ else {
+ this._uploadQueueRunning = false;
+ }
+};
+