зеркало из https://github.com/mozilla/gecko-dev.git
Update of the debug plugin. Not part of the build
This commit is contained in:
Родитель
a1a907e242
Коммит
cf7c66e034
|
@ -43,6 +43,14 @@
|
|||
interface nsIDebugObject : nsISupports
|
||||
{
|
||||
|
||||
/**
|
||||
* creates a directory.. only locally
|
||||
* @param
|
||||
* @param
|
||||
*/
|
||||
void CreateDirectory(in wstring aDirectoryPath, in unsigned long aFlags);
|
||||
|
||||
|
||||
/**
|
||||
* Dumps the content of a window
|
||||
* @param
|
||||
|
|
|
@ -30,6 +30,9 @@ class NS_NO_VTABLE nsIDebugPlugin : public nsISupports {
|
|||
/* readonly attribute string version; */
|
||||
NS_IMETHOD GetVersion(char * *aVersion) = 0;
|
||||
|
||||
/* void CreateDirectory (in wstring aDirPath, in unsigned long aFlags, [retval] out long aResult); */
|
||||
NS_IMETHOD CreateDirectory(const PRUnichar *aDirPath, PRUint32 aFlags, PRInt32 *aResult) = 0;
|
||||
|
||||
/* void DumpLayout (in nsISupports aWindow, in wstring aFilePath, in wstring aFileName, in unsigned long aFlags, [retval] out long aResult); */
|
||||
NS_IMETHOD DumpLayout(nsISupports *aWindow, const PRUnichar *aFilePath, const PRUnichar *aFileName, PRUint32 aFlags, PRInt32 *aResult) = 0;
|
||||
|
||||
|
@ -47,6 +50,7 @@ class NS_NO_VTABLE nsIDebugPlugin : public nsISupports {
|
|||
/* Use this macro when declaring classes that implement this interface. */
|
||||
#define NS_DECL_NSIDEBUGPLUGIN \
|
||||
NS_IMETHOD GetVersion(char * *aVersion); \
|
||||
NS_IMETHOD CreateDirectory(const PRUnichar *aDirPath, PRUint32 aFlags, PRInt32 *aResult); \
|
||||
NS_IMETHOD DumpLayout(nsISupports *aWindow, const PRUnichar *aFilePath, const PRUnichar *aFileName, PRUint32 aFlags, PRInt32 *aResult); \
|
||||
NS_IMETHOD StartDirectorySearch(const char *aFilePath); \
|
||||
NS_IMETHOD GetNextFileInDirectory(char **aFileName); \
|
||||
|
@ -55,6 +59,7 @@ class NS_NO_VTABLE nsIDebugPlugin : public nsISupports {
|
|||
/* Use this macro to declare functions that forward the behavior of this interface to another object. */
|
||||
#define NS_FORWARD_NSIDEBUGPLUGIN(_to) \
|
||||
NS_IMETHOD GetVersion(char * *aVersion) { return _to GetVersion(aVersion); } \
|
||||
NS_IMETHOD CreateDirectory(const PRUnichar *aDirPath, PRUint32 aFlags, PRInt32 *aResult) { return _to CreateDirectory(aDirPath, aFlags, aResult); } \
|
||||
NS_IMETHOD DumpLayout(nsISupports *aWindow, const PRUnichar *aFilePath, const PRUnichar *aFileName, PRUint32 aFlags, PRInt32 *aResult) { return _to DumpLayout(aWindow, aFilePath, aFileName, aFlags, aResult); } \
|
||||
NS_IMETHOD StartDirectorySearch(const char *aFilePath) { return _to StartDirectorySearch(aFilePath); } \
|
||||
NS_IMETHOD GetNextFileInDirectory(char **aFileName) { return _to GetNextFileInDirectory(aFileName); } \
|
||||
|
@ -63,6 +68,7 @@ class NS_NO_VTABLE nsIDebugPlugin : public nsISupports {
|
|||
/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
|
||||
#define NS_FORWARD_SAFE_NSIDEBUGPLUGIN(_to) \
|
||||
NS_IMETHOD GetVersion(char * *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
|
||||
NS_IMETHOD CreateDirectory(const PRUnichar *aDirPath, PRUint32 aFlags, PRInt32 *aResult) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDirectory(aDirPath, aFlags, aResult); } \
|
||||
NS_IMETHOD DumpLayout(nsISupports *aWindow, const PRUnichar *aFilePath, const PRUnichar *aFileName, PRUint32 aFlags, PRInt32 *aResult) { return !_to ? NS_ERROR_NULL_POINTER : _to->DumpLayout(aWindow, aFilePath, aFileName, aFlags, aResult); } \
|
||||
NS_IMETHOD StartDirectorySearch(const char *aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->StartDirectorySearch(aFilePath); } \
|
||||
NS_IMETHOD GetNextFileInDirectory(char **aFileName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextFileInDirectory(aFileName); } \
|
||||
|
@ -103,6 +109,12 @@ NS_IMETHODIMP nsDebugPlugin::GetVersion(char * *aVersion)
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void CreateDirectory (in wstring aDirPath, in unsigned long aFlags, [retval] out long aResult); */
|
||||
NS_IMETHODIMP nsDebugPlugin::CreateDirectory(const PRUnichar *aDirPath, PRUint32 aFlags, PRInt32 *aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void DumpLayout (in nsISupports aWindow, in wstring aFilePath, in wstring aFileName, in unsigned long aFlags, [retval] out long aResult); */
|
||||
NS_IMETHODIMP nsDebugPlugin::DumpLayout(nsISupports *aWindow, const PRUnichar *aFilePath, const PRUnichar *aFileName, PRUint32 aFlags, PRInt32 *aResult)
|
||||
{
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
[scriptable, uuid(482e1890-1fe5-11d5-9cf8-0060b0fbd8ac)]
|
||||
interface nsIDebugPlugin : nsISupports {
|
||||
readonly attribute string version;
|
||||
void CreateDirectory(in wstring aDirPath,in unsigned long aFlags,[retval] out long aResult);
|
||||
void DumpLayout(in nsISupports aWindow,in wstring aFilePath,in wstring aFileName,in unsigned long aFlags,[retval] out long aResult );
|
||||
void StartDirectorySearch(in string aFilePath);
|
||||
void GetNextFileInDirectory([retval] out string aFileName);
|
||||
|
|
|
@ -117,6 +117,20 @@ NS_IMETHODIMP nsScriptablePeer::GetVersion(char * *aVersion)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsScriptablePeer::CreateDirectory(const PRUnichar *aFilePath,PRUint32 aFlags, PRInt32 *aResult)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRBool retVal;
|
||||
|
||||
if ( mPlugin ) {
|
||||
mPlugin->CreateDirectory(aFilePath,aFlags,&retVal);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP nsScriptablePeer::DumpLayout(nsISupports *aWindow, const PRUnichar *aFilePath, const PRUnichar *aFileName,
|
||||
PRUint32 aFlags, PRInt32 *aResult)
|
||||
{
|
||||
|
@ -127,8 +141,10 @@ PRBool retVal;
|
|||
mPlugin->OutPutLayoutFrames(aWindow,aFilePath,aFileName,aFlags,&retVal);
|
||||
if (retVal == NS_OK) {
|
||||
*aResult= 0;
|
||||
} else if ( retVal == NS_ERROR_FILE_INVALID_PATH ) {
|
||||
*aResult = 2; // fatal error.. stop exection
|
||||
} else {
|
||||
*aResult = 1;
|
||||
*aResult = 1; // did not load.. keep going
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
|
|
|
@ -192,6 +192,23 @@ void nsPluginInstance::OutPutLayoutFrames(nsISupports *aWindow, const PRUnichar
|
|||
|
||||
//-----------------------------------------------------
|
||||
|
||||
void nsPluginInstance::CreateDirectory(const PRUnichar *aBasePath, PRUint32 aFlags, PRInt32 *aRetVal)
|
||||
{
|
||||
nsIDebugObject *theDebugObject=NULL;
|
||||
|
||||
*aRetVal = NS_ERROR_FAILURE;
|
||||
|
||||
if (gServiceManager) {
|
||||
// get service using its contract id and use it to allocate the memory
|
||||
gServiceManager->GetServiceByContractID("@mozilla.org/debug/debugobject;1", NS_GET_IID(nsIDebugObject), (void **)&theDebugObject);
|
||||
if(theDebugObject){
|
||||
*aRetVal = theDebugObject->CreateDirectory(aBasePath, aFlags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
|
||||
void nsPluginInstance::CompareLayoutFrames(const PRUnichar *aBasePath, const PRUnichar *aVerPath,
|
||||
const PRUnichar *aBaseFile, const PRUnichar *aVerFile, PRUint32 aFlags, PRInt32 *aRetVal)
|
||||
{
|
||||
|
|
|
@ -61,6 +61,7 @@ public:
|
|||
|
||||
// locals
|
||||
void getVersion(char* *aVersion);
|
||||
void CreateDirectory(const PRUnichar *aFilePath, PRUint32 aFlags, PRInt32 *aRetVal);
|
||||
void OutPutLayoutFrames(nsISupports *aWindow,const PRUnichar *aFilePath, const PRUnichar *aFileName, PRUint32 aFlags, PRInt32 *aRetVal);
|
||||
void CompareLayoutFrames(const PRUnichar *aBasePath, const PRUnichar *aVerPath,
|
||||
const PRUnichar *aBaseFile, const PRUnichar *aVerFile, PRUint32 aFlags, PRInt32 *aRetVal);
|
||||
|
|
|
@ -31,6 +31,7 @@ var origWidth;
|
|||
var origHeight;
|
||||
var dirType;
|
||||
var curIndex;
|
||||
var dumpStyle;
|
||||
|
||||
|
||||
var myArray = new Array(9);
|
||||
|
@ -211,11 +212,9 @@ RestoreWindow();
|
|||
|
||||
function ShowDirectories()
|
||||
{
|
||||
|
||||
for(i=0;i<(myArray.length);i+=3){
|
||||
WriteOutput( myArray[i], false, "normal" ,false,true );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
@ -245,6 +244,7 @@ function runTests()
|
|||
testType = 4;
|
||||
}
|
||||
|
||||
|
||||
if ( dirType == 1 ) {
|
||||
ClearOutput();
|
||||
WriteOutput( "Starting Single Directory Tests",true,"normal",true,false );
|
||||
|
@ -256,12 +256,23 @@ function runTests()
|
|||
baseDir = document.TestForm.baseDir.value;
|
||||
verDir = document.TestForm.verDir.value;
|
||||
|
||||
// create the output directories
|
||||
if ( testType == 1 ) {
|
||||
dirURL = "file:///"+ baseDir;
|
||||
err = embed.CreateDirectory(dirURL,0);
|
||||
}
|
||||
|
||||
if ( (testType == 1) || (testType == 2) ) {
|
||||
dirURL = "file:///"+ verDir;
|
||||
err = embed.CreateDirectory(dirURL,0);
|
||||
}
|
||||
|
||||
DumpFrames(true,0,testType);
|
||||
} else if (dirType == 2) {
|
||||
ClearOutput();
|
||||
WriteOutput( "Starting Directory Tests",true,"normal",true,false );
|
||||
curIndex = 0;
|
||||
DumpDirectoryies(testType,0);
|
||||
DumpDirectoryies(testType);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -280,6 +291,19 @@ function DumpDirectoryies(aTestType)
|
|||
verDir = myArray[curIndex+2];
|
||||
baseExt = document.TestForm.baseExt.value;
|
||||
verExt = document.TestForm.verExt.value;
|
||||
|
||||
// create the output directories
|
||||
if ( testType == 1 ) {
|
||||
dirURL = "file:///"+ baseDir;
|
||||
err = embed.CreateDirectory(dirURL,0);
|
||||
}
|
||||
|
||||
if ( (testType == 1) || (testType == 2) ) {
|
||||
dirURL = "file:///"+ verDir;
|
||||
err = embed.CreateDirectory(dirURL,0);
|
||||
}
|
||||
|
||||
|
||||
WriteOutput( "New Directory" , false, "normal" ,true, true );
|
||||
DumpFrames(true,0,aTestType);
|
||||
} else {
|
||||
|
@ -305,6 +329,11 @@ var loadingFlag;
|
|||
outputWindow = window;
|
||||
theWindow = window.open(filename,0);
|
||||
placeWindows(outputWindow,theWindow);
|
||||
}
|
||||
if ( document.getElementById('ds').checked ) {
|
||||
dumpStyle = 1;
|
||||
} else {
|
||||
dumpStyle = 0;
|
||||
}
|
||||
started = true;
|
||||
} else {
|
||||
|
@ -319,22 +348,24 @@ var loadingFlag;
|
|||
if (aTestType==1) {
|
||||
// baseline
|
||||
outputfilename = outputfilename.replace (".html",baseExt);
|
||||
loading = embed.DumpLayout(theWindow,baseDir,outputfilename,0);
|
||||
loading = embed.DumpLayout(theWindow,baseDir,outputfilename,dumpStyle);
|
||||
} else if ((aTestType==2)|| (aTestType==3) ) {
|
||||
// verify
|
||||
outputfilename = outputfilename.replace (".html",verExt);
|
||||
loading = embed.DumpLayout(theWindow,verDir,outputfilename,0);
|
||||
loading = embed.DumpLayout(theWindow,verDir,outputfilename,dumpStyle);
|
||||
} else if (aTestType==4) {
|
||||
// just compare
|
||||
outputfilename = outputfilename.replace (".html",verExt);
|
||||
loading = 0;
|
||||
}
|
||||
|
||||
if (loading != 0) {
|
||||
if (loading == 1) {
|
||||
// page was not loaded
|
||||
testtype = aTestType;
|
||||
setTimeout("DumpFrames(false,filename,testtype)",1000);
|
||||
setTimeout("DumpFrames(false,filename,testtype,dumpStyle)",250);
|
||||
break;
|
||||
} else {
|
||||
} else if (loading == 0) {
|
||||
// successful in loading the page
|
||||
if ( aTestType<4 ){
|
||||
WriteOutput("Writing File " + "\""+outputfilename+"\"",false,"success",true,true );
|
||||
}
|
||||
|
@ -357,6 +388,10 @@ var loadingFlag;
|
|||
DumpDirectoryies(aTestType);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// fatal error.. break
|
||||
WriteOutput("FATAL ERROR" + "\""+outputfilename+"\"",false,"failure",true,true );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -453,10 +488,17 @@ var loadingFlag;
|
|||
</td)
|
||||
<td>
|
||||
Run Compare
|
||||
<input id="rc" type="radio" name="testType" value="runvercomp" >
|
||||
<input id="rc" type="radio" name="testType" value="runcomp" >
|
||||
</td)
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
Dump Style
|
||||
<input id="ds" type="checkbox" name="styleDump" value="dumpStyle" checked >
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<input type=button value="Run Tests" onclick='runTests()'>
|
||||
|
@ -471,11 +513,9 @@ var loadingFlag;
|
|||
|
||||
<table>
|
||||
</form>
|
||||
|
||||
|
||||
</center>
|
||||
|
||||
<h3 id="status"> OUTPUT IDLE </h3>
|
||||
<h4 id="status"> OUTPUT IDLE </h4>
|
||||
<div id="output" align="left" style="overflow:auto; width:700; height:100; border:solid red">
|
||||
</div>
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
#include "nsStyleStruct.h"
|
||||
#include "nsIFrameUtil.h"
|
||||
#include "nsLayoutCID.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsDebugObject, nsIDebugObject)
|
||||
static NS_DEFINE_IID(kFrameUtilCID, NS_FRAME_UTIL_CID);
|
||||
|
@ -83,6 +84,34 @@ nsDebugObject::~nsDebugObject()
|
|||
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------
|
||||
* See documentation in nsDebugObject.h
|
||||
* @update 5/16/02 dwc
|
||||
*/
|
||||
NS_IMETHODIMP
|
||||
nsDebugObject::CreateDirectory( const PRUnichar *aFilePath, PRUint32 aFlags)
|
||||
{
|
||||
nsresult rv,result = NS_ERROR_FAILURE;
|
||||
nsCAutoString dirPathAS;
|
||||
PRBool exists = PR_TRUE;
|
||||
|
||||
// see if the directory exists, if not create it
|
||||
dirPathAS.AssignWithConversion(aFilePath);
|
||||
char* dirPath = ToNewCString(dirPathAS);
|
||||
|
||||
nsCOMPtr<nsILocalFile> localFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID);
|
||||
rv = NS_InitFileFromURLSpec( localFile,nsDependentCString(dirPath));
|
||||
if ( rv == NS_OK) {
|
||||
rv = localFile->Exists(&exists);
|
||||
if (!exists){
|
||||
rv = localFile->Create(nsIFile::DIRECTORY_TYPE, 0600);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/** ---------------------------------------------------
|
||||
* See documentation in nsDebugObject.h
|
||||
* @update 5/16/02 dwc
|
||||
|
@ -114,7 +143,6 @@ PRBool stillLoading;
|
|||
docShell->GetPresShell(getter_AddRefs(presShell));
|
||||
presShell->GetRootFrame(&root);
|
||||
if (NS_SUCCEEDED(CallQueryInterface(root, &fdbg))) {
|
||||
|
||||
// create the string for the output
|
||||
nsCAutoString outputPath;
|
||||
outputPath.AssignWithConversion(aFilePath);
|
||||
|
@ -128,12 +156,17 @@ PRBool stillLoading;
|
|||
|
||||
FILE* fp = fopen(filePath, "wt");
|
||||
|
||||
if ( fp ) {
|
||||
presShell->GetPresContext(&thePC);
|
||||
|
||||
fdbg->DumpRegressionData(thePC, fp, 0, dumpStyle);
|
||||
fclose(fp);
|
||||
delete filePath;
|
||||
result = NS_OK; // the document is now loaded, and the frames are dumped.
|
||||
} else {
|
||||
|
||||
result = NS_ERROR_FILE_INVALID_PATH;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
#include "nsStyleStruct.h"
|
||||
#include "nsIFrameUtil.h"
|
||||
#include "nsLayoutCID.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsDebugObject, nsIDebugObject)
|
||||
static NS_DEFINE_IID(kFrameUtilCID, NS_FRAME_UTIL_CID);
|
||||
|
@ -83,6 +84,34 @@ nsDebugObject::~nsDebugObject()
|
|||
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------
|
||||
* See documentation in nsDebugObject.h
|
||||
* @update 5/16/02 dwc
|
||||
*/
|
||||
NS_IMETHODIMP
|
||||
nsDebugObject::CreateDirectory( const PRUnichar *aFilePath, PRUint32 aFlags)
|
||||
{
|
||||
nsresult rv,result = NS_ERROR_FAILURE;
|
||||
nsCAutoString dirPathAS;
|
||||
PRBool exists = PR_TRUE;
|
||||
|
||||
// see if the directory exists, if not create it
|
||||
dirPathAS.AssignWithConversion(aFilePath);
|
||||
char* dirPath = ToNewCString(dirPathAS);
|
||||
|
||||
nsCOMPtr<nsILocalFile> localFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID);
|
||||
rv = NS_InitFileFromURLSpec( localFile,nsDependentCString(dirPath));
|
||||
if ( rv == NS_OK) {
|
||||
rv = localFile->Exists(&exists);
|
||||
if (!exists){
|
||||
rv = localFile->Create(nsIFile::DIRECTORY_TYPE, 0600);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/** ---------------------------------------------------
|
||||
* See documentation in nsDebugObject.h
|
||||
* @update 5/16/02 dwc
|
||||
|
@ -114,7 +143,6 @@ PRBool stillLoading;
|
|||
docShell->GetPresShell(getter_AddRefs(presShell));
|
||||
presShell->GetRootFrame(&root);
|
||||
if (NS_SUCCEEDED(CallQueryInterface(root, &fdbg))) {
|
||||
|
||||
// create the string for the output
|
||||
nsCAutoString outputPath;
|
||||
outputPath.AssignWithConversion(aFilePath);
|
||||
|
@ -128,12 +156,17 @@ PRBool stillLoading;
|
|||
|
||||
FILE* fp = fopen(filePath, "wt");
|
||||
|
||||
if ( fp ) {
|
||||
presShell->GetPresContext(&thePC);
|
||||
|
||||
fdbg->DumpRegressionData(thePC, fp, 0, dumpStyle);
|
||||
fclose(fp);
|
||||
delete filePath;
|
||||
result = NS_OK; // the document is now loaded, and the frames are dumped.
|
||||
} else {
|
||||
|
||||
result = NS_ERROR_FILE_INVALID_PATH;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче