xpcom/ds/nsIINIParser.idl
author Dave Townsend <dtownsend@oxymoronical.com>
Thu, 12 Oct 2017 14:20:57 -0700
changeset 830574 ec7da761af74dacb9a4172ac2e2a42de032bd4ef
parent 95826 a15d75939cd5d820507656f64edae9a18e10918e
permissions -rw-r--r--
Bug 1484844: Make nsINIParser mutable. r=froydnj In order to implement profile-per-install we need a mutable INI parser in early startup. The current one is implemented in JavaScript and thus not available. This makes the current read-only C++ INI parser mutable and removes the JavaScript implementation. It turns out that the two different implementations of nsIINIParserFactory and nsIINIParser behaved slightly differently but only in ways that the single test cared about so I've adjusted things a little to make it work. The existing C++ implementation did not do validity checks on arguments, this adds that making empty sections and values illegal. Differential Revision: https://phabricator.services.mozilla.com/D3851

/* 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/. */

#include "nsISupports.idl"

interface nsIUTF8StringEnumerator;
interface nsIFile;

[scriptable, uuid(7eb955f6-3e78-4d39-b72f-c1bf12a94bce)]
interface nsIINIParser : nsISupports
{
  /**
   * Enumerates the [section]s available in the INI file.
   */
  nsIUTF8StringEnumerator getSections();

  /**
   * Enumerates the keys available within a section.
   */
  nsIUTF8StringEnumerator getKeys(in AUTF8String aSection);

  /**
   * Get the value of a string for a particular section and key.
   */
  AUTF8String getString(in AUTF8String aSection, in AUTF8String aKey);
};

[scriptable, uuid(b67bb24b-31a3-4a6a-a5d9-0485c9af5a04)]
interface nsIINIParserWriter : nsISupports
{
  /**
   * Set the value of a string for a particular section and key.
   */
  void setString(in AUTF8String aSection, in AUTF8String aKey, in AUTF8String aValue);

  /**
   * Write to the INI file.
   */
  void writeFile(in nsIFile aINIFile);
};

[scriptable, uuid(ccae7ea5-1218-4b51-aecb-c2d8ecd46af9)]
interface nsIINIParserFactory : nsISupports
{
  /**
   * Create an iniparser instance from a local file.
   */
  nsIINIParser createINIParser([optional] in nsIFile aINIFile);
};