// Copyright 2015 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// https://www.w3.org/TR/2013/WD-cssom-20131205/#the-cssstyledeclaration-interface

interface CSSStyleDeclaration {
  // TODO: Replace this list with __camel_cased_attribute.
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animation;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animationDelay;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animationDirection;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animationDuration;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animationFillMode;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animationIterationCount;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animationName;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString animationTimingFunction;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString background;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString backgroundColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString backgroundImage;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString backgroundPosition;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString backgroundRepeat;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString backgroundSize;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString border;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderBottom;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderBottomColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderBottomLeftRadius;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderBottomRightRadius;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderBottomStyle;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderBottomWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderLeft;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderLeftColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderLeftStyle;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderLeftWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderRadius;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderRight;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderRightColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderRightStyle;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderRightWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderStyle;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderTop;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderTopColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderTopLeftRadius;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderTopRightRadius;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderTopStyle;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderTopWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString borderWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString bottom;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString boxShadow;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString color;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString content;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString display;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString filter;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString font;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString fontFamily;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString fontSize;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString fontStyle;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString fontWeight;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString height;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString left;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString lineHeight;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString margin;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString marginBottom;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString marginLeft;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString marginRight;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString marginTop;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString maxHeight;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString maxWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString minHeight;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString minWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString opacity;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString outline;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString outlineColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString outlineStyle;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString outlineWidth;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString overflow;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString overflowWrap;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString padding;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString paddingBottom;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString paddingLeft;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString paddingRight;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString paddingTop;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString pointerEvents;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString position;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString right;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textAlign;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textDecoration;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textDecorationColor;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textDecorationLine;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textIndent;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textOverflow;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textShadow;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString textTransform;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString top;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString transform;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString transformOrigin;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString transition;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString transitionDelay;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString transitionDuration;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString transitionProperty;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString transitionTimingFunction;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString verticalAlign;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString visibility;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString whiteSpace;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString width;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString wordWrap;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString zIndex;

  [TreatNullAs=EmptyString, RaisesException] attribute DOMString cssText;
  readonly attribute unsigned long length;
  getter DOMString? item(unsigned long index);
  DOMString getPropertyValue(DOMString property);
  [RaisesException] void setProperty(
      DOMString property, [TreatNullAs=EmptyString] DOMString value,
      [TreatNullAs=EmptyString] optional DOMString priority);
  [RaisesException] void setPropertyValue(
      DOMString property, [TreatNullAs=EmptyString] DOMString value);
  [RaisesException] DOMString removeProperty(DOMString property);
  readonly attribute CSSRule? parentRule;
};
