зеркало из https://github.com/mozilla/gecko-dev.git
First Checked In.
This commit is contained in:
Родитель
b244931153
Коммит
06a9f2c2e7
|
@ -0,0 +1,313 @@
|
|||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/* Main Composer window debug menu functions */
|
||||
|
||||
// --------------------------- Output ---------------------------
|
||||
|
||||
function EditorGetText()
|
||||
{
|
||||
if (editorShell) {
|
||||
dump("Getting text\n");
|
||||
var outputText = editorShell.GetContentsAs("text/plain", 2);
|
||||
dump(outputText + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
function EditorGetHTML()
|
||||
{
|
||||
if (editorShell) {
|
||||
dump("Getting HTML\n");
|
||||
var outputHTML = editorShell.GetContentsAs("text/html", 0);
|
||||
dump(outputHTML + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
function EditorGetXIF()
|
||||
{
|
||||
if (window.editorShell) {
|
||||
dump("Getting XIF\n");
|
||||
var outputHTML = editorShell.GetContentsAs("text/xif", 2);
|
||||
dump(outputHTML + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
function EditorDumpContent()
|
||||
{
|
||||
if (window.editorShell) {
|
||||
dump("============== Content Tree: ================\n");
|
||||
window.editorShell.DumpContentTree();
|
||||
}
|
||||
}
|
||||
|
||||
function EditorInsertText(textToInsert)
|
||||
{
|
||||
editorShell.InsertText(textToInsert);
|
||||
}
|
||||
|
||||
function EditorTestSelection()
|
||||
{
|
||||
dump("Testing selection\n");
|
||||
var selection = editorShell.editorSelection;
|
||||
if (!selection)
|
||||
{
|
||||
dump("No selection!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
dump("Selection contains:\n");
|
||||
dump(selection.toString() + "\n");
|
||||
|
||||
var output;
|
||||
|
||||
dump("\n====== Selection as XIF =======================\n");
|
||||
output = editorShell.GetContentsAs("text/xif", 1);
|
||||
dump(output + "\n\n");
|
||||
|
||||
dump("====== Selection as unformatted text ==========\n");
|
||||
output = editorShell.GetContentsAs("text/plain", 1);
|
||||
dump(output + "\n\n");
|
||||
|
||||
dump("====== Selection as formatted text ============\n");
|
||||
output = editorShell.GetContentsAs("text/plain", 3);
|
||||
dump(output + "\n\n");
|
||||
|
||||
dump("====== Selection as HTML ======================\n");
|
||||
output = editorShell.GetContentsAs("text/html", 1);
|
||||
dump(output + "\n\n");
|
||||
|
||||
dump("====== Length and status =====================\n");
|
||||
output = "Document is ";
|
||||
if (editorShell.documentIsEmpty)
|
||||
output += "empty\n";
|
||||
else
|
||||
output += "not empty\n";
|
||||
output += "Document length is " + editorShell.documentLength + " characters";
|
||||
dump(output + "\n\n");
|
||||
}
|
||||
|
||||
function EditorTestTableLayout()
|
||||
{
|
||||
var table = editorShell.GetElementOrParentByTagName("table", null);
|
||||
if (!table) {
|
||||
dump("Enclosing Table not found: Place caret in a table cell to do this test\n\n");
|
||||
return;
|
||||
}
|
||||
|
||||
var cell;
|
||||
var startRowIndexObj = new Object();
|
||||
var startColIndexObj = new Object();
|
||||
var rowSpanObj = new Object();
|
||||
var colSpanObj = new Object();
|
||||
var isSelectedObj = new Object();
|
||||
var startRowIndex = 0;
|
||||
var startColIndex = 0;
|
||||
var rowSpan;
|
||||
var colSpan;
|
||||
var isSelected;
|
||||
var col = 0;
|
||||
var row = 0;
|
||||
var rowCount = 0;
|
||||
var maxColCount = 0;
|
||||
var doneWithRow = false;
|
||||
var doneWithCol = false;
|
||||
|
||||
dump("\n\n\n************ Starting Table Layout test ************\n");
|
||||
|
||||
// Note: We could also get the number of rows, cols and use for loops,
|
||||
// but this tests using out-of-bounds offsets to detect end of row or column
|
||||
|
||||
while (!doneWithRow) // Iterate through rows
|
||||
{
|
||||
while(!doneWithCol) // Iterate through cells in the row
|
||||
{
|
||||
try {
|
||||
cell = editorShell.GetCellDataAt(table, row, col, startRowIndexObj, startColIndexObj,
|
||||
rowSpanObj, colSpanObj, isSelectedObj);
|
||||
|
||||
if (cell)
|
||||
{
|
||||
rowSpan = rowSpanObj.value;
|
||||
colSpan = colSpanObj.value;
|
||||
isSelected = isSelectedObj.value;
|
||||
|
||||
dump("Row,Col: "+row+","+col+" StartRow,StartCol: "+startRowIndexObj.value+","+startColIndexObj.value+" RowSpan="+rowSpan+" ColSpan="+colSpan);
|
||||
if (isSelected)
|
||||
dump(" Cell is selected\n");
|
||||
else
|
||||
dump(" Cell is NOT selected\n");
|
||||
|
||||
// Save the indexes of a cell that will span across the cellmap grid
|
||||
if (rowSpan > 1)
|
||||
startRowIndex = startRowIndexObj.value;
|
||||
if (colSpan > 1)
|
||||
startColIndex = startColIndexObj.value;
|
||||
|
||||
// Initialize these for efficient spanned-cell search
|
||||
startRowIndexObj.value = startRowIndex;
|
||||
startColIndexObj.value = startColIndex;
|
||||
|
||||
col++;
|
||||
} else {
|
||||
doneWithCol = true;
|
||||
// Get maximum number of cells in any row
|
||||
if (col > maxColCount)
|
||||
maxColCount = col;
|
||||
dump(" End of row found\n\n");
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
dump(" *** GetCellDataAt barfed at Row,Col:"+row+","+col+" ***\n\n");
|
||||
col++;
|
||||
}
|
||||
}
|
||||
if (col == 0) {
|
||||
// Didn't find a cell in the first col of a row,
|
||||
// thus no more rows in table
|
||||
doneWithRow = true;
|
||||
rowCount = row;
|
||||
dump("No more rows in table\n\n");
|
||||
} else {
|
||||
// Setup for next row
|
||||
col = 0;
|
||||
row++;
|
||||
doneWithCol = false;
|
||||
dump("Setup for next row\n");
|
||||
}
|
||||
}
|
||||
dump("Counted during scan: Number of rows="+rowCount+" Number of Columns="+maxColCount+"\n");
|
||||
rowCount = editorShell.GetTableRowCount(table);
|
||||
maxColCount = editorShell.GetTableColumnCount(table);
|
||||
dump("From nsITableLayout: Number of rows="+rowCount+" Number of Columns="+maxColCount+"\n****** End of Table Layout Test *****\n\n");
|
||||
}
|
||||
|
||||
function EditorShowEmbeddedObjects()
|
||||
{
|
||||
dump("\nEmbedded Objects:\n");
|
||||
var objectArray = editorShell.GetEmbeddedObjects();
|
||||
dump(objectArray.Count() + " embedded objects\n");
|
||||
for (var i=0; i < objectArray.Count(); ++i)
|
||||
dump(objectArray.GetElementAt(i) + "\n");
|
||||
}
|
||||
|
||||
function EditorUnitTests()
|
||||
{
|
||||
dump("Running Unit Tests\n");
|
||||
editorShell.RunUnitTests();
|
||||
}
|
||||
|
||||
function EditorTestDocument()
|
||||
{
|
||||
dump("Getting document\n");
|
||||
var theDoc = editorShell.editorDocument;
|
||||
if (theDoc)
|
||||
{
|
||||
dump("Got the doc\n");
|
||||
dump("Document name:" + theDoc.nodeName + "\n");
|
||||
dump("Document type:" + theDoc.doctype + "\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
dump("Failed to get the doc\n");
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------- Logging stuff ---------------------------
|
||||
|
||||
function EditorExecuteScript(fileSpec)
|
||||
{
|
||||
fileSpec.openStreamForReading();
|
||||
|
||||
var buf = { value:null };
|
||||
var tmpBuf = { value:null };
|
||||
var didTruncate = { value:false };
|
||||
var lineNum = 0;
|
||||
var ex;
|
||||
|
||||
// Log files can be quite huge, so read in a line
|
||||
// at a time and execute it:
|
||||
|
||||
while (!fileSpec.eof())
|
||||
{
|
||||
buf.value = "";
|
||||
didTruncate.value = true;
|
||||
|
||||
// Keep looping until we get a complete line of
|
||||
// text, or we hit the end of file:
|
||||
|
||||
while (didTruncate.value && !fileSpec.eof())
|
||||
{
|
||||
didTruncate.value = false;
|
||||
fileSpec.readLine(tmpBuf, 1024, didTruncate);
|
||||
buf.value += tmpBuf.value;
|
||||
|
||||
// XXX Need to null out tmpBuf.value to avoid crashing
|
||||
// XXX in some JavaScript string allocation method.
|
||||
// XXX This is probably leaking the buffer allocated
|
||||
// XXX by the readLine() implementation.
|
||||
|
||||
tmpBuf.value = null;
|
||||
}
|
||||
|
||||
++lineNum;
|
||||
|
||||
try { eval(buf.value); }
|
||||
catch(ex) { dump("Playback ERROR: Line " + lineNum + " " + ex + "\n"); return; }
|
||||
}
|
||||
|
||||
buf.value = null;
|
||||
}
|
||||
|
||||
function EditorGetScriptFileSpec()
|
||||
{
|
||||
var fs = Components.classes["component://netscape/filespec"].createInstance();
|
||||
fs = fs.QueryInterface(Components.interfaces.nsIFileSpec);
|
||||
fs.unixStyleFilePath = "journal.js";
|
||||
return fs;
|
||||
}
|
||||
|
||||
function EditorStartLog()
|
||||
{
|
||||
var fs;
|
||||
|
||||
fs = EditorGetScriptFileSpec();
|
||||
editorShell.StartLogging(fs);
|
||||
contentWindow.focus();
|
||||
|
||||
fs = null;
|
||||
}
|
||||
|
||||
function EditorStopLog()
|
||||
{
|
||||
editorShell.StopLogging();
|
||||
contentWindow.focus();
|
||||
}
|
||||
|
||||
function EditorRunLog()
|
||||
{
|
||||
var fs;
|
||||
fs = EditorGetScriptFileSpec();
|
||||
EditorExecuteScript(fs);
|
||||
contentWindow.focus();
|
||||
}
|
||||
|
||||
|
Загрузка…
Ссылка в новой задаче