/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "domstubs.idl"

%{C++
namespace mozilla {
namespace css {
class Rule;
}
}
%}

[ptr] native Rule(mozilla::css::Rule);

/**
 * The nsIDOMCSSRule interface is a datatype for a CSS style rule in
 * the Document Object Model.
 *
 * For more information on this interface please see
 * http://www.w3.org/TR/DOM-Level-2-Style
 */

[scriptable, uuid(4d6b3bad-f53c-4585-82f6-62982e27ede8)]
interface nsIDOMCSSRule : nsISupports
{
  // RuleType
  const unsigned short      UNKNOWN_RULE                   = 0;
  const unsigned short      STYLE_RULE                     = 1;
  const unsigned short      CHARSET_RULE                   = 2;
  const unsigned short      IMPORT_RULE                    = 3;
  const unsigned short      MEDIA_RULE                     = 4;
  const unsigned short      FONT_FACE_RULE                 = 5;
  const unsigned short      PAGE_RULE                      = 6;
  const unsigned short      KEYFRAMES_RULE                 = 7;
  const unsigned short      KEYFRAME_RULE                  = 8;
  // When layout.css.prefixes.animations is disabled/removed,
  // we should remove these two MOZ_* constants.
  const unsigned short      MOZ_KEYFRAMES_RULE             = 7;
  const unsigned short      MOZ_KEYFRAME_RULE              = 8;
  const unsigned short      NAMESPACE_RULE                 = 10;
  const unsigned short      COUNTER_STYLE_RULE             = 11;
  const unsigned short      SUPPORTS_RULE                  = 12;
  const unsigned short      FONT_FEATURE_VALUES_RULE       = 14;

  readonly attribute unsigned short      type;
           attribute DOMString           cssText;
                                        // raises(DOMException) on setting

  readonly attribute nsIDOMCSSStyleSheet parentStyleSheet;
  readonly attribute nsIDOMCSSRule       parentRule;

  [noscript, nostdcall, notxpcom] Rule getCSSRule();
};