// 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 alignContent;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString alignItems;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString alignSelf;
  [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 flex;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString flexBasis;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString flexDirection;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString flexFlow;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString flexGrow;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString flexShrink;
  [TreatNullAs=EmptyString, RaisesException] attribute DOMString flexWrap;
  [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 justifyContent;
  [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 order;
  [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;
};
