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

[scriptable, uuid(cd9f33c5-460d-4bbf-a459-f375ca9566d8)]
interface nsISessionStoreRestoreData : nsISupports {
  // Setters for form data.
  attribute AUTF8String url;
  attribute AString innerHTML;

  // Setters for scroll data.
  attribute ACString scroll;

  // Methods for adding individual form fields which are called as the JS code
  // finds them.
  void addTextField(in boolean aIsXPath, in AString aIdOrXPath,
                    in AString aValue);
  void addCheckbox(in boolean aIsXPath, in AString aIdOrXPath,
                   in boolean aValue);
  void addFileList(in boolean aIsXPath, in AString aIdOrXPath, in AString aType,
                   in Array<AString> aFileList);
  void addSingleSelect(in boolean aIsXPath, in AString aIdOrXPath,
                       in unsigned long aSelectedIndex, in AString aValue);
  void addMultipleSelect(in boolean aIsXPath, in AString aIdOrXPath,
                         in Array<AString> aValues);
  void addCustomElement(in boolean aIsXPath, in AString aIdOrXPath,
                        in jsval aValue, in jsval aState);

  // Add a child data object to our children list.
  void addChild(in nsISessionStoreRestoreData aChild, in unsigned long aIndex);
};
