| Index: netlog_viewer/chromeos_view.js
|
| diff --git a/netlog_viewer/chromeos_view.js b/netlog_viewer/chromeos_view.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6411228ca4e76cd9cc30ebc3745925c61aacfd9e
|
| --- /dev/null
|
| +++ b/netlog_viewer/chromeos_view.js
|
| @@ -0,0 +1,252 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +/**
|
| + * This view displays information on ChromeOS specific features.
|
| + */
|
| +var CrosView = (function() {
|
| + 'use strict';
|
| +
|
| + var fileContent;
|
| + var passcode = '';
|
| +
|
| + /**
|
| + * Clear file input div
|
| + *
|
| + * @private
|
| + */
|
| + function clearFileInput_() {
|
| + $(CrosView.IMPORT_DIV_ID).innerHTML = $(CrosView.IMPORT_DIV_ID).innerHTML;
|
| + $(CrosView.IMPORT_ONC_ID).addEventListener('change',
|
| + handleFileChangeEvent_,
|
| + false);
|
| + }
|
| +
|
| + /**
|
| + * Send file contents and passcode to C++ cros network library.
|
| + *
|
| + * @private
|
| + */
|
| + function importONCFile_() {
|
| + clearParseStatus_();
|
| + if (fileContent)
|
| + g_browser.importONCFile(fileContent, passcode);
|
| + else
|
| + setParseStatus_('ONC file parse failed: cannot read file');
|
| + clearFileInput_();
|
| + }
|
| +
|
| + /**
|
| + * Set the passcode var, and trigger onc import.
|
| + *
|
| + * @param {string} value The passcode value.
|
| + * @private
|
| + */
|
| + function setPasscode_(value) {
|
| + passcode = value;
|
| + if (passcode)
|
| + importONCFile_();
|
| + }
|
| +
|
| + /**
|
| + * Unhide the passcode prompt input field and give it focus.
|
| + *
|
| + * @private
|
| + */
|
| + function promptForPasscode_() {
|
| + $(CrosView.PASSCODE_ID).hidden = false;
|
| + $(CrosView.PASSCODE_INPUT_ID).focus();
|
| + $(CrosView.PASSCODE_INPUT_ID).select();
|
| + }
|
| +
|
| + /**
|
| + * Set the fileContent var, and trigger onc import if the file appears to
|
| + * not be encrypted, or prompt for passcode if the file is encrypted.
|
| + *
|
| + * @private
|
| + * @param {string} text contents of selected file.
|
| + */
|
| + function setFileContent_(result) {
|
| + fileContent = result;
|
| + // Parse the JSON to get at the top level "Type" property.
|
| + var jsonObject;
|
| + // Ignore any parse errors: they'll get handled in the C++ import code.
|
| + try {
|
| + jsonObject = JSON.parse(fileContent);
|
| + } catch (error) {}
|
| + // Check if file is encrypted.
|
| + if (jsonObject &&
|
| + jsonObject.hasOwnProperty('Type') &&
|
| + jsonObject.Type == 'EncryptedConfiguration') {
|
| + promptForPasscode_();
|
| + } else {
|
| + importONCFile_();
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Clear ONC file parse status. Clears and hides the parse status div.
|
| + *
|
| + * @private
|
| + */
|
| + function clearParseStatus_(error) {
|
| + var parseStatus = $(CrosView.PARSE_STATUS_ID);
|
| + parseStatus.hidden = true;
|
| + parseStatus.textContent = '';
|
| + }
|
| +
|
| + /**
|
| + * Set ONC file parse status.
|
| + *
|
| + * @private
|
| + */
|
| + function setParseStatus_(error) {
|
| + var parseStatus = $(CrosView.PARSE_STATUS_ID);
|
| + parseStatus.hidden = false;
|
| + parseStatus.textContent = error ?
|
| + 'ONC file parse failed: ' + error : 'ONC file successfully parsed';
|
| + reset_();
|
| + }
|
| +
|
| + /**
|
| + * Set storing debug logs status.
|
| + *
|
| + * @private
|
| + */
|
| + function setStoreDebugLogsStatus_(status) {
|
| + $(CrosView.STORE_DEBUG_LOGS_STATUS_ID).innerText = status;
|
| + }
|
| +
|
| + /**
|
| + * Set status for current debug mode.
|
| + *
|
| + * @private
|
| + */
|
| + function setNetworkDebugModeStatus_(status) {
|
| + $(CrosView.DEBUG_STATUS_ID).innerText = status;
|
| + }
|
| +
|
| + /**
|
| + * An event listener for the file selection field.
|
| + *
|
| + * @private
|
| + */
|
| + function handleFileChangeEvent_(event) {
|
| + clearParseStatus_();
|
| + var file = event.target.files[0];
|
| + var reader = new FileReader();
|
| + reader.onloadend = function(e) {
|
| + setFileContent_(reader.result);
|
| + };
|
| + reader.readAsText(file);
|
| + }
|
| +
|
| + /**
|
| + * Add event listeners for the file selection, passcode input
|
| + * fields, for the button for debug logs storing and for buttons
|
| + * for debug mode selection.
|
| + *
|
| + * @private
|
| + */
|
| + function addEventListeners_() {
|
| + $(CrosView.IMPORT_ONC_ID).addEventListener('change',
|
| + handleFileChangeEvent_,
|
| + false);
|
| +
|
| + $(CrosView.PASSCODE_INPUT_ID).addEventListener('change', function(event) {
|
| + setPasscode_(this.value);
|
| + }, false);
|
| +
|
| + $(CrosView.STORE_DEBUG_LOGS_ID).addEventListener('click', function(event) {
|
| + $(CrosView.STORE_DEBUG_LOGS_STATUS_ID).innerText = '';
|
| + g_browser.storeDebugLogs();
|
| + }, false);
|
| +
|
| + $(CrosView.DEBUG_WIFI_ID).addEventListener('click', function(event) {
|
| + setNetworkDebugMode_('wifi');
|
| + }, false);
|
| + $(CrosView.DEBUG_ETHERNET_ID).addEventListener('click', function(event) {
|
| + setNetworkDebugMode_('ethernet');
|
| + }, false);
|
| + $(CrosView.DEBUG_CELLULAR_ID).addEventListener('click', function(event) {
|
| + setNetworkDebugMode_('cellular');
|
| + }, false);
|
| + $(CrosView.DEBUG_WIMAX_ID).addEventListener('click', function(event) {
|
| + setNetworkDebugMode_('wimax');
|
| + }, false);
|
| + $(CrosView.DEBUG_NONE_ID).addEventListener('click', function(event) {
|
| + setNetworkDebugMode_('none');
|
| + }, false);
|
| + }
|
| +
|
| + /**
|
| + * Reset fileContent and passcode vars.
|
| + *
|
| + * @private
|
| + */
|
| + function reset_() {
|
| + fileContent = undefined;
|
| + passcode = '';
|
| + $(CrosView.PASSCODE_ID).hidden = true;
|
| + }
|
| +
|
| + /**
|
| + * Enables or disables debug mode for a specified subsystem.
|
| + *
|
| + * @private
|
| + */
|
| + function setNetworkDebugMode_(subsystem) {
|
| + $(CrosView.DEBUG_STATUS_ID).innerText = '';
|
| + g_browser.setNetworkDebugMode(subsystem);
|
| + }
|
| +
|
| + /**
|
| + * @constructor
|
| + * @extends {DivView}
|
| + */
|
| + function CrosView() {
|
| + assertFirstConstructorCall(CrosView);
|
| +
|
| + // Call superclass's constructor.
|
| + DivView.call(this, CrosView.MAIN_BOX_ID);
|
| +
|
| + g_browser.addCrosONCFileParseObserver(this);
|
| + g_browser.addStoreDebugLogsObserver(this);
|
| + g_browser.addSetNetworkDebugModeObserver(this);
|
| + addEventListeners_();
|
| + }
|
| +
|
| + CrosView.TAB_ID = 'tab-handle-chromeos';
|
| + CrosView.TAB_NAME = 'ChromeOS';
|
| + CrosView.TAB_HASH = '#chromeos';
|
| +
|
| + CrosView.MAIN_BOX_ID = 'chromeos-view-tab-content';
|
| + CrosView.IMPORT_DIV_ID = 'chromeos-view-import-div';
|
| + CrosView.IMPORT_ONC_ID = 'chromeos-view-import-onc';
|
| + CrosView.PASSCODE_ID = 'chromeos-view-password-div';
|
| + CrosView.PASSCODE_INPUT_ID = 'chromeos-view-onc-password';
|
| + CrosView.PARSE_STATUS_ID = 'chromeos-view-parse-status';
|
| + CrosView.STORE_DEBUG_LOGS_ID = 'chromeos-view-store-debug-logs';
|
| + CrosView.STORE_DEBUG_LOGS_STATUS_ID = 'chromeos-view-store-debug-logs-status';
|
| + CrosView.DEBUG_WIFI_ID = 'chromeos-view-network-debugging-wifi';
|
| + CrosView.DEBUG_ETHERNET_ID = 'chromeos-view-network-debugging-ethernet';
|
| + CrosView.DEBUG_CELLULAR_ID = 'chromeos-view-network-debugging-cellular';
|
| + CrosView.DEBUG_WIMAX_ID = 'chromeos-view-network-debugging-wimax';
|
| + CrosView.DEBUG_NONE_ID = 'chromeos-view-network-debugging-none';
|
| + CrosView.DEBUG_STATUS_ID = 'chromeos-view-network-debugging-status';
|
| +
|
| + cr.addSingletonGetter(CrosView);
|
| +
|
| + CrosView.prototype = {
|
| + // Inherit from DivView.
|
| + __proto__: DivView.prototype,
|
| +
|
| + onONCFileParse: setParseStatus_,
|
| + onStoreDebugLogs: setStoreDebugLogsStatus_,
|
| + onSetNetworkDebugMode: setNetworkDebugModeStatus_,
|
| + };
|
| +
|
| + return CrosView;
|
| +})();
|
| +
|
|
|