11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/**
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @fileoverview
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Mock implementation of ClientPlugin for testing.
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @suppress {checkTypes}
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci'use strict';
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/** @suppress {duplicate} */
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivar remoting = remoting || {};
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/**
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @constructor
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @implements {remoting.ClientPlugin}
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin = function(container) {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.container_ = container;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.element_ = document.createElement('div');
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.element_.style.backgroundImage = 'linear-gradient(45deg, blue, red)';
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.width_ = 640;
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.height_ = 480;
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.connectionStatusUpdateHandler_ = null;
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.desktopSizeUpdateHandler_ = null;
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.container_.appendChild(this.element_);
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.dispose = function() {
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.container_.removeChild(this.element_);
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.element_ = null;
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.connectionStatusUpdateHandler_ = null;
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.getDesktopWidth = function() {
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return this.width_;
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.getDesktopHeight = function() {
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return this.height_;
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.getDesktopXDpi = function() {
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return 96;
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.getDesktopYDpi = function() {
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return 96;
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.element = function() {
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return this.element_;
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.initialize = function(onDone) {
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  window.setTimeout(onDone.bind(null, true), 0);
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.connect = function(
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    hostJid, hostPublicKey, localJid, sharedSecret,
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    authenticationMethods, authenticationTag,
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    clientPairingId, clientPairedSecret) {
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  base.debug.assert(this.connectionStatusUpdateHandler_ != null);
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  window.setTimeout(
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this.connectionStatusUpdateHandler_.bind(
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          this,
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          remoting.ClientSession.State.CONNECTED,
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          remoting.ClientSession.ConnectionError.NONE),
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      0);
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.injectKeyEvent =
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(key, down) {};
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.remapKey = function(from, to) {};
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.releaseAllKeys = function() {};
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.notifyClientResolution =
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(width, height, dpi) {
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.width_ = width;
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.height_ = height;
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (this.desktopSizeUpdateHandler_) {
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    window.setTimeout(this.desktopSizeUpdateHandler_, 0);
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.onIncomingIq = function(iq) {};
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.isSupportedVersion = function() {
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return true;
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.hasFeature = function(feature) {
971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return false;
981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.enableMediaSourceRendering =
1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(mediaSourceRenderer) {};
1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.sendClipboardItem =
1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(mimeType, item) {};
1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.useAsyncPinDialog = function() {};
1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.requestPairing =
1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(clientName, onDone) {};
1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.onPinFetched = function(pin) {};
1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.onThirdPartyTokenFetched =
1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(token, sharedSecret) {};
1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.pauseAudio = function(pause) {};
1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.pauseVideo = function(pause) {};
1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.getPerfStats = function() {
1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var result = new remoting.ClientSession.PerfStats;
1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  result.videoBandwidth = 999;
1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  result.videoFrameRate = 60;
1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  result.captureLatency = 10;
1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  result.encodeLatency = 10;
1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  result.decodeLatency = 10;
1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  result.renderLatency = 10;
1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  result.roundtripLatency = 10;
1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return result;
1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.sendClientMessage =
1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(name, data) {};
1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setOnOutgoingIqHandler =
1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setOnDebugMessageHandler =
1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setConnectionStatusUpdateHandler =
1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {
1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.connectionStatusUpdateHandler_ = handler;
1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setConnectionReadyHandler =
1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setDesktopSizeUpdateHandler =
1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {
1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  this.desktopSizeUpdateHandler_ = handler;
1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setCapabilitiesHandler =
1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setGnubbyAuthHandler =
1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setCastExtensionHandler =
1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setMouseCursorHandler =
1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setFetchThirdPartyTokenHandler =
1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPlugin.prototype.setFetchPinHandler =
1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(handler) {};
1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/**
1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @constructor
1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @extends {remoting.ClientPluginFactory}
1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */
1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPluginFactory = function() {};
1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPluginFactory.prototype.createPlugin =
1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    function(container, onExtensionMessage) {
1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return new remoting.MockClientPlugin(container);
1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciremoting.MockClientPluginFactory.prototype.preloadPlugin = function() {};
185