1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 /** @suppress {duplicate} */
8 var remoting
= remoting
|| {};
11 * HostInstallDialog prompts the user to install host components.
15 remoting
.HostInstallDialog = function() {
16 this.continueInstallButton_
= document
.getElementById(
17 'host-install-continue');
18 this.cancelInstallButton_
= document
.getElementById(
19 'host-install-dismiss');
20 this.retryInstallButton_
= document
.getElementById(
21 'host-install-retry');
23 this.onOkClickedHandler_
= this.onOkClicked_
.bind(this);
24 this.onCancelClickedHandler_
= this.onCancelClicked_
.bind(this);
25 this.onRetryClickedHandler_
= this.onRetryClicked_
.bind(this);
27 this.continueInstallButton_
.disabled
= false;
28 this.cancelInstallButton_
.disabled
= false;
31 this.onDoneHandler_ = function() {};
33 /** @param {remoting.Error} error @private */
34 this.onErrorHandler_ = function(error
) {};
37 * @type {remoting.HostInstaller}
40 this.hostInstaller_
= new remoting
.HostInstaller();
44 * Starts downloading host components and shows installation prompt.
46 * @param {function():void} onDone Callback called when user clicks Ok,
47 * presumably after installing the host. The handler must verify that the host
48 * has been installed and call tryAgain() otherwise.
49 * @param {function(remoting.Error):void} onError Callback called when user
50 * clicks Cancel button or there is some other unexpected error.
53 remoting
.HostInstallDialog
.prototype.show = function(onDone
, onError
) {
54 this.continueInstallButton_
.addEventListener(
55 'click', this.onOkClickedHandler_
, false);
56 this.cancelInstallButton_
.addEventListener(
57 'click', this.onCancelClickedHandler_
, false);
58 remoting
.setMode(remoting
.AppMode
.HOST_INSTALL_PROMPT
);
60 /** @type {function():void} */
61 this.onDoneHandler_
= onDone
;
63 /** @type {function(remoting.Error):void} */
64 this.onErrorHandler_
= onError
;
66 /** @type {remoting.HostInstaller} */
67 var hostInstaller
= new remoting
.HostInstaller();
69 /** @type {remoting.HostInstallDialog} */
72 this.hostInstaller_
.downloadAndWaitForInstall().then(function() {
73 that
.continueInstallButton_
.click();
74 that
.hostInstaller_
.cancel();
76 that
.onErrorHandler_(remoting
.Error
.CANCELLED
);
77 that
.hostInstaller_
.cancel();
82 * In manual host installation, onDone handler must call this method if it
83 * detects that the host components are still unavailable. The same onDone
84 * and onError callbacks will be used when user clicks Ok or Cancel.
86 remoting
.HostInstallDialog
.prototype.tryAgain = function() {
87 this.retryInstallButton_
.addEventListener(
88 'click', this.onRetryClickedHandler_
.bind(this), false);
89 remoting
.setMode(remoting
.AppMode
.HOST_INSTALL_PENDING
);
90 this.continueInstallButton_
.disabled
= false;
91 this.cancelInstallButton_
.disabled
= false;
94 remoting
.HostInstallDialog
.prototype.onOkClicked_ = function() {
95 this.continueInstallButton_
.removeEventListener(
96 'click', this.onOkClickedHandler_
, false);
97 this.cancelInstallButton_
.removeEventListener(
98 'click', this.onCancelClickedHandler_
, false);
99 this.continueInstallButton_
.disabled
= true;
100 this.cancelInstallButton_
.disabled
= true;
102 this.onDoneHandler_();
105 remoting
.HostInstallDialog
.prototype.onCancelClicked_ = function() {
106 this.continueInstallButton_
.removeEventListener(
107 'click', this.onOkClickedHandler_
, false);
108 this.cancelInstallButton_
.removeEventListener(
109 'click', this.onCancelClickedHandler_
, false);
110 this.hostInstaller_
.cancel();
111 this.onErrorHandler_(remoting
.Error
.CANCELLED
);
114 remoting
.HostInstallDialog
.prototype.onRetryClicked_ = function() {
115 this.retryInstallButton_
.removeEventListener(
116 'click', this.onRetryClickedHandler_
.bind(this), false);
117 this.continueInstallButton_
.addEventListener(
118 'click', this.onOkClickedHandler_
, false);
119 this.cancelInstallButton_
.addEventListener(
120 'click', this.onCancelClickedHandler_
, false);
121 remoting
.setMode(remoting
.AppMode
.HOST_INSTALL_PROMPT
);