Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / resources / chromeos / login / oobe_screen_host_pairing.js
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.
4
5 /**
6  * @fileoverview host pairing screen implementation.
7  */
8
9 login.createScreen('HostPairingScreen', 'host-pairing', function() {
10   'use strict';
11
12   // Keep these constants synced with corresponding constants in
13   // host_pairing_screen_actor.{h,cc}.
14   /** @const */ var CONTEXT_KEY_PAGE = 'page';
15   /** @const */ var CONTEXT_KEY_DEVICE_NAME = 'deviceName';
16   /** @const */ var CONTEXT_KEY_CONFIRMATION_CODE = 'code';
17   /** @const */ var CONTEXT_KEY_ENROLLMENT_DOMAIN = 'enrollmentDomain';
18   /** @const */ var CONTEXT_KEY_UPDATE_PROGRESS = 'updateProgress';
19
20   /** @const */ var PAGE_WELCOME = 'welcome';
21   /** @const */ var PAGE_CODE_CONFIRMATION = 'code-confirmation';
22   /** @const */ var PAGE_UPDATE = 'update';
23   /** @const */ var PAGE_ENROLLMENT_INTRODUCTION = 'enrollment-introduction';
24   /** @const */ var PAGE_ENROLLMENT = 'enrollment';
25   /** @const */ var PAGE_ENROLLMENT_ERROR = 'enrollment-error';
26   /** @const */ var PAGE_PAIRING_DONE = 'pairing-done';
27
28   /** @const */ var CALLBACK_CONTEXT_READY = 'contextReady';
29
30
31   /** @const */ var PAGE_NAMES = [
32       PAGE_WELCOME,
33       PAGE_CODE_CONFIRMATION,
34       PAGE_UPDATE,
35       PAGE_ENROLLMENT_INTRODUCTION,
36       PAGE_ENROLLMENT,
37       PAGE_ENROLLMENT_ERROR,
38       PAGE_PAIRING_DONE];
39
40   return {
41     pages_: null,
42
43     /** @override */
44     decorate: function() {
45       this.initialize();
46
47       this.pages_ = {};
48       PAGE_NAMES.forEach(function(pageName) {
49         var page = this.querySelector('.page-' + pageName);
50         if (page === null)
51           throw Error('Page "' + pageName + '" was not found.');
52         page.hidden = true;
53         this.pages_[pageName] = page;
54       }, this);
55
56       this.addContextObserver(CONTEXT_KEY_PAGE, this.pageChanged_);
57       this.send(CALLBACK_CONTEXT_READY);
58     },
59
60     pageChanged_: function(newPage, oldPage) {
61       this.pageNameLabel_.textContent = '<<<< ' + newPage + ' >>>>';
62       this.deviceNameLabel_.textContent =
63           this.context.get(CONTEXT_KEY_DEVICE_NAME);
64
65       if (newPage == PAGE_CODE_CONFIRMATION)
66         this.confirmationCodeLabel_.textContent =
67             this.context.get(CONTEXT_KEY_CONFIRMATION_CODE);
68
69       if (newPage == PAGE_UPDATE) {
70         this.setUpdateProgress_(this.context.get(CONTEXT_KEY_UPDATE_PROGRESS));
71         this.addContextObserver(CONTEXT_KEY_UPDATE_PROGRESS,
72             this.setUpdateProgress_);
73       } else if (oldPage == PAGE_UPDATE) {
74         this.removeContextObserver(this.setUpdateProgress_);
75       }
76
77       if (newPage == PAGE_ENROLLMENT)
78         this.domainNameLabel_.textContent =
79             this.context.get(CONTEXT_KEY_ENROLLMENT_DOMAIN);
80
81       this.togglePage_(newPage);
82     },
83
84     togglePage_: function(newPage) {
85       PAGE_NAMES.forEach(function(pageName) {
86         this.pages_[pageName].hidden = (pageName !== newPage);
87       }, this);
88     },
89
90     setUpdateProgress_: function(progress) {
91       this.updateProgressBar_.value = progress;
92     }
93   };
94 });
95