зеркало из https://github.com/mozilla/gecko-dev.git
Link Checker dialog, r=akkana, sr=ben
This commit is contained in:
Родитель
35fa0d9b6f
Коммит
63945048df
|
@ -0,0 +1,168 @@
|
|||
/*
|
||||
* 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 Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Akkana Peck (akkana@netscape.com)
|
||||
* Charles Manxke (cmanske@netscape.com)
|
||||
*/
|
||||
|
||||
// Variables used across all the links being checked:
|
||||
var gNumLinksToCheck = 0; // The number of nsILinkCheckers
|
||||
var gLinksBeingChecked = {}; // Array of nsIURICheckers
|
||||
var gURIRefObjects = {}; // Array of nsIURIRefObjects
|
||||
var gNumLinksCalledBack = 0;
|
||||
var gStartedAllChecks = false;
|
||||
var gLinkCheckTimerID = 0;
|
||||
|
||||
// Implement nsIRequestObserver:
|
||||
var gRequestObserver =
|
||||
{
|
||||
// urichecker requires that we have an OnStartRequest even tho it's a nop.
|
||||
onStartRequest: function(request, ctxt) { },
|
||||
|
||||
// onStopRequest is where we really handle the status.
|
||||
onStopRequest: function(request, ctxt, status)
|
||||
{
|
||||
var linkChecker = request.QueryInterface(Components.interfaces.nsIURIChecker);
|
||||
if (linkChecker)
|
||||
{
|
||||
gNumLinksCalledBack++;
|
||||
linkChecker.status = status;
|
||||
for (var i = 0; i < gNumLinksCalledBack; i++)
|
||||
{
|
||||
if (linkChecker == gLinksBeingChecked[i])
|
||||
gLinksBeingChecked[i].status = status;
|
||||
}
|
||||
|
||||
if (gStartedAllChecks && gNumLinksCalledBack >= gNumLinksToCheck)
|
||||
{
|
||||
clearTimeout(gLinkCheckTimerID);
|
||||
LinkCheckTimeOut();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Startup()
|
||||
{
|
||||
if (!InitEditorShell())
|
||||
return;
|
||||
|
||||
// Set window location relative to parent window (based on persisted attributes)
|
||||
SetWindowLocation();
|
||||
// Get all objects that refer to other locations
|
||||
var objects = editorShell.GetLinkedObjects();
|
||||
|
||||
// Loop over the nodes that have links:
|
||||
for (var i = 0; i < objects.Count(); i++)
|
||||
{
|
||||
var refobj = objects.GetElementAt(gNumLinksToCheck).QueryInterface(Components.interfaces.nsIURIRefObject);
|
||||
// Loop over the links in this node:
|
||||
if (refobj)
|
||||
{
|
||||
try {
|
||||
var uri;
|
||||
while ((uri = refobj.GetNextURI()))
|
||||
{
|
||||
// Use the real class in netlib:
|
||||
// Note that there may be more than one link per refobj
|
||||
gURIRefObjects[gNumLinksToCheck] = refobj;
|
||||
|
||||
// Make a new nsIURIChecker
|
||||
gLinksBeingChecked[gNumLinksToCheck]
|
||||
= Components.classes["@mozilla.org/network/urichecker;1"]
|
||||
.createInstance()
|
||||
.QueryInterface(Components.interfaces.nsIURIChecker);
|
||||
|
||||
// XXX Calling this is related to crash deleting gLinksBeingChecked when dialog is closed
|
||||
// (if this isn't called, no crash)
|
||||
gLinksBeingChecked[gNumLinksToCheck].asyncCheckURI(uri, gRequestObserver, null);
|
||||
gNumLinksToCheck++;
|
||||
};
|
||||
} catch (e) {
|
||||
dump(" Exception ERROR in Link checker. e.result="+e.result+", gNumLinksToCheck="+gNumLinksToCheck+"\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
// Done with the loop, now we can be prepared for the finish:
|
||||
gStartedAllChecks = true;
|
||||
|
||||
// Start timer to limit how long we wait for link checking
|
||||
gLinkCheckTimerID = setTimeout("LinkCheckTimeOut()", 5000);
|
||||
}
|
||||
|
||||
function LinkCheckTimeOut()
|
||||
{
|
||||
// We might have gotten here via a late timeout
|
||||
if (gNumLinksToCheck <= 0)
|
||||
return;
|
||||
gLinkCheckTimerID = 0;
|
||||
|
||||
dump("*** LinkCheckTimeout: Heard from " + gNumLinksCalledBack + " of "+gNumLinksToCheck + "\n");
|
||||
|
||||
gNumLinksToCheck = 0;
|
||||
gStartedAllChecks = false;
|
||||
if ("length" in gLinksBeingChecked)
|
||||
{
|
||||
for (var i=0; i < gLinksBeingChecked.length; i++)
|
||||
{
|
||||
var linkChecker = gLinksBeingChecked[i].QueryInterface(Components.interfaces.nsIURIChecker);
|
||||
// nsIURIChecker status values:
|
||||
// NS_BINDING_SUCCEEDED link is valid
|
||||
// NS_BINDING_FAILED link is invalid (gave an error)
|
||||
// NS_BINDING_ABORTED timed out, or cancelled
|
||||
switch (linkChecker.status)
|
||||
{
|
||||
case 0: // NS_BINDING_SUCCEEDED
|
||||
dump(" " + linkChecker.name + " OK!\n");
|
||||
break;
|
||||
case 0x804b0001: // NS_BINDING_FAILED
|
||||
dump(">> " + linkChecker.name + " is broken\n");
|
||||
break;
|
||||
case 0x804b0002: // NS_BINDING_ABORTED
|
||||
dump(">> " + linkChecker.name + " timed out\n");
|
||||
break;
|
||||
default:
|
||||
dump(">> " + linkChecker.name + " not checked\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ChangeUrl()
|
||||
{
|
||||
}
|
||||
|
||||
function onAccept()
|
||||
{
|
||||
SaveWindowLocation();
|
||||
return true; // do close the window
|
||||
}
|
||||
|
||||
function onCancelLinkChecker()
|
||||
{
|
||||
if (gLinkCheckTimerID)
|
||||
clearTimeout(gLinkCheckTimerID);
|
||||
|
||||
/*
|
||||
LinkCheckTimeOut();
|
||||
*/
|
||||
return onCancel();
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
- 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 Communicator client code, released
|
||||
- March 31, 1998.
|
||||
-
|
||||
- The Initial Developer of the Original Code is Netscape
|
||||
- Communications Corporation. Portions created by Netscape are
|
||||
- Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
- Rights Reserved.
|
||||
-
|
||||
- Contributor(s):
|
||||
-->
|
||||
|
||||
<?xml-stylesheet href="chrome://editor/skin/editor.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://editor/skin/EditorDialog.css" type="text/css"?>
|
||||
|
||||
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
|
||||
<?xul-overlay href="chrome://editor/content/EdDialogOverlay.xul"?>
|
||||
|
||||
<!DOCTYPE window SYSTEM "chrome://editor/locale/EdLinkChecker.dtd">
|
||||
<!-- dialog containing a control requiring initial setup -->
|
||||
<dialog title="&windowTitle.label;"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
onload="Startup()"
|
||||
ondialogaccept="return onAccept();"
|
||||
ondialogcancel="return onCancelLinkChecker();">
|
||||
|
||||
<!-- Methods common to all editor dialogs -->
|
||||
<script type="application/x-javascript" src="chrome://editor/content/editorUtilities.js"/>
|
||||
<script type="application/x-javascript" src="chrome://editor/content/EdDialogCommon.js"/>
|
||||
<script type="application/x-javascript" src="chrome://editor/content/EdLinkChecker.js"/>
|
||||
<script type="application/x-javascript" src="chrome://global/content/dialogOverlay.js" />
|
||||
|
||||
<spacer id="location" offsetY="50" persist="offsetX offsetY"/>
|
||||
<broadcaster id="args" value=""/>
|
||||
|
||||
<label value="&urlsNotFound.label;"/>
|
||||
<label value="¬FoundKey.label;"/>
|
||||
<tree rows="8" class="list" id="NamedAnchorList"
|
||||
style="min-height: 8em; min-width: 20em">
|
||||
<treecolgroup>
|
||||
<treecol/>
|
||||
<treecol flex="1"/>
|
||||
</treecolgroup>
|
||||
</tree>
|
||||
<spacer class="spacer"/>
|
||||
<button id="ChangeURL" label="&changeUrlButton.label;" oncommand="ChangeUrl();"/>
|
||||
</dialog>
|
|
@ -29,8 +29,12 @@ EdHLineProps.xul
|
|||
EdHLineProps.js
|
||||
EdImageProps.xul
|
||||
EdImageProps.js
|
||||
EdImageOverlay.xul
|
||||
EdImageOverlay.js
|
||||
EdLinkProps.xul
|
||||
EdLinkProps.js
|
||||
EdLinkChecker.xul
|
||||
EdLinkChecker.js
|
||||
EdSpellCheck.xul
|
||||
EdSpellCheck.js
|
||||
EdDictionary.xul
|
||||
|
@ -41,6 +45,22 @@ EdInsertTable.xul
|
|||
EdInsertTable.js
|
||||
EdTableProps.js
|
||||
EdTableProps.xul
|
||||
EdFormProps.js
|
||||
EdFormProps.xul
|
||||
EdInputProps.js
|
||||
EdInputProps.xul
|
||||
EdInputImage.js
|
||||
EdInputImage.xul
|
||||
EdTextAreaProps.js
|
||||
EdTextAreaProps.xul
|
||||
EdSelectProps.js
|
||||
EdSelectProps.xul
|
||||
EdButtonProps.js
|
||||
EdButtonProps.xul
|
||||
EdLabelProps.js
|
||||
EdLabelProps.xul
|
||||
EdFieldSetProps.js
|
||||
EdFieldSetProps.xul
|
||||
EdInsSrc.xul
|
||||
EdInsSrc.js
|
||||
EdDialogOverlay.xul
|
||||
|
|
|
@ -28,8 +28,12 @@ CHROME_CONTENT = \
|
|||
.\EdDialogCommon.js \
|
||||
.\EdLinkProps.xul \
|
||||
.\EdLinkProps.js \
|
||||
.\EdLinkChecker.xul \
|
||||
.\EdLinkChecker.js \
|
||||
.\EdImageProps.xul \
|
||||
.\EdImageProps.js \
|
||||
.\EdImageOverlay.xul \
|
||||
.\EdImageOverlay.js \
|
||||
.\EdHLineProps.xul \
|
||||
.\EdHLineProps.js \
|
||||
.\EdSpellCheck.xul \
|
||||
|
@ -42,6 +46,22 @@ CHROME_CONTENT = \
|
|||
.\EdInsertTable.js \
|
||||
.\EdTableProps.xul \
|
||||
.\EdTableProps.js \
|
||||
.\EdFormProps.xul \
|
||||
.\EdFormProps.js \
|
||||
.\EdInputProps.xul \
|
||||
.\EdInputProps.js \
|
||||
.\EdInputImage.xul \
|
||||
.\EdInputImage.js \
|
||||
.\EdTextAreaProps.xul \
|
||||
.\EdTextAreaProps.js \
|
||||
.\EdSelectProps.xul \
|
||||
.\EdSelectProps.js \
|
||||
.\EdButtonProps.xul \
|
||||
.\EdButtonProps.js \
|
||||
.\EdLabelProps.xul \
|
||||
.\EdLabelProps.js \
|
||||
.\EdFieldSetProps.xul \
|
||||
.\EdFieldSetProps.js \
|
||||
.\EdInsSrc.xul \
|
||||
.\EdInsSrc.js \
|
||||
.\EdInsertChars.xul \
|
||||
|
|
Загрузка…
Ссылка в новой задаче