diff --git a/types/chrome-apps/index.d.ts b/types/chrome-apps/index.d.ts index 053b3b67cf..7ce488deeb 100644 --- a/types/chrome-apps/index.d.ts +++ b/types/chrome-apps/index.d.ts @@ -4181,16 +4181,9 @@ declare namespace chrome { */ const MAX_MESSAGE_SIZE: integer; - interface IGCMData { - 'collapse_key'?: never; - 'goog'?: never; - 'goog.'?: never; - 'GOOG'?: never; - 'GOOG.'?: never; - 'google'?: never; - 'GOOGLE'?: never; - [key: string]: any; - } + type DisallowedKeys = 'collapse_key' | 'goog' | 'goog.' | 'GOOG' | 'GOOG.' | 'google' | 'GOOGLE'; + type IGCMDataSend = Record, any>; + type IGCMDataReceive = Record; interface OutgoingMessage { /** The ID of the server to send the message to as assigned by Google API Console. */ @@ -4208,12 +4201,12 @@ declare namespace chrome { * * Sum of all key/value pairs should not exceed gcm.MAX_MESSAGE_SIZE. **/ - data: IGCMData; + data: IGCMDataSend; } interface IncomingMessage { /** The message data. */ - data: IGCMData; + data: IGCMDataReceive; /** * Optional. * The sender who issued the message. diff --git a/types/chrome-apps/test/index.ts b/types/chrome-apps/test/index.ts index a34b29c6c1..6537914a5e 100644 --- a/types/chrome-apps/test/index.ts +++ b/types/chrome-apps/test/index.ts @@ -775,6 +775,14 @@ gcmMessage.data = { /*goog: 'any', should not be allowed, and it is not :) */ test: true }; +const eventHandler = (message: chrome.gcm.IncomingMessage) => { + console.log('From: ', message.from, 'collapseKey:', message.collapseKey); + return message.data['google']; +} +chrome.gcm.onMessage.addListener(eventHandler); +chrome.gcm.onMessage.removeListener(eventHandler); +chrome.gcm.onMessagesDeleted.addListener(() => { }); +chrome.gcm.onSendError.addListener((error) => { console.error(error.detail, error.errorMessage, error.messageId); }); // #endregion