1// Copyright (c) 2011 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* This variable structure is here to document the structure that the template
7* expects to correctly populate the page.
8*/
9var moduleListDataFormat = {
10  'moduleList': [
11  {
12    'type': 'The type of module found',
13    'type_description':
14    'The type of module (string), defaults to blank for regular modules',
15    'status': 'The module status',
16    'location': 'The module path, not including filename',
17    'name': 'The name of the module',
18    'product_name': 'The name of the product the module belongs to',
19    'description': 'The module description',
20    'version': 'The module version',
21    'digital_signer': 'The signer of the digital certificate for the module',
22    'recommended_action': 'The help tips bitmask',
23    'possible_resolution': 'The help tips in string form',
24    'help_url': 'The link to the Help Center article'
25  }
26]
27};
28
29/**
30* Takes the |moduleListData| input argument which represents data about
31* the currently available modules and populates the html jstemplate
32* with that data. It expects an object structure like the above.
33* @param {Object} moduleListData Information about available modules.
34*/
35function renderTemplate(moduleListData) {
36  // This is the javascript code that processes the template:
37  var input = new JsEvalContext(moduleListData);
38  var output = $('modulesTemplate');
39  jstProcess(input, output);
40}
41
42/**
43* Asks the C++ ConflictsDOMHandler to get details about the available modules
44* and return detailed data about the configuration. The ConflictsDOMHandler
45* should reply to returnModuleList() (below).
46*/
47function requestModuleListData() {
48  chrome.send('requestModuleList');
49}
50
51/**
52* Called by the WebUI to re-populate the page with data representing the
53* current state of installed modules.
54* @param {Object} moduleListData Information about available modules.
55*/
56function returnModuleList(moduleListData) {
57  renderTemplate(moduleListData);
58  $('loading-message').style.visibility = 'hidden';
59  $('body-container').style.visibility = 'visible';
60}
61
62// Get data and have it displayed upon loading.
63document.addEventListener('DOMContentLoaded', requestModuleListData);
64