| Index: remoting/webapp/crd/js/client_plugin_impl.js
|
| diff --git a/remoting/webapp/crd/js/client_plugin_impl.js b/remoting/webapp/crd/js/client_plugin_impl.js
|
| index 73f7c17770f9ee8e5de51dbf3a1b3274b4fb45d8..17b4adf8aff4bfef555250bc3825deade1d339b4 100644
|
| --- a/remoting/webapp/crd/js/client_plugin_impl.js
|
| +++ b/remoting/webapp/crd/js/client_plugin_impl.js
|
| @@ -16,6 +16,15 @@
|
| /** @suppress {duplicate} */
|
| var remoting = remoting || {};
|
|
|
| +/** @constructor */
|
| +remoting.ClientPluginMessage = function() {
|
| + /** @type {string} */
|
| + this.method = '';
|
| +
|
| + /** @type {Object.<string,*>} */
|
| + this.data = {};
|
| +};
|
| +
|
| /**
|
| * @param {Element} container The container for the embed element.
|
| * @param {function(string, string):boolean} onExtensionMessage The handler for
|
| @@ -164,7 +173,8 @@ remoting.ClientPluginImpl = function(container, onExtensionMessage,
|
| var that = this;
|
| /** @param {Event} event Message event from the plugin. */
|
| this.plugin_.addEventListener('message', function(event) {
|
| - that.handleMessage_(event.data);
|
| + that.handleMessage_(
|
| + /** @type {remoting.ClientPluginMessage} */ (event.data));
|
| }, false);
|
|
|
| if (remoting.settings.CLIENT_PLUGIN_TYPE == 'native') {
|
| @@ -175,11 +185,11 @@ remoting.ClientPluginImpl = function(container, onExtensionMessage,
|
| /**
|
| * Creates plugin element without adding it to a container.
|
| *
|
| - * @return {remoting.ViewerPlugin} Plugin element
|
| + * @return {HTMLEmbedElement} Plugin element
|
| */
|
| remoting.ClientPluginImpl.createPluginElement_ = function() {
|
| - var plugin = /** @type {remoting.ViewerPlugin} */
|
| - document.createElement('embed');
|
| + var plugin =
|
| + /** @type {HTMLEmbedElement} */ (document.createElement('embed'));
|
| if (remoting.settings.CLIENT_PLUGIN_TYPE == 'pnacl') {
|
| plugin.src = 'remoting_client_pnacl.nmf';
|
| plugin.type = 'application/x-pnacl';
|
| @@ -190,8 +200,8 @@ remoting.ClientPluginImpl.createPluginElement_ = function() {
|
| plugin.src = 'about://none';
|
| plugin.type = 'application/vnd.chromium.remoting-viewer';
|
| }
|
| - plugin.width = 0;
|
| - plugin.height = 0;
|
| + plugin.width = '0';
|
| + plugin.height = '0';
|
| plugin.tabIndex = 0; // Required, otherwise focus() doesn't work.
|
| return plugin;
|
| }
|
| @@ -263,7 +273,7 @@ remoting.ClientPluginImpl.prototype.setDesktopSizeUpdateHandler =
|
| };
|
|
|
| /**
|
| - * @param {function():void} handler
|
| + * @param {function(Array.<Array.<number>>):void} handler
|
| */
|
| remoting.ClientPluginImpl.prototype.setDesktopShapeUpdateHandler =
|
| function(handler) {
|
| @@ -315,13 +325,13 @@ remoting.ClientPluginImpl.prototype.setFetchPinHandler = function(handler) {
|
| };
|
|
|
| /**
|
| - * @param {string|{method:string, data:Object.<string,*>}}
|
| + * @param {string|remoting.ClientPluginMessage}
|
| * rawMessage Message from the plugin.
|
| * @private
|
| */
|
| remoting.ClientPluginImpl.prototype.handleMessage_ = function(rawMessage) {
|
| var message =
|
| - /** @type {{method:string, data:Object.<string,*>}} */
|
| + /** @type {remoting.ClientPluginMessage} */
|
| ((typeof(rawMessage) == 'string') ? base.jsonParseSafe(rawMessage)
|
| : rawMessage);
|
| if (!message || !('method' in message) || !('data' in message)) {
|
| @@ -331,13 +341,13 @@ remoting.ClientPluginImpl.prototype.handleMessage_ = function(rawMessage) {
|
|
|
| try {
|
| this.handleMessageMethod_(message);
|
| - } catch(e) {
|
| - console.error(/** @type {*} */ (e));
|
| + } catch(/** @type {*} */ e) {
|
| + console.error(e);
|
| }
|
| }
|
|
|
| /**
|
| - * @param {{method:string, data:Object.<string,*>}}
|
| + * @param {remoting.ClientPluginMessage}
|
| * message Parsed message from the plugin.
|
| * @private
|
| */
|
| @@ -443,7 +453,7 @@ remoting.ClientPluginImpl.prototype.handleMessageMethod_ = function(message) {
|
| getNumberAttr(message.data, 'renderLatency');
|
| getNumberAttr(message.data, 'roundtripLatency');
|
| this.perfStats_ =
|
| - /** @type {remoting.ClientSession.PerfStats} */ message.data;
|
| + /** @type {remoting.ClientSession.PerfStats} */ (message.data);
|
|
|
| } else if (message.method == 'injectClipboardItem') {
|
| var mimetype = getStringAttr(message.data, 'mimeType');
|
|
|