Skip to content

Commit a33cfd6

Browse files
committed
update for new version of messageport-dispatcher
1 parent 76a0d0b commit a33cfd6

File tree

2 files changed

+49
-34
lines changed

2 files changed

+49
-34
lines changed

source/worker-event-dispatcher.js

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -125,14 +125,17 @@ var WorkerMessenger = (function() {
125125
* @constructor
126126
*/
127127
function WorkerMessenger(port, receiverEventPreprocessor, senderEventPreprocessor) {
128-
128+
if (port === NOINIT) return;
129129
function postMessageHandler(data, transferList) {
130130
port.postMessage(data, transferList);
131131
}
132132

133133
MessagePortDispatcher.call(this, port, postMessageHandler, receiverEventPreprocessor, senderEventPreprocessor);
134134
}
135135

136+
WorkerMessenger.prototype = MessagePortDispatcher.createNoInitPrototype();
137+
WorkerMessenger.prototype.constructor = WorkerMessenger;
138+
136139
function setScopeHandlers(source, target) {
137140
WorkerEvent.createHandler(Event.ERROR, source, target);
138141
WorkerEvent.createHandler(Event.LANGUAGECHANGE, source, target);
@@ -145,11 +148,45 @@ var WorkerMessenger = (function() {
145148
function setAbstractWorkerHandlers(source, target) {
146149
WorkerEvent.createHandler(Event.ERROR, source, target);
147150
}
151+
function createNoInitPrototype() {
152+
return new WorkerMessenger(NOINIT);
153+
}
154+
155+
WorkerMessenger.createNoInitPrototype = createNoInitPrototype;
148156

149157
WorkerMessenger.setAbstractWorkerHandlers = setAbstractWorkerHandlers;
150158
return WorkerMessenger;
151159
})();
152160

161+
/**
162+
*
163+
* @param worker {String|Worker}
164+
* @param type {String}
165+
* @param receiverEventPreprocessor {?Function}
166+
* @param senderEventPreprocessor {?Function}
167+
* @extends WorkerMessenger
168+
* @constructor
169+
*/
170+
function WorkerEventDispatcher(worker, receiverEventPreprocessor, senderEventPreprocessor, type) {
171+
if (worker === NOINIT) {
172+
Object.defineProperties(this, {
173+
type: {
174+
value: type
175+
}
176+
});
177+
} else {
178+
Object.defineProperties(this, {
179+
type: {
180+
value: WorkerType.DEDICATED_WORKER
181+
}
182+
});
183+
DedicatedWorkerEventDispatcher.call(this, worker, receiverEventPreprocessor, senderEventPreprocessor);
184+
}
185+
}
186+
187+
WorkerEventDispatcher.prototype = WorkerMessenger.createNoInitPrototype();
188+
WorkerEventDispatcher.prototype.constructor = WorkerEventDispatcher;
189+
153190
/**
154191
*
155192
* @param worker
@@ -174,10 +211,10 @@ function ServerEventDispatcher(target, receiverEventPreprocessor) {
174211

175212
_target.addEventListener('connect', connectHandler);
176213

177-
this.addEventListener = _receiver.addEventListener;
178-
this.hasEventListener = _receiver.hasEventListener;
179-
this.removeEventListener = _receiver.removeEventListener;
180-
this.removeAllEventListeners = _receiver.removeAllEventListeners;
214+
this.addEventListener = _receiver.addEventListener.bind(_receiver);
215+
this.hasEventListener = _receiver.hasEventListener.bind(_receiver);
216+
this.removeEventListener = _receiver.removeEventListener.bind(_receiver);
217+
this.removeAllEventListeners = _receiver.removeAllEventListeners.bind(_receiver);
181218

182219
WorkerMessenger.setScopeHandlers(_target, _receiver);
183220

@@ -187,10 +224,14 @@ function ServerEventDispatcher(target, receiverEventPreprocessor) {
187224
},
188225
target: {
189226
value: _target
227+
},
228+
type: {
229+
value: WorkerType.SHARED_WORKER_SERVER
190230
}
191231
});
192232
}
193-
ServerEventDispatcher.prototype = new WorkerEventDispatcher(NOINIT, null, null, WorkerType.SHARED_WORKER_SERVER);
233+
234+
ServerEventDispatcher.prototype = EventDispatcher.createNoInitPrototype();
194235
ServerEventDispatcher.prototype.constructor = ServerEventDispatcher;
195236

196237
/**
@@ -265,32 +306,6 @@ function DedicatedWorkerEventDispatcher(worker, receiverEventPreprocessor, sende
265306
DedicatedWorkerEventDispatcher.prototype = new WorkerEventDispatcher(NOINIT, null, null, WorkerType.DEDICATED_WORKER);
266307
DedicatedWorkerEventDispatcher.prototype.constructor = DedicatedWorkerEventDispatcher;
267308

268-
/**
269-
*
270-
* @param worker {String|Worker}
271-
* @param type {String}
272-
* @param receiverEventPreprocessor {?Function}
273-
* @param senderEventPreprocessor {?Function}
274-
* @extends WorkerMessenger
275-
* @constructor
276-
*/
277-
function WorkerEventDispatcher(worker, receiverEventPreprocessor, senderEventPreprocessor, type) {
278-
if (worker === NOINIT) {
279-
Object.defineProperties(this, {
280-
type: {
281-
value: type
282-
}
283-
});
284-
} else {
285-
Object.defineProperties(this, {
286-
type: {
287-
value: WorkerType.DEDICATED_WORKER
288-
}
289-
});
290-
DedicatedWorkerEventDispatcher.call(this, worker, receiverEventPreprocessor, senderEventPreprocessor);
291-
}
292-
}
293-
294309
WorkerEventDispatcher.WorkerEvent = WorkerEvent;
295310
WorkerEventDispatcher.WorkerType = WorkerType;
296311
WorkerEventDispatcher.CONNECT_EVENT = WorkerEvent.CONNECT;

tests/server-eventdispatcher.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ describe('ServerEventDispatcher', function() {
99
worker = new MessagePortBase();
1010
dispatcher = new ServerEventDispatcher(worker);
1111
});
12-
it('should extend WorkerEventDispatcher', function() {
13-
expect(dispatcher).to.be.an.instanceof(WorkerEventDispatcher);
12+
it('should extend EventDispatcher', function() {
13+
expect(dispatcher).to.be.an.instanceof(EventDispatcher);
1414
});
1515
it('should add listeners to events', function() {
1616
expect(worker.addEventListener).to.be.calledWith(Event.ERROR);

0 commit comments

Comments
 (0)