1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsencr.define('enterpriseEnrollment', function() {
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  function showScreen(screen) {
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    var screens = ['login-screen', 'confirmation-screen'];
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    for (var i = 0; i < screens.length; i++) {
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      $(screens[i]).hidden = screens[i] != screen;
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      // Hiding an iframe unfortunately doesn't remove it or its contents from
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      // tabbing order. To hack around this:
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      // - Hide the content document (if it exists), so nested elements won't
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      //   receive focus and relinquish focus if they already have it.
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      // - Set tabIndex = -1 on the iframe, so it doesn't get focused itself.
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      //
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      // See https://bugs.webkit.org/show_bug.cgi?id=55861
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      iframes = $(screens[i]).getElementsByTagName('iframe');
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      for (var j = 0; j < iframes.length; j++) {
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        var display = '';
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        if (screens[i] != screen) {
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen          display = 'none';
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen          iframes[j].tabIndex = -1;
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        } else {
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen          display = 'block';
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen          iframes[j].removeAttribute('tabIndex');
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        }
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        if (iframes[j].contentDocument && iframes[j].contentDocument.body) {
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen          iframes[j].contentDocument.body.style.display = display;
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        }
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      }
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    }
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  function showInitialScreen() {
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    var args = JSON.parse(chrome.dialogArguments);
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    showScreen(args.initialScreen);
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  return {
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    showScreen: showScreen,
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    showInitialScreen: showInitialScreen
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  };
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen});
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsendocument.addEventListener('DOMContentLoaded',
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                          enterpriseEnrollment.showInitialScreen);
49