/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * 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.
 *
 * The Initial Developer of the Original Code is Netscape Communications
 * Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s):
 * Alec Flett <alecf@netscape.com>
 */

#include "nsISupports.idl"
#include "nsIPrefBranch.idl"

[scriptable, uuid(decb9cc7-c08f-4ea5-be91-a8fc637ce2d2)]
interface nsIPrefService : nsISupports
{

  // Initialize/shutdown
  void StartUp();
  void ReadUserPrefs();
  void ReadUserPrefsFrom(in nsIFileSpec spec);
  //  void ResetPrefs();
  void ShutDown();

  // Config file input
  void ReadUserJSFile(in nsIFileSpec filename);

  // Commenting out: #ifdef MOZ_OLD_LI_STUFF
  // void ReadLIJSFile(in nsIFileSpec filename);

  /*
  void EvaluateConfigScript(in string js_buffer, in PRUint32 length,
                            in boolean bGlobalContext,
                            in boolean bCallbacks);

  void EvaluateConfigScriptFile(in string js_buffer, in PRUint32 length,
                                in nsIFileSpec filename,
                                in boolean bGlobalContext,
                                in boolean bCallbacks);
  void SavePrefFileAs(in nsIFileSpec filename);
  */
  /* JS Stuff - don't allow this to be scriptable */
  //[noscript] readonly attribute JSContext configContext;
  //[noscript] readonly attribute JSObject globalConfigObject;
  //  [noscript] readonly attribute JSObject prefConfigObject;

    nsIPrefBranch getBranch(in string root);

};

