diff options
Diffstat (limited to 'comm/suite/extensions')
17 files changed, 992 insertions, 0 deletions
diff --git a/comm/suite/extensions/built_in_addons.json b/comm/suite/extensions/built_in_addons.json new file mode 100644 index 0000000000..7e28322454 --- /dev/null +++ b/comm/suite/extensions/built_in_addons.json @@ -0,0 +1 @@ +{ "system": [] } diff --git a/comm/suite/extensions/debugQA/content/EditorInitPage.html b/comm/suite/extensions/debugQA/content/EditorInitPage.html new file mode 100644 index 0000000000..bdfa194337 --- /dev/null +++ b/comm/suite/extensions/debugQA/content/EditorInitPage.html @@ -0,0 +1,159 @@ +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<html> +<head> +<title>Ender HTML Test Page</title> +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> + +<style type="text/css"> +/* Don't set attributes here, or they can't be changed! */ +p.note:before { content: "Note: "; } + +</style> + +</head> +<body> + +<h2>Here's the deal...</h2> + +<p>This is a good place to add in <b>html</b> to aid in testing features +under development. It's also a great place to not use latin. +</p> + +<!-- This is a comment; + Here is more of the comment. +--> + +<p> +Here is an acute entity: "á". +This sentence has two &nbsp; tags between each word. +</p> +<hr size="2" width="100%"/> +<div> +<p> +This paragraph is inside a <div>. <a href="http://www.seamonkey-project.org/">Here is some +rather boring text that is a link.</a> Now is the time for all good men (and women) +to come to the SeaMonkey project party. And bring the quick brown fox and the lazy dog with you. +For your editing pleasure, here is some <span style="font-weight:bold;">inline style</span> for you. +<a name="test1"></a>A Named Anchor is just before this sentence. +</p> +</div> + +<p class="note"> +"This paragraph has "class=note", so that we can play with styles." +For example, we might insert generated content, like "Note: " before this +paragraph. +</p> + +<p> +Here is some very run-o-the-mill text in a paragraph tag, for those +of you who are into that kind of thing. I think at this point I shall +regale you with some of my inestimable poetry, which will be presented +in blockquote mode for your reading pleasure. This particular sample +was written when I was eleven years old, but is remarkably similar to +the writings of my later "hard-livin" years. It's titled "Reruns": +</p> + +<blockquote class="poem" type="cite"> +<h4>Reruns</h4> +Reruns are about as much fun,<br> +as your dad taking all your mun,<br> +and giving it to a nun,<br> +as a contribution. +</blockquote> + +<br> +<br> +<br> +<br> +There are 4 br tags on either side of this sentence. +<br> +<br> +<br> +<br> + +This text has two spaces between every word +<u>Underlined text with space at end </u><b> and bold text with a space at front</b> + +<p>A random list of things to do</p> +<ul> +<li>Status report</li> +<li>Fix bugs</li> +<li>Call home</li> +</ul> + +<pre> + Here is some + preformatted text. + Here is some + preformatted text. +</pre> + +<ol> +<li>list item 1</li> +<li>list item 2</li> +<li>list item 3</li> +</ol> + +<ol class="roman"> +<li>list item with child paragraphs + <p> + First child paragraph + </p> + <p> + Second child paragraph + </p> + <p> + Third child paragraph + </p> +</li> +<li> +Another list item +</li> +<li> +Something else. +</li> +<li> +Another thing. +</li> +</ol> + + +<table border="1"> +<tr><td>cell 1 </td><td>cell 2 </td><td>cell 3 </td></tr> +<tr><td>cell 4 </td><td>cell 5 </td><td>cell 6 </td></tr> +<tr><td>cell 7 </td><td>cell 8 </td><td>cell 9 </td></tr> +</table> + + +<table border="1" id="bigtable"> +<tr><td>big cell 1 </td> +<td> +<table BORDER> +<tr><td>nested cell 1 </td><td>nested cell 2 </td></tr> +<tr><td>nested cell 3 </td><td>nested cell 4 </td></tr> +</table> +</td> +</tr> +<tr><td> +<table BORDER> +<tr><td>nested cell 5 </td><td>nested cell 6 </td></tr> +<tr><td>nested cell 7 </td><td>nested cell 8 </td></tr> +</table> +</td><td>big cell 4 </td></tr> +</table> + +<p> +Japanese for ya: プロ野球速報 +</p> +<p> +One more paragraph for the road. A true Klingon fears not the atrocious +editing file format hoisted on us by html. Well, maybe he does, a little. +But he hides it well. +</p> + +</body> +</html> + diff --git a/comm/suite/extensions/debugQA/content/debugQAEditorOverlay.js b/comm/suite/extensions/debugQA/content/debugQAEditorOverlay.js new file mode 100644 index 0000000000..da9dc95ac0 --- /dev/null +++ b/comm/suite/extensions/debugQA/content/debugQAEditorOverlay.js @@ -0,0 +1,207 @@ +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* Main Composer window debug menu functions */ + +// --------------------------- Output --------------------------- + + +function EditorGetText() +{ + try { + dump("Getting text\n"); + var outputText = GetCurrentEditor().outputToString("text/plain", kOutputFormatted); + dump("<<" + outputText + ">>\n"); + } catch (e) {} +} + +function EditorGetHTML() +{ + try { + dump("Getting HTML\n"); + var outputHTML = GetCurrentEditor().outputToString("text/html", kOutputEncodeW3CEntities); + dump(outputHTML + "\n"); + } catch (e) {} +} + +function EditorInsertText(textToInsert) +{ + GetCurrentEditor().insertText(textToInsert); +} + +function EditorTestSelection() +{ + dump("Testing selection\n"); + var selection = GetCurrentEditor().selection; + if (!selection) + { + dump("No selection!\n"); + return; + } + + dump("Selection contains:\n"); + // 3rd param = column to wrap + dump(selection + .toStringWithFormat("text/plain", + kOutputFormatted | kOutputSelectionOnly, + 0) + "\n"); + + var output, i; + + dump("====== Selection as node and offsets==========\n"); + dump("rangeCount = " + selection.rangeCount + "\n"); + for (i = 0; i < selection.rangeCount; i++) + { + var range = selection.getRangeAt(i); + if (range) + { + dump("Range "+i+": StartParent="+range.startContainer.nodeName+", offset="+range.startOffset+"\n"); + dump("Range "+i+": EndParent="+range.endContainer.nodeName+", offset="+range.endOffset+"\n\n"); + } + } + + var editor = GetCurrentEditor(); + + dump("====== Selection as unformatted text ==========\n"); + output = editor.outputToString("text/plain", kOutputSelectionOnly); + dump(output + "\n\n"); + + dump("====== Selection as formatted text ============\n"); + output = editor.outputToString("text/plain", kOutputFormatted | kOutputSelectionOnly); + dump(output + "\n\n"); + + dump("====== Selection as HTML ======================\n"); + output = editor.outputToString("text/html", kOutputSelectionOnly); + dump(output + "\n\n"); + + dump("====== Selection as prettyprinted HTML ========\n"); + output = editor.outputToString("text/html", kOutputFormatted | kOutputSelectionOnly); + dump(output + "\n\n"); + + dump("====== Length and status =====================\n"); + output = "Document is "; + if (editor.documentIsEmpty) + output += "empty\n"; + else + output += "not empty\n"; + output += "Text length is " + editor.textLength + " characters"; + dump(output + "\n\n"); +} + +function EditorTestDocument() +{ + dump("Getting document\n"); + var theDoc = GetCurrentEditor().document; + 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"); + } +} + +// ------------------------ 3rd Party Transaction Test ------------------------ + + +function sampleJSTransaction() +{ + this.wrappedJSObject = this; +} + +sampleJSTransaction.prototype = { + + isTransient: false, + mStrData: "[Sample-JS-Transaction-Content]", + mObject: null, + mContainer: null, + mOffset: null, + + doTransaction: function() + { + if (this.mContainer.nodeType != Node.TEXT_NODE) + { + // We're not in a text node, so create one and + // we'll just insert it at (mContainer, mOffset). + + this.mObject = this.mContainer.ownerDocument.createTextNode(this.mStrData); + } + + this.redoTransaction(); + }, + + undoTransaction: function() + { + if (!this.mObject) + this.mContainer.deleteData(this.mOffset, this.mStrData.length); + else + this.mObject.remove(); + }, + + redoTransaction: function() + { + if (!this.mObject) + this.mContainer.insertData(this.mOffset, this.mStrData); + else + this.insert_node_at_point(this.mObject, this.mContainer, this.mOffset); + }, + + merge: function(aTxn) + { + // We don't do any merging! + + return false; + }, + + QueryInterface: function(aIID, theResult) + { + if (aIID.equals(Ci.nsITransaction) || + aIID.equals(Ci.nsISupports)) + return this; + + throw Cr.NS_ERROR_NO_INTERFACE; + }, + + insert_node_at_point: function(node, container, offset) + { + var childList = container.childNodes; + + if (childList.length == 0 || offset >= childList.length) + container.appendChild(node); + else + container.insertBefore(node, childList.item(offset)); + } +} + +function ExecuteJSTransactionViaEditor() +{ + try { + var editor = GetCurrentEditor(); + + var selection = editor.selection; + var range = selection.getRangeAt(0); + + var txn = new sampleJSTransaction(); + + txn.mContainer = range.startContainer; + txn.mOffset = range.startOffset; + + editor.doTransaction(txn); + } catch (e) { + dump("ExecuteJSTransactionViaEditor() failed!"); + } +} + +function EditorNewPlaintext(aUrl, aCharsetArg) +{ + window.openDialog( "chrome://debugqa/content/debugQATextEditorShell.xul", + "_blank", + "chrome,dialog=no,all", + aUrl || "about:blank", + aCharsetArg); +} diff --git a/comm/suite/extensions/debugQA/content/debugQAEditorOverlay.xul b/comm/suite/extensions/debugQA/content/debugQAEditorOverlay.xul new file mode 100644 index 0000000000..c27bc01f9f --- /dev/null +++ b/comm/suite/extensions/debugQA/content/debugQAEditorOverlay.xul @@ -0,0 +1,45 @@ +<?xml version="1.0"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<!DOCTYPE overlay [ +<!ENTITY % debugQAEditorOverlayDTD SYSTEM "chrome://debugqa/locale/debugQAEditorOverlay.dtd"> +%debugQAEditorOverlayDTD; +]> + +<overlay id="debugQAEditorOverlay" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <script src="chrome://debugQA/content/debugQAEditorOverlay.js"/> + + <menubar id="main-menubar"> + <menu id="debugMenu" label="&debugMenu.label;" insertbefore="menu_Help"> + <menupopup> + <menuitem label="&newEditorTestPage.label;" + oncommand="NewEditorWindow('chrome://debugqa/content/EditorInitPage.html');"/> + <menuitem label="&textEditorCmd.label;" + oncommand="EditorNewPlaintext();" /> + <menuitem label="&outputTextCmd.label;" + oncommand="EditorGetText()"/> + <menuitem label="&outputHTMLCmd.label;" + oncommand="EditorGetHTML()"/> + <menuseparator/> + <menuitem label="&insertTextCmd.label;" + oncommand="EditorInsertText('All good things come to those who wait. ')"/> + <menuseparator/> + <menuitem label="&testSelectionCmd.label;" + oncommand="EditorTestSelection()"/> + <menuitem label="&testDocumentCmd.label;" + oncommand="EditorTestDocument()"/> + <menuseparator/> + <menuitem label="&executeJSTransactionViaEditor.label;" + oncommand="ExecuteJSTransactionViaEditor()"/> + <menuseparator/> + <menuitem label="&setFocusCmd.label;" + oncommand="window.focus()"/> + </menupopup> + </menu> + </menubar> +</overlay> diff --git a/comm/suite/extensions/debugQA/content/debugQAMenuOverlay.js b/comm/suite/extensions/debugQA/content/debugQAMenuOverlay.js new file mode 100644 index 0000000000..ab79c2b661 --- /dev/null +++ b/comm/suite/extensions/debugQA/content/debugQAMenuOverlay.js @@ -0,0 +1,51 @@ +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +var { Services } = + ChromeUtils.import("resource://gre/modules/Services.jsm"); + +// "about:bloat" is available only when +// (the application is) compiled with |--enable-logrefcnt|. +if ("@mozilla.org/network/protocol/about;1?what=bloat" in Cc) + window.addEventListener("load", onLoadBloat); + +// Unhide (and enable) the Bloat menu and its associated separator. +function onLoadBloat() +{ + window.removeEventListener("load", onLoadBloat); + + // Ignore windows which don't get the Debug menu, like 'View Source'. + if (!document.getElementById("debugMenu")) + return; + + // Enable the menu, only if its feature is currently active. + var envSvc = Cc["@mozilla.org/process/environment;1"] + .getService(Ci.nsIEnvironment); + // Checking the environment variables is good enough, + // as the Bloat service doesn't report the status of its statistics feature. + if (envSvc.exists("XPCOM_MEM_BLOAT_LOG") || + envSvc.exists("XPCOM_MEM_LEAK_LOG")) + document.getElementById("bloatMenu").disabled = false; + + document.getElementById("bloatSeparator").hidden = false; + document.getElementById("bloatMenu").hidden = false; +} + +// Open a debug QA link from the menu in the current tab. +function openQAUrl(aUrl) +{ + openUILinkIn(aUrl, "current", + { triggeringPrincipal: + Services.scriptSecurityManager.createNullPrincipal({}), + }); +} + +// Flush the memory using minimizeMemoryUsage. +function flushMemory() { + Services.obs.notifyObservers(null, "child-mmu-request"); + Cc["@mozilla.org/memory-reporter-manager;1"] + .getService(Ci.nsIMemoryReporterManager) + .minimizeMemoryUsage(() => {}); +} diff --git a/comm/suite/extensions/debugQA/content/debugQAMenuOverlay.xul b/comm/suite/extensions/debugQA/content/debugQAMenuOverlay.xul new file mode 100644 index 0000000000..45167cbe75 --- /dev/null +++ b/comm/suite/extensions/debugQA/content/debugQAMenuOverlay.xul @@ -0,0 +1,150 @@ +<?xml version="1.0"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<overlay id="debugQAMenuOverlay" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + +<script src="chrome://debugQA/content/debugQAMenuOverlay.js"/> + + <!-- Menu --> + <menubar id="main-menubar"> + <!-- Menu for testing. --> + <menu id="debugMenu" accesskey="U" label="Debug" insertbefore="menu_Help"> + <menupopup id="menu_Debug_Popup"> + <menuitem label="Verification" + oncommand="openQAUrl('https://www.seamonkey-project.org/dev/qa-verification');"/> + + <menuseparator/> + + <menu label="Viewer Demos"> + <menupopup> + <menuitem label="#0 Basic Styles" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test0.html');"/> + <menuitem label="#1 CSS Styles" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test1.html');"/> + <menuitem label="#2 Images" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test2.html');"/> + <menuitem label="#3 Basic Tables" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test3.html');"/> + <menuitem label="#4 Simple Tables" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test4.html');"/> + <menuitem label="#5 More Styles" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test5.html');"/> + <menuitem label="#6 Deeply Nested Tables" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test6.html');"/> + <menuitem label="#7 Scaled Anim Image" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test7.html');"/> + <menuitem label="#8 Form" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test8.html');"/> + <menuitem label="#9 Frames" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test9.html');"/> + <menuitem label="#10 Anim Images" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test10.html');"/> + <menuitem label="#11 Fixed Positioning" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test11.html');"/> + <menuitem label="#12 More Fixed Pos" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test12.html');"/> + <menuitem label="#13 DHTML" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test13.html');"/> + <menuitem label="#16 Gfx Widgets" + oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test16.html');"/> + </menupopup> + </menu> + + <!-- XBL Test Suite all broken --> + <menu label="XBL Test Suite" hidden="true" disabled="true"> + <menupopup> + <menuitem label="#0 Remote XBL" + oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test0/test.xul');"/> + <menuitem label="#1 Technicolor DIV" + oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test1/test.html');"/> + <menuitem label="#2 Rollover Madness" + oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test2/test.html');"/> + <menuitem label="#3 Popups in HTML" + oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test3/test.html');"/> + <menuitem label="#4 Partition Magic" + oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test4/test.html');"/> + <menuitem label="#5 Sticky Notes" + oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test5/test.html');"/> + </menupopup> + </menu> + + <menu label="Internal Pages"> + <menupopup> + <menuitem label="Support Page" + oncommand="goAbout('support');"/> + <menuitem label="Networking Status" + oncommand="goAbout('networking');"/> + <menuitem label="Performance Status" + oncommand="goAbout('performance');"/> + <menuitem label="Memory Status" + oncommand="goAbout('memory');"/> + </menupopup> + </menu> + + <menuseparator/> + + <menuitem label="Composer (with test page)" + oncommand="NewEditorWindow('chrome://debugqa/content/EditorInitPage.html');"/> + <menuitem label="Flush Memory" + oncommand="flushMemory();"/> + <menuitem label="Show Configuration Editor" + oncommand="goAbout('config');"/> + </menupopup> + </menu> + + <menu id="qaMenu" accesskey="Q" label="QA" insertbefore="menu_Help"> + <menupopup id="qaMenuPopup"> + <menuitem label="Getting Involved" + oncommand="openQAUrl('https://www.seamonkey-project.org/dev/get-involved');"/> + <menuitem label="SeaMonkey QA" + oncommand="openQAUrl('https://wiki.mozilla.org/SeaMonkey:QA');"/> + <menuitem label="Useful Sites" + oncommand="openQAUrl('https://www.seamonkey-project.org/dev/useful-sites');"/> + + <menuseparator/> + + <menuitem label="Frequently Reported Bugs" + oncommand="openQAUrl('https://bugzilla.mozilla.org/duplicates.cgi');"/> + <menuitem label="Bug Writing Guidelines" + oncommand="openQAUrl('https://developer.mozilla.org/docs/Mozilla/QA/Bug_writing_guidelines');"/> + <menuitem label="File a Bug" + oncommand="openQAUrl('https://bugzilla.mozilla.org/enter_bug.cgi?format=guided#h=dupes|SeaMonkey');"/> + + <menuseparator/> + + <menuitem label="Bugs Filed Today" + oncommand="openQAUrl('https://bugzilla.mozilla.org/buglist.cgi?product=Core&product=MailNews+Core&product=SeaMonkey&chfieldfrom=0d&chfieldto=Now&chfield=%5BBug+creation%5D');"/> + <menuitem label="Tree Status" + oncommand="openQAUrl('https://treestatus.mozilla-releng.net/static/ui/treestatus/');"/> + <menuseparator/> + <menuitem label="Recent SeaMonkey website Checkins" + oncommand="openQAUrl('https://hg.mozilla.org/SeaMonkey/seamonkey-project-org/pushloghtml?startdate=2+weeks+ago&enddate=now');"/> + <menuitem label="Recent gitlab SeaMonkey website Checkins" + oncommand="openQAUrl('https://gitlab.com/seamonkey-project/website/activity/');"/> + <menuseparator/> + <menuitem label="Recent comm-central Checkins" + oncommand="openQAUrl('https://hg.mozilla.org/comm-central/pushloghtml?startdate=24+hours+ago&enddate=now');"/> + <menuitem label="Recent mozilla-central Checkins" + oncommand="openQAUrl('https://hg.mozilla.org/mozilla-central/pushloghtml?startdate=24+hours+ago&enddate=now');"/> + <menuitem label="Recent comm-esr102 Checkins" + oncommand="openQAUrl('https://hg.mozilla.org/releases/comm-esr102/pushloghtml?startdate=2+weeks+ago&enddate=now');"/> + <menuitem label="Recent mozilla-esr102 Checkins" + oncommand="openQAUrl('https://hg.mozilla.org/releases/mozilla-esr102/pushloghtml?startdate=2+weeks+ago&enddate=now');"/> + <menuitem label="Recent gitlab 2.53 comm Activity" + oncommand="openQAUrl('https://gitlab.com/seamonkey-project/seamonkey-2.53-comm/activity/');"/> + <menuitem label="Recent gitlab 2.53 mozilla Activity" + oncommand="openQAUrl('https://gitlab.com/seamonkey-project/seamonkey-2.53-mozilla/activity/');"/> + <menuitem label="Recent gitlab 2.53 l10n Activity" + oncommand="openQAUrl('https://gitlab.com/seamonkey-project/seamonkey-2.53-l10n/activity/');"/> + <menuseparator/> + <menuitem label="Daily unofficial 2.53 Builds" + oncommand="openQAUrl('https://www.wg9s.com/comm-253/');"/> + </menupopup> + </menu> + </menubar> + +</overlay> diff --git a/comm/suite/extensions/debugQA/content/debugQANavigatorOverlay.xul b/comm/suite/extensions/debugQA/content/debugQANavigatorOverlay.xul new file mode 100644 index 0000000000..2513c3827d --- /dev/null +++ b/comm/suite/extensions/debugQA/content/debugQANavigatorOverlay.xul @@ -0,0 +1,54 @@ +<?xml version="1.0"?> + +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<overlay id="debugQANavigatorOverlay" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <script> + <![CDATA[ + // Setting the build id is optional. + try { + if (Services.prefs.getBoolPref("debugQA.show.buildId")) + window.addEventListener("load", debugQABuildIDOnLoad, true); + } catch (e) {} + + // Set the title modifer to include the build id. + function debugQABuildIDOnLoad() { + window.removeEventListener("load", debugQABuildIDOnLoad, true); + + var appInfo = Cc["@mozilla.org/xre/app-info;1"] + .getService(Ci.nsIXULAppInfo); + + var bundle = document.getElementById("debugQANavigatorBundle"); + + var titlemodifier = + document.documentElement.getAttribute("titlemodifier") || + document.documentElement.getAttribute("titledefault"); + + titlemodifier = bundle.getFormattedString("titlemodifier", + [titlemodifier, + appInfo.appBuildID]); + + // On mac, with contenttitlesetting="true", the titlemodifier is removed + // and replaced with a titledefault attribute that holds the value of the + // titlemodifier attribute. We don't use titledefault, but let's remove + // it since we're adding back the titlemodifier. + document.documentElement.removeAttribute("titledefault"); + + // Set the new title modifier + document.documentElement.setAttribute("titlemodifier", titlemodifier); + + // Now set the title of the window + document.title = titlemodifier; + } + ]]> + </script> + + <stringbundleset id="stringbundleset"> + <stringbundle id="debugQANavigatorBundle" + src="chrome://debugQA/locale/debugQANavigatorOverlay.properties"/> + </stringbundleset> +</overlay> diff --git a/comm/suite/extensions/debugQA/content/debugQATextEditorShell.xul b/comm/suite/extensions/debugQA/content/debugQATextEditorShell.xul new file mode 100644 index 0000000000..65331db3ef --- /dev/null +++ b/comm/suite/extensions/debugQA/content/debugQATextEditorShell.xul @@ -0,0 +1,189 @@ +<?xml version="1.0"?> + +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<?xml-stylesheet href="chrome://editor/skin/editor.css" type="text/css"?> +<?xml-stylesheet href="chrome://editor/skin/editorPrimaryToolbar.css" type="text/css"?> +<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?> +<?xul-overlay href="chrome://editor/content/editingOverlay.xul"?> +<?xul-overlay href="chrome://communicator/content/charsetOverlay.xul"?> +<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?> +<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?> +<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?> +<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xul"?> +<?xul-overlay href="chrome://debugQA/content/debugQAEditorOverlay.xul"?> + +<!DOCTYPE window [ +<!ENTITY % debugQAEditorOverlayDTD SYSTEM "chrome://debugqa/locale/debugQAEditorOverlay.dtd"> +%debugQAEditorOverlayDTD; +<!ENTITY % editorDTD SYSTEM "chrome://editor/locale/editor.dtd"> +%editorDTD; +<!ENTITY % editorOverlayDTD SYSTEM "chrome://editor/locale/editorOverlay.dtd"> +%editorOverlayDTD; +]> + +<!-- NOTE: If we don't have "title" set, text editor doesn't work! --> +<window id="editorWindow" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + onload="TextEditorOnLoad()" + onunload="EditorShutdown()" + onclose="return Async.promiseSpinningly(EditorCanClose());" + onfocus="EditorOnFocus()" + contenttitlesetting="true" + title="" + titlemodifier="&textEditorWindow.titlemodifier;" + titlemenuseparator="&editorWindow.titlemodifiermenuseparator;" + toggletoolbar="true" + lightweightthemes="true" + lightweightthemesfooter="status-bar" + windowtype="composer:text" + macanimationtype="document" + drawtitle="true" + width="640" height="480" + screenX="10" screenY="10" + persist="screenX screenY width height sizemode"> + + <script src="chrome://editor/content/editor.js"/> + <script src="chrome://editor/content/ComposerCommands.js"/> + <script src="chrome://communicator/content/contentAreaClick.js"/> + <script src="chrome://global/content/printUtils.js"/> + <script src="chrome://global/content/nsDragAndDrop.js"/> + + <commandset id="editorCommands"> + <commandset id="commonEditorMenuItems"/> + <commandset id="composerEditMenuItems"/> + <commandset id="composerSaveMenuItems"/> + <commandset id="composerMenuItems"/> + <commandset id="tasksCommands"/> + </commandset> + + <!-- broadcaster nodes are appended here from the overlays --> + <broadcasterset id="mainBroadcasterSet"/> + + <!-- keys are appended from the overlay --> + <keyset id="editorKeys"> + <keyset id="tasksKeys"/> + <key id="showHideSidebar"/> + </keyset> + + <popupset id="contentAreaContextSet"/> + <popupset id="editorPopupSet"/> + + <vbox id="titlebar"/> + + <toolbox id="EditorToolbox" + mode="full" + defaultmode="full"> + <toolbar id="toolbar-menubar" + type="menubar" + class="chromeclass-menubar" + persist="collapsed" + grippytooltiptext="&menuBar.tooltip;" + customizable="true" + defaultset="menubar-items" + mode="icons" + iconsize="small" + defaultmode="icons" + defaulticonsize="small" + context="toolbar-context-menu"> + <toolbaritem id="menubar-items" + class="menubar-items" + align="center"> + <menubar id="main-menubar" class="chromeclass-menubar"> + <menu id="menu_File"/> + <menu id="menu_Edit"/> + + <menu id="menu_View"> + <!-- id pulls in "Show Sidebar" item from sidebarOverlay --> + <menupopup id="menu_View_Popup"> + <menu id="menu_Toolbars"> + <menupopup id="view_toolbars_popup" + onpopupshowing="onViewToolbarsPopupShowing(event);" + oncommand="onViewToolbarCommand(event);"> + <menuitem id="menu_showTaskbar"/> + </menupopup> + </menu> + <menuseparator id="viewSep1"/> + <menu id="charsetMenu" + onpopupshowing="EditorUpdateCharsetMenu(event.target);" + oncommand="EditorSetCharacterSet(event);"/> + </menupopup> + </menu> + + <menu id="insertMenuPlainText" + label="&insertMenu.label;" + accesskey="&insertMenu.accesskey;"> + <menupopup id="insertMenuPlainTextPopup"> + <menuitem id="insertPlainTextChars" + accesskey="&insertCharsCmd.accesskey;" + command="cmd_insertChars"/> + </menupopup> + </menu> + + <!-- tasks and window menus filled from tasksOverlay --> + <menu id="tasksMenu"/> + <menu id="windowMenu"/> + + <!-- help menu filled from globalOverlay --> + <menu id="menu_Help"/> + + <spacer flex="1"/> + </menubar> + </toolbaritem> + </toolbar> + + + <!-- toolbar filled out from editorOverlay --> + <toolbar id="EditToolbar" + class="chromeclass-toolbar toolbar-primary" + persist="collapsed" + grippytooltiptext="&compositionToolbar.tooltip;" + toolbarname="&compositionToolbarCmd.label;" + accesskey="&compositionToolbarCmd.accesskey;" + customizable="true" + defaultset="newButton,openButton,saveButton,print-button,separator,spellingButton,spring,throbber-box" + context="toolbar-context-menu"> + <toolbarbutton id="newButton"/> + <toolbarbutton id="openButton"/> + <toolbarbutton id="saveButton"/> + <toolbarbutton id="cutButton"/> + <toolbarbutton id="copyButton"/> + <toolbarbutton id="pasteButton"/> + <toolbarbutton id="print-button"/> + <toolbarbutton id="findButton"/> + <toolbarbutton id="spellingButton"/> + <toolbaritem id="throbber-box"/> + </toolbar> + + <toolbarset id="customToolbars" context="toolbar-context-menu"/> + + <toolbarpalette id="EditToolbarPalette"/> + </toolbox> + + <hbox id="sidebar-parent" flex="1"> + <!-- From sidebarOverlay.xul --> + <vbox id="sidebar-box" class="chromeclass-extrachrome" hidden="true"/> + <splitter id="sidebar-splitter" class="chromeclass-extrachrome" hidden="true"/> + <vbox id="appcontent" flex="1"> + <findbar id="FindToolbar" browserid="content-frame"/> + <editor editortype="text" + type="content" + primary="true" + id="content-frame" + src="about:blank" flex="1" + context="contentAreaContextMenu"/> + </vbox> <!-- appcontent --> + </hbox><!-- sidebar-parent --> + + <statusbar id="status-bar" + class="chromeclass-status"> + <statusbarpanel id="component-bar"/> + <statusbarpanel id="statusText" + label="&statusText.label;" + flex="1" + crop="right"/> + <statusbarpanel id="offline-status" class="statusbarpanel-iconic"/> + </statusbar> +</window> diff --git a/comm/suite/extensions/debugQA/install.rdf.in b/comm/suite/extensions/debugQA/install.rdf.in new file mode 100644 index 0000000000..60086476b3 --- /dev/null +++ b/comm/suite/extensions/debugQA/install.rdf.in @@ -0,0 +1,38 @@ +<?xml version="1.0"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + + +#filter substitution + +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:em="http://www.mozilla.org/2004/em-rdf#"> + <Description about="urn:mozilla:install-manifest"> + <em:id>debugQA@mozilla.org</em:id> + <em:version>2.0.13</em:version> + + <em:targetApplication> + <!-- Suite --> + <Description> + <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id> + <em:minVersion>2.53</em:minVersion> + <em:maxVersion>@MOZ_APP_MAXVERSION@</em:maxVersion> + </Description> + </em:targetApplication> + + <!-- EXTENSION AUTHORS! + DO NOT COPY THIS PROPERTY INTO YOUR INSTALL RDF FILES + It will cause users not to be informed of incompatibilities + with your extension when they are updated with Software Update + and your extension will become unavailable to them! + --> + <em:appManaged>true</em:appManaged> + + <!-- front-end metadata --> + <em:name>SeaMonkey Debug and QA UI</em:name> + <em:description>Provides Additional Debug and QA UI for SeaMonkey development</em:description> + <em:creator>mozilla.org</em:creator> + <em:homepageURL>http://wiki.mozilla.org/SeaMonkey:Debug_And_QA_UI</em:homepageURL> + </Description> +</RDF> diff --git a/comm/suite/extensions/debugQA/jar.mn b/comm/suite/extensions/debugQA/jar.mn new file mode 100644 index 0000000000..7f39b7ce5a --- /dev/null +++ b/comm/suite/extensions/debugQA/jar.mn @@ -0,0 +1,16 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +[extensions/debugQA@mozilla.org] debugqa.jar: +% content debugqa %content/debugqa/ +% overlay chrome://navigator/content/navigatorOverlay.xul chrome://debugqa/content/debugQAMenuOverlay.xul +% overlay chrome://editor/content/editor.xul chrome://debugqa/content/debugQAEditorOverlay.xul +% overlay chrome://navigator/content/navigator.xul chrome://debugqa/content/debugQANavigatorOverlay.xul + content/debugqa/debugQAEditorOverlay.js (content/debugQAEditorOverlay.js) + content/debugqa/debugQAEditorOverlay.xul (content/debugQAEditorOverlay.xul) + content/debugqa/debugQAMenuOverlay.js (content/debugQAMenuOverlay.js) + content/debugqa/debugQAMenuOverlay.xul (content/debugQAMenuOverlay.xul) + content/debugqa/debugQANavigatorOverlay.xul (content/debugQANavigatorOverlay.xul) + content/debugqa/debugQATextEditorShell.xul (content/debugQATextEditorShell.xul) + content/debugqa/EditorInitPage.html (content/EditorInitPage.html) diff --git a/comm/suite/extensions/debugQA/locales/en-US/debugQAEditorOverlay.dtd b/comm/suite/extensions/debugQA/locales/en-US/debugQAEditorOverlay.dtd new file mode 100644 index 0000000000..559fe137b1 --- /dev/null +++ b/comm/suite/extensions/debugQA/locales/en-US/debugQAEditorOverlay.dtd @@ -0,0 +1,27 @@ +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<!-- WARNING! This file contains UTF-8 encoded characters! + - If this ==> … <== doesn't look like an ellipsis (three dots in a row), + - your editor isn't using UTF-8 encoding and may munge up the document! + --> + +<!-- Debug menu items --> +<!ENTITY debugMenu.label "Debug"> +<!ENTITY newEditorTestPage.label "Composer with Test Page"> +<!ENTITY textEditorCmd.label "Plaintext Editor"> +<!ENTITY outputTextCmd.label "Output Text"> +<!ENTITY outputHTMLCmd.label "Output HTML"> +<!ENTITY insertTextCmd.label "Insert Text"> +<!ENTITY testSelectionCmd.label "Test Selection"> +<!ENTITY testDocumentCmd.label "Test Document"> +<!-- Unused after bug 1792764 but kept for 2.53 branch. --> +<!ENTITY executeJSTransactionViaTxmgr.label "Execute JS Transaction Via Transaction Manager"> +<!ENTITY executeJSTransactionViaEditor.label "Execute JS Transaction Via Editor"> +<!ENTITY setFocusCmd.label "Set Focus"> + +<!-- Text editor values --> +<!ENTITY textEditorWindow.titlemodifier "Text Editor"> + +<!ENTITY statusText.label "Done loading page"> diff --git a/comm/suite/extensions/debugQA/locales/en-US/debugQANavigatorOverlay.properties b/comm/suite/extensions/debugQA/locales/en-US/debugQANavigatorOverlay.properties new file mode 100644 index 0000000000..a54620256c --- /dev/null +++ b/comm/suite/extensions/debugQA/locales/en-US/debugQANavigatorOverlay.properties @@ -0,0 +1,6 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# LOCALIZATION NOTE: the %S are replaced by app name and build ID respectively +titlemodifier=%S {Build ID: %S} diff --git a/comm/suite/extensions/debugQA/locales/jar.mn b/comm/suite/extensions/debugQA/locales/jar.mn new file mode 100644 index 0000000000..d8f489f539 --- /dev/null +++ b/comm/suite/extensions/debugQA/locales/jar.mn @@ -0,0 +1,10 @@ +#filter substitution +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +[extensions/debugQA@mozilla.org] debugqa.jar: +% locale debugQA @AB_CD@ %locale/@AB_CD@/debugQA/ + locale/@AB_CD@/debugQA/debugQAEditorOverlay.dtd (en-US/debugQAEditorOverlay.dtd) + locale/@AB_CD@/debugQA/debugQANavigatorOverlay.properties (en-US/debugQANavigatorOverlay.properties) diff --git a/comm/suite/extensions/debugQA/locales/moz.build b/comm/suite/extensions/debugQA/locales/moz.build new file mode 100644 index 0000000000..de5cd1bf81 --- /dev/null +++ b/comm/suite/extensions/debugQA/locales/moz.build @@ -0,0 +1,6 @@ +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +JAR_MANIFESTS += ["jar.mn"] diff --git a/comm/suite/extensions/debugQA/moz.build b/comm/suite/extensions/debugQA/moz.build new file mode 100644 index 0000000000..c43aa55eff --- /dev/null +++ b/comm/suite/extensions/debugQA/moz.build @@ -0,0 +1,15 @@ +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DEFINES["MOZ_APP_VERSION"] = CONFIG["MOZ_APP_VERSION"] +DEFINES["MOZ_APP_MAXVERSION"] = CONFIG["MOZ_APP_MAXVERSION"] + +DIRS += ["locales"] + +FINAL_TARGET_PP_FILES.extensions["debugQA@mozilla.org"] += [ + "install.rdf.in" +] + +JAR_MANIFESTS += ["jar.mn"] diff --git a/comm/suite/extensions/jar.mn b/comm/suite/extensions/jar.mn new file mode 100644 index 0000000000..cff35a260b --- /dev/null +++ b/comm/suite/extensions/jar.mn @@ -0,0 +1,7 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +browser.jar: +% content browser %content/ + content/built_in_addons.json (built_in_addons.json) diff --git a/comm/suite/extensions/moz.build b/comm/suite/extensions/moz.build new file mode 100644 index 0000000000..8bffaa5e51 --- /dev/null +++ b/comm/suite/extensions/moz.build @@ -0,0 +1,11 @@ +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +if CONFIG["MOZ_DEBUGQA"]: + DIRS += [ + "debugQA", + ] + +JAR_MANIFESTS += ["jar.mn"] |