Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 // -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 Components.utils.import("resource://gre/modules/Services.jsm");
9 var gConsole, gConsoleBundle, gTextBoxEval, gEvaluator, gCodeToEvaluate;
10 var gFilter;
12 /* :::::::: Console Initialization ::::::::::::::: */
14 window.onload = function()
15 {
16 gConsole = document.getElementById("ConsoleBox");
17 gConsoleBundle = document.getElementById("ConsoleBundle");
18 gTextBoxEval = document.getElementById("TextboxEval");
19 gEvaluator = document.getElementById("Evaluator");
20 gFilter = document.getElementById("Filter");
22 updateSortCommand(gConsole.sortOrder);
23 updateModeCommand(gConsole.mode);
25 gEvaluator.addEventListener("load", loadOrDisplayResult, true);
26 }
28 /* :::::::: Console UI Functions ::::::::::::::: */
30 function changeFilter()
31 {
32 gConsole.filter = gFilter.value;
34 document.persist("ConsoleBox", "filter");
35 }
37 function changeMode(aMode)
38 {
39 switch (aMode) {
40 case "Errors":
41 case "Warnings":
42 case "Messages":
43 gConsole.mode = aMode;
44 break;
45 case "All":
46 gConsole.mode = null;
47 }
49 document.persist("ConsoleBox", "mode");
50 }
52 function clearConsole()
53 {
54 gConsole.clear();
55 }
57 function changeSortOrder(aOrder)
58 {
59 updateSortCommand(gConsole.sortOrder = aOrder);
60 }
62 function updateSortCommand(aOrder)
63 {
64 var orderString = aOrder == 'reverse' ? "Descend" : "Ascend";
65 var bc = document.getElementById("Console:sort"+orderString);
66 bc.setAttribute("checked", true);
68 orderString = aOrder == 'reverse' ? "Ascend" : "Descend";
69 bc = document.getElementById("Console:sort"+orderString);
70 bc.setAttribute("checked", false);
71 }
73 function updateModeCommand(aMode)
74 {
75 /* aMode can end up invalid if it set by an extension that replaces */
76 /* mode and then it is uninstalled or disabled */
77 var bc = document.getElementById("Console:mode" + aMode) ||
78 document.getElementById("Console:modeAll");
79 bc.setAttribute("checked", true);
80 }
82 function onEvalKeyPress(aEvent)
83 {
84 if (aEvent.keyCode == 13)
85 evaluateTypein();
86 }
88 function evaluateTypein()
89 {
90 gCodeToEvaluate = gTextBoxEval.value;
91 // reset the iframe first; the code will be evaluated in loadOrDisplayResult
92 // below, once about:blank has completed loading (see bug 385092)
93 gEvaluator.contentWindow.location = "about:blank";
94 }
96 function loadOrDisplayResult()
97 {
98 if (gCodeToEvaluate) {
99 gEvaluator.contentWindow.location = "javascript: " +
100 gCodeToEvaluate.replace(/%/g, "%25");
101 gCodeToEvaluate = "";
102 return;
103 }
105 var resultRange = gEvaluator.contentDocument.createRange();
106 resultRange.selectNode(gEvaluator.contentDocument.documentElement);
107 var result = resultRange.toString();
108 if (result)
109 Services.console.logStringMessage(result);
110 // or could use appendMessage which doesn't persist
111 }