// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef EffectInput_h
#define EffectInput_h

#include "core/CoreExport.h"
#include "core/animation/EffectModel.h"
#include "wtf/Allocator.h"
#include "wtf/Vector.h"

namespace blink {

class EffectModel;
class DictionarySequenceOrDictionary;
class Dictionary;
class Element;
class ExceptionState;
class ExecutionContext;

class CORE_EXPORT EffectInput {
  STATIC_ONLY(EffectInput);

 public:
  // TODO(alancutter): Replace Element* parameter with Document&.
  static EffectModel* convert(Element*,
                              const DictionarySequenceOrDictionary&,
                              ExecutionContext*,
                              ExceptionState&);

 private:
  static EffectModel* convertArrayForm(Element&,
                                       const Vector<Dictionary>& keyframes,
                                       ExceptionState&);
  static EffectModel* convertObjectForm(Element&,
                                        const Dictionary& keyframe,
                                        ExecutionContext*,
                                        ExceptionState&);
};

}  // namespace blink

#endif
