/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * The contents of this file are subject to the Mozilla 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/MPL/
 * 
 * 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) 2001 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s): 
 */

#include "nsISupports.idl"

[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 OutputTextToFile(in boolean aNewFile,in wstring aFilePath,in wstring aFileName,in wstring aOutputString,[retval] out long aResult );
  void StartDirectorySearch(in string aFilePath);
  void GetNextFileInDirectory([retval] out string aFileName);
  void CompareLayoutFiles(in wstring aBasePath,in wstring aVerPath,in wstring aBaseFile,in wstring aVerFile,in unsigned long aFlags,[retval] out long aResult);
  void PluginShutdown();

  /**
   *  Printing Runtime Error Checking
   */
  const short PRT_RUNTIME_NONE              = 0;
  const short PRT_RUNTIME_CHECKFORPRINTERS  = 1;
  const short PRT_RUNTIME_CREATEPRTSESSION  = 2;
  const short PRT_RUNTIME_INITPRTOBJ        = 3;
  const short PRT_RUNTIME_CREATESPECFACTORY = 4;
  const short PRT_RUNTIME_NOPROMPTSERVICE   = 5;
  const short PRT_RUNTIME_NODEVSPEC         = 6;
  const short PRT_RUNTIME_NEXTPAGE          = 7;
  const short PRT_RUNTIME_REFLOWDOCLIST     = 8;
  const short PRT_RUNTIME_PREPAREDOC        = 9;
  const short PRT_RUNTIME_BEGINDOC          = 10;

  attribute boolean doRuntimeTests;     // indicates whether the runtime test will be run
  attribute short   testId;             // id of test to run
  attribute boolean printAsIs;          // print asis when printing to a file
  attribute wstring printFileName;      // name of output file

  void SetBoolPref(in wstring aPrefName, in boolean aVal);

};
