Reviewed by Darin.
[WebKit-https.git] / WebKitTools / Drosera / console.js
1 /*
2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer. 
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution. 
13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 var inputElement = null;
30 var mainWindow = window.opener;
31
32 function loaded()
33 {
34     inputElement = document.getElementById("input");
35     inputElement.addEventListener("keydown", inputKeyDown, false);
36     inputElement.focus();
37 }
38
39 function inputKeyDown(event)
40 {
41     if (event.keyCode == 13 && !event.altKey) {
42         if (mainWindow.isPaused() && mainWindow.currentStack) {
43             sendScript(inputElement.innerText);
44             inputElement.innerText = "";
45             inputElement.focus();
46         } else
47             alert("The debugger needs to be paused.\tIn order to evaluate your script input you need to pause the debugger in the context of another script.");
48         event.preventDefault();
49     }
50 }
51
52 function sendScript(script)
53 {
54     var history = document.getElementById("history");
55     var row = document.createElement("div");
56     row.className = "row";
57     if (history.childNodes.length % 2)
58         row.className += " alt";
59
60     var expression = document.createElement("div");
61     expression.className = "expression";
62     expression.innerText = script;
63     row.appendChild(expression);
64
65     var result = document.createElement("div");
66     result.className = "result";
67     result.innerText = mainWindow.DebuggerDocument.evaluateScript_inCallFrame_(script, mainWindow.currentCallFrame.index);
68     row.appendChild(result);
69
70     history.appendChild(row);
71     history.scrollTop = history.scrollHeight;
72
73     if (script.indexOf("="))
74         mainWindow.currentCallFrame.loadVariables();
75 }