Home | History | Annotate | Download | only in inline_login
      1 // Copyright 2013 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 Inline login UI.
      7  */
      8 
      9 <include src="../gaia_auth_host/gaia_auth_host.js"></include>
     10 
     11 cr.define('inline.login', function() {
     12   'use strict';
     13 
     14   /**
     15    * The auth extension host instance.
     16    * @type {Object}
     17    */
     18   var authExtHost;
     19 
     20   /**
     21    * Handler of auth host 'ready' event.
     22    */
     23   function onAuthReady() {
     24     $('contents').classList.toggle('loading', false);
     25   }
     26 
     27   /**
     28    * Handler of auth host 'completed' event.
     29    * @param {!Object} credentials Credentials of the completed authentication.
     30    */
     31   function onAuthCompleted(credentials) {
     32     chrome.send('completeLogin', [credentials]);
     33     $('contents').classList.toggle('loading', true);
     34   }
     35 
     36   /**
     37    * Initialize the UI.
     38    */
     39   function initialize() {
     40     authExtHost = new cr.login.GaiaAuthHost('signin-frame');
     41     authExtHost.addEventListener('ready', onAuthReady);
     42 
     43     chrome.send('initialize');
     44   }
     45 
     46   /**
     47    * Loads auth extension.
     48    * @param {Object} data Parameters for auth extension.
     49    */
     50   function loadAuthExtension(data) {
     51     authExtHost.load(
     52         false /* useOffline */, data, onAuthCompleted);
     53     $('contents').classList.toggle('loading', true);
     54   }
     55 
     56   /**
     57    * Closes the inline login dialog.
     58    */
     59   function closeDialog() {
     60     chrome.send('DialogClose', ['']);
     61   }
     62 
     63   /**
     64    * Invoked when failed to get oauth2 refresh token.
     65    */
     66   function handleOAuth2TokenFailure() {
     67     // TODO(xiyuan): Show an error UI.
     68     authExtHost.reload();
     69     $('contents').classList.toggle('loading', true);
     70   }
     71 
     72   return {
     73     initialize: initialize,
     74     loadAuthExtension: loadAuthExtension,
     75     closeDialog: closeDialog,
     76     handleOAuth2TokenFailure: handleOAuth2TokenFailure
     77   };
     78 });
     79 
     80 document.addEventListener('DOMContentLoaded', inline.login.initialize);
     81