// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
tvcm.require('ui.spy');
tvcm.require('tvcm.ui');
tvcm.require('tvcm.ui.dom_helpers');
tvcm.requireTemplate('ui.spy_shell');
tvcm.exportTo('ui', function() {
/**
* @constructor
*/
var SpyShell = tvcm.ui.define('x-spy-shell');
SpyShell.prototype = {
__proto__: HTMLUnknownElement.prototype,
decorate: function(socketURL) {
var node = tvcm.instantiateTemplate('#x-spy-shell-template');
this.appendChild(node);
this.socketURL_ = socketURL;
this.conn_ = undefined;
this.statusEl_ = this.querySelector('#status');
this.statusEl_.textContent = 'Not connected';
this.spy_ = this.querySelector('x-spy');
tvcm.ui.decorate(this.spy_, ui.Spy);
this.openConnection_();
},
get socketURL() {
return this.socketURL_;
},
openConnection_: function() {
if (!(this.conn_ == undefined ||
this.conn_.readyState === undefined ||
conn.readyState > 1)) {
return;
}
this.conn_ = new WebSocket(this.socketURL_);
this.conn_.onopen = function() {
this.statusEl_.textContent = 'connected at ' + this.socketURL_;
this.spy_.connection = this.conn_;
}.bind(this);
this.conn_.onclose = function(event) {
this.statusEl_.textContent = 'connection closed';
this.spy_.connection = undefined;
}.bind(this);
this.conn_.onerror = function(event) {
this.statusEl_.innerHTML = 'got error';
}.bind(this);
}
};
return {
SpyShell: SpyShell
};
});