MCPcopy
hub / github.com/ampproject/amphtml / receiveMessage

Method receiveMessage

src/service/viewer-impl.js:693–730  ·  view source on GitHub ↗

@override

(eventType, data, unusedAwaitResponse)

Source from the content-addressed store, hash-verified

691
692 /** @override */
693 receiveMessage(eventType, data, unusedAwaitResponse) {
694 if (eventType == 'visibilitychange') {
695 this.setVisibilityState_(data['state']);
696 return Promise.resolve();
697 }
698 if (eventType == 'broadcast') {
699 this.broadcastObservable_.fire(
700 /** @type {!JsonObject|undefined} */ (data)
701 );
702 return Promise.resolve();
703 }
704 const observable = this.messageObservables_[eventType];
705 const responder = this.messageResponders_[eventType];
706
707 // Queue the message if there are no handlers. Returns a pending promise to
708 // be resolved once a handler/responder is registered.
709 if (!observable && !responder) {
710 this.receivedMessageQueue_[eventType] =
711 this.receivedMessageQueue_[eventType] || [];
712 if (
713 this.receivedMessageQueue_[eventType].length >=
714 RECEIVED_MESSAGE_QUEUE_MAX_LENGTH
715 ) {
716 return undefined;
717 }
718 const deferred = new Deferred();
719 this.receivedMessageQueue_[eventType].push({data, deferred});
720 return deferred.promise;
721 }
722 if (observable) {
723 observable.fire(data);
724 }
725 if (responder) {
726 return responder(data);
727 } else if (observable) {
728 return Promise.resolve();
729 }
730 }
731
732 /** @override */
733 setMessageDeliverer(deliverer, origin) {

Callers 7

test-viewer.jsFile · 0.45
broadcast_Method · 0.45
setup_Method · 0.45
testSuiteFunction · 0.45

Calls 4

setVisibilityState_Method · 0.95
resolveMethod · 0.80
fireMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected