ozone: evdev: Sync caps lock LED state to evdev
[chromium-blink-merge.git] / remoting / webapp / base / js / auth_dialog.js
blob34b621c885d23b6f510466b67bff12d927590b73
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.
5 /** @suppress {duplicate} */
6 var remoting = remoting || {};
8 (function() {
10 'use strict';
12 var instance_ = null;
14 /**
15 * @constructor
16 * @implements {remoting.WindowShape.ClientUI}
17 * @implements {remoting.Identity.ConsentDialog}
18 * @param {HTMLElement} rootElement The dialog DOM element.
19 * @private
21 remoting.AuthDialog = function(rootElement) {
22 /**
23 * @type {HTMLElement}
24 * @private
26 this.rootElement_ = rootElement;
28 /**
29 * @type {HTMLElement}
30 * @private
32 this.borderElement_ = rootElement.querySelector('#auth-dialog-border');
34 /**
35 * @type {HTMLElement}
36 * @private
38 this.authButton_ = rootElement.querySelector('#auth-button');
40 /**
41 * @type {base.Deferred}
42 * @private
44 this.onAuthButtonDeferred_ = null;
46 this.authButton_.addEventListener('click', this.onClick_.bind(this), false);
47 remoting.windowShape.addCallback(this);
50 /**
51 * @param {Array<{left: number, top: number, width: number, height: number}>}
52 * rects List of rectangles.
54 remoting.AuthDialog.prototype.addToRegion = function(rects) {
55 var rect =
56 /** @type {ClientRect} */(this.borderElement_.getBoundingClientRect());
57 rects.push({left: rect.left,
58 top: rect.top,
59 width: rect.width,
60 height: rect.height});
63 /** @private */
64 remoting.AuthDialog.prototype.onClick_ = function() {
65 this.rootElement_.hidden = true;
66 this.onAuthButtonDeferred_.resolve(null);
67 this.onAuthButtonDeferred_ = null;
68 remoting.windowShape.updateClientWindowShape();
71 /**
72 * @return {Promise} A Promise object that resolves when the user clicks on the
73 * auth button.
75 remoting.AuthDialog.prototype.show = function() {
76 if (this.isVisible()) {
77 return Promise.reject('Auth dialog is already showing.');
79 this.rootElement_.hidden = false;
80 base.debug.assert(this.onAuthButtonDeferred_ === null);
81 remoting.windowShape.updateClientWindowShape();
82 this.onAuthButtonDeferred_ = new base.Deferred();
83 return this.onAuthButtonDeferred_.promise();
86 /**
87 * @return {boolean} whether the auth dialog is visible or not.
89 remoting.AuthDialog.prototype.isVisible = function() {
90 return !this.rootElement_.hidden;
93 /**
94 * @return {remoting.AuthDialog}
96 remoting.AuthDialog.getInstance = function() {
97 if (!instance_) {
98 var rootElement = document.getElementById('auth-dialog');
99 instance_ = new remoting.AuthDialog(rootElement);
101 return instance_;
104 })();