15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Called by the common.js module.
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)function moduleDidLoad() {
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // The module is not hidden by default so we can easily see if the plugin
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // failed to load.
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  common.hideModule();
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Called by the common.js module.
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)function handleMessage(message) {
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (typeof message.data === "string") {
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    // We got an error from the NaCl module.
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    common.logMessage('Error: ' + message.data);
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return;
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // We expect that the message looks like this:
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // [{
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  //    name: "...", displayName: "...", state: "...", type: "...", MTU: 1234,
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  //    ipAddresses: ["...", "..."]},
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  //  {...},
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // ]
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  //
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Append a <tr> to the <tbody> for each interface in the array.
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // The order in the .html file is:
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // index, display name, name, type, state, ip addresses, MTU.
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  var net_interfaces = message.data;
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  var tbodyEl = document.querySelector('tbody');
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // First, clear the tbody.
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  while (tbodyEl.firstChild) {
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    tbodyEl.removeChild(tbodyEl.firstChild);
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  for (var i = 0; i < net_interfaces.length; ++i) {
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    var net_interface = net_interfaces[i];
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    var trEl = document.createElement('tr');
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    trEl.appendChild(makeTd(i));
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    trEl.appendChild(makeTd(net_interface.displayName));
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    trEl.appendChild(makeTd(net_interface.name));
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    trEl.appendChild(makeTd(net_interface.type));
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    trEl.appendChild(makeTd(net_interface.state));
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    // ipAddresses is an array of strings. Let's join them with a comma.
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    trEl.appendChild(makeTd(net_interface.ipAddresses.join(', ')));
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    trEl.appendChild(makeTd(net_interface.MTU));
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    tbodyEl.appendChild(trEl);
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)function makeTd(text) {
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  var tdEl = document.createElement('td');
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  tdEl.textContent = text;
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return tdEl;
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
58