OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 'use strict'; | 5 'use strict'; |
6 | 6 |
7 /** @suppress {duplicate} */ | 7 /** @suppress {duplicate} */ |
8 var remoting = remoting || {}; | 8 var remoting = remoting || {}; |
9 | 9 |
10 /** | 10 /** |
(...skipping 10 matching lines...) Expand all Loading... |
21 'host-install-retry'); | 21 'host-install-retry'); |
22 | 22 |
23 this.onOkClickedHandler_ = this.onOkClicked_.bind(this); | 23 this.onOkClickedHandler_ = this.onOkClicked_.bind(this); |
24 this.onCancelClickedHandler_ = this.onCancelClicked_.bind(this); | 24 this.onCancelClickedHandler_ = this.onCancelClicked_.bind(this); |
25 this.onRetryClickedHandler_ = this.onRetryClicked_.bind(this); | 25 this.onRetryClickedHandler_ = this.onRetryClicked_.bind(this); |
26 | 26 |
27 this.continueInstallButton_.disabled = false; | 27 this.continueInstallButton_.disabled = false; |
28 this.cancelInstallButton_.disabled = false; | 28 this.cancelInstallButton_.disabled = false; |
29 | 29 |
30 /** @private*/ | 30 /** @private*/ |
31 this.onDoneHandler_ = function() {} | 31 this.onDoneHandler_ = function() {}; |
32 | 32 |
33 /** @param {remoting.Error} error @private */ | 33 /** @param {remoting.Error} error @private */ |
34 this.onErrorHandler_ = function(error) {} | 34 this.onErrorHandler_ = function(error) {}; |
35 }; | |
36 | 35 |
37 /** @type {Object.<string,string>} */ | 36 /** |
38 remoting.HostInstallDialog.hostDownloadUrls = { | 37 * @type {remoting.HostInstaller} |
39 'Win32' : 'http://dl.google.com/dl/edgedl/chrome-remote-desktop/' + | 38 * @private |
40 'chromeremotedesktophost.msi', | 39 */ |
41 'MacIntel' : 'https://dl.google.com/chrome-remote-desktop/' + | 40 this.hostInstaller_ = new remoting.HostInstaller(); |
42 'chromeremotedesktop.dmg', | |
43 'Linux x86_64' : 'https://dl.google.com/linux/direct/' + | |
44 'chrome-remote-desktop_current_amd64.deb', | |
45 'Linux i386' : 'https://dl.google.com/linux/direct/' + | |
46 'chrome-remote-desktop_current_i386.deb' | |
47 }; | 41 }; |
48 | 42 |
49 /** | 43 /** |
50 * Starts downloading host components and shows installation prompt. | 44 * Starts downloading host components and shows installation prompt. |
51 * | 45 * |
52 * @param {function():void} onDone Callback called when user clicks Ok, | 46 * @param {function():void} onDone Callback called when user clicks Ok, |
53 * presumably after installing the host. The handler must verify that the host | 47 * presumably after installing the host. The handler must verify that the host |
54 * has been installed and call tryAgain() otherwise. | 48 * has been installed and call tryAgain() otherwise. |
55 * @param {function(remoting.Error):void} onError Callback called when user | 49 * @param {function(remoting.Error):void} onError Callback called when user |
56 * clicks Cancel button or there is some other unexpected error. | 50 * clicks Cancel button or there is some other unexpected error. |
57 * @return {void} | 51 * @return {void} |
58 */ | 52 */ |
59 remoting.HostInstallDialog.prototype.show = function(onDone, onError) { | 53 remoting.HostInstallDialog.prototype.show = function(onDone, onError) { |
60 this.continueInstallButton_.addEventListener( | 54 this.continueInstallButton_.addEventListener( |
61 'click', this.onOkClickedHandler_, false); | 55 'click', this.onOkClickedHandler_, false); |
62 this.cancelInstallButton_.addEventListener( | 56 this.cancelInstallButton_.addEventListener( |
63 'click', this.onCancelClickedHandler_, false); | 57 'click', this.onCancelClickedHandler_, false); |
64 remoting.setMode(remoting.AppMode.HOST_INSTALL_PROMPT); | 58 remoting.setMode(remoting.AppMode.HOST_INSTALL_PROMPT); |
65 | 59 |
66 var hostPackageUrl = | |
67 remoting.HostInstallDialog.hostDownloadUrls[navigator.platform]; | |
68 if (hostPackageUrl === undefined) { | |
69 this.onErrorHandler_(remoting.Error.CANCELLED); | |
70 return; | |
71 } | |
72 | |
73 // Start downloading the package. | |
74 if (remoting.isAppsV2) { | |
75 // TODO(jamiewalch): Use chrome.downloads when it is available to | |
76 // apps v2 (http://crbug.com/174046) | |
77 window.open(hostPackageUrl); | |
78 } else { | |
79 window.location = hostPackageUrl; | |
80 } | |
81 | |
82 /** @type {function():void} */ | 60 /** @type {function():void} */ |
83 this.onDoneHandler_ = onDone; | 61 this.onDoneHandler_ = onDone; |
84 | 62 |
85 /** @type {function(remoting.Error):void} */ | 63 /** @type {function(remoting.Error):void} */ |
86 this.onErrorHandler_ = onError; | 64 this.onErrorHandler_ = onError; |
87 } | 65 |
| 66 /** @type {remoting.HostInstaller} */ |
| 67 var hostInstaller = new remoting.HostInstaller(); |
| 68 |
| 69 /** @type {remoting.HostInstallDialog} */ |
| 70 var that = this; |
| 71 |
| 72 this.hostInstaller_.downloadAndWaitForInstall().then(function() { |
| 73 that.continueInstallButton_.click(); |
| 74 that.hostInstaller_.cancel(); |
| 75 }, function(){ |
| 76 that.onErrorHandler_(remoting.Error.CANCELLED); |
| 77 that.hostInstaller_.cancel(); |
| 78 }); |
| 79 }; |
88 | 80 |
89 /** | 81 /** |
90 * In manual host installation, onDone handler must call this method if it | 82 * In manual host installation, onDone handler must call this method if it |
91 * detects that the host components are still unavailable. The same onDone | 83 * detects that the host components are still unavailable. The same onDone |
92 * and onError callbacks will be used when user clicks Ok or Cancel. | 84 * and onError callbacks will be used when user clicks Ok or Cancel. |
93 */ | 85 */ |
94 remoting.HostInstallDialog.prototype.tryAgain = function() { | 86 remoting.HostInstallDialog.prototype.tryAgain = function() { |
95 this.retryInstallButton_.addEventListener( | 87 this.retryInstallButton_.addEventListener( |
96 'click', this.onRetryClickedHandler_.bind(this), false); | 88 'click', this.onRetryClickedHandler_.bind(this), false); |
97 remoting.setMode(remoting.AppMode.HOST_INSTALL_PENDING); | 89 remoting.setMode(remoting.AppMode.HOST_INSTALL_PENDING); |
98 this.continueInstallButton_.disabled = false; | 90 this.continueInstallButton_.disabled = false; |
99 this.cancelInstallButton_.disabled = false; | 91 this.cancelInstallButton_.disabled = false; |
100 }; | 92 }; |
101 | 93 |
102 remoting.HostInstallDialog.prototype.onOkClicked_ = function() { | 94 remoting.HostInstallDialog.prototype.onOkClicked_ = function() { |
103 this.continueInstallButton_.removeEventListener( | 95 this.continueInstallButton_.removeEventListener( |
104 'click', this.onOkClickedHandler_, false); | 96 'click', this.onOkClickedHandler_, false); |
105 this.cancelInstallButton_.removeEventListener( | 97 this.cancelInstallButton_.removeEventListener( |
106 'click', this.onCancelClickedHandler_, false); | 98 'click', this.onCancelClickedHandler_, false); |
107 this.continueInstallButton_.disabled = true; | 99 this.continueInstallButton_.disabled = true; |
108 this.cancelInstallButton_.disabled = true; | 100 this.cancelInstallButton_.disabled = true; |
109 | 101 |
110 this.onDoneHandler_(); | 102 this.onDoneHandler_(); |
111 } | 103 }; |
112 | 104 |
113 remoting.HostInstallDialog.prototype.onCancelClicked_ = function() { | 105 remoting.HostInstallDialog.prototype.onCancelClicked_ = function() { |
114 this.continueInstallButton_.removeEventListener( | 106 this.continueInstallButton_.removeEventListener( |
115 'click', this.onOkClickedHandler_, false); | 107 'click', this.onOkClickedHandler_, false); |
116 this.cancelInstallButton_.removeEventListener( | 108 this.cancelInstallButton_.removeEventListener( |
117 'click', this.onCancelClickedHandler_, false); | 109 'click', this.onCancelClickedHandler_, false); |
| 110 this.hostInstaller_.cancel(); |
118 this.onErrorHandler_(remoting.Error.CANCELLED); | 111 this.onErrorHandler_(remoting.Error.CANCELLED); |
119 } | 112 }; |
120 | 113 |
121 remoting.HostInstallDialog.prototype.onRetryClicked_ = function() { | 114 remoting.HostInstallDialog.prototype.onRetryClicked_ = function() { |
122 this.retryInstallButton_.removeEventListener( | 115 this.retryInstallButton_.removeEventListener( |
123 'click', this.onRetryClickedHandler_.bind(this), false); | 116 'click', this.onRetryClickedHandler_.bind(this), false); |
124 this.continueInstallButton_.addEventListener( | 117 this.continueInstallButton_.addEventListener( |
125 'click', this.onOkClickedHandler_, false); | 118 'click', this.onOkClickedHandler_, false); |
126 this.cancelInstallButton_.addEventListener( | 119 this.cancelInstallButton_.addEventListener( |
127 'click', this.onCancelClickedHandler_, false); | 120 'click', this.onCancelClickedHandler_, false); |
128 remoting.setMode(remoting.AppMode.HOST_INSTALL_PROMPT); | 121 remoting.setMode(remoting.AppMode.HOST_INSTALL_PROMPT); |
129 }; | 122 }; |
OLD | NEW |