/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */

#ifndef mozilla_dom_BrowserElementDictionariesBinding_h__
#define mozilla_dom_BrowserElementDictionariesBinding_h__

#include "js/RootingAPI.h"
#include "jspubtd.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/dom/BindingDeclarations.h"
#include "mozilla/dom/Nullable.h"
#include "nsINode.h"

class nsINode;

namespace mozilla {
namespace dom {

struct AsyncScrollEventDetailAtoms;
struct DOMWindowResizeEventDetailAtoms;
class NativePropertyHooks;
struct OpenWindowEventDetailAtoms;

} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {

struct AsyncScrollEventDetail : public MainThreadDictionaryBase
{
  float mHeight;
  float mLeft;
  float mScrollHeight;
  float mScrollWidth;
  float mTop;
  float mWidth;

  inline AsyncScrollEventDetail()
  {
  }

  explicit inline AsyncScrollEventDetail(const AsyncScrollEventDetail& aOther)
  {
    *this = aOther;
  }

  bool
  Init(JSContext* cx, JS::Handle<JS::Value> val, const char* sourceDescription = "Value");

  bool
  Init(const nsAString& aJSON);

  bool
  ToObject(JSContext* cx, JS::Handle<JSObject*> parentObject, JS::MutableHandle<JS::Value> rval) const;

  void
  TraceDictionary(JSTracer* trc);

  void
  operator=(const AsyncScrollEventDetail& aOther);

private:
  static bool
  InitIds(JSContext* cx, AsyncScrollEventDetailAtoms* atomsCache);
};
struct AsyncScrollEventDetailInitializer : public AsyncScrollEventDetail
{
  AsyncScrollEventDetailInitializer();
};


struct DOMWindowResizeEventDetail : public MainThreadDictionaryBase
{
  int32_t mHeight;
  int32_t mWidth;

  inline DOMWindowResizeEventDetail()
  {
  }

  explicit inline DOMWindowResizeEventDetail(const DOMWindowResizeEventDetail& aOther)
  {
    *this = aOther;
  }

  bool
  Init(JSContext* cx, JS::Handle<JS::Value> val, const char* sourceDescription = "Value");

  bool
  Init(const nsAString& aJSON);

  bool
  ToObject(JSContext* cx, JS::Handle<JSObject*> parentObject, JS::MutableHandle<JS::Value> rval) const;

  void
  TraceDictionary(JSTracer* trc);

  void
  operator=(const DOMWindowResizeEventDetail& aOther);

private:
  static bool
  InitIds(JSContext* cx, DOMWindowResizeEventDetailAtoms* atomsCache);
};
struct DOMWindowResizeEventDetailInitializer : public DOMWindowResizeEventDetail
{
  DOMWindowResizeEventDetailInitializer();
};


struct OpenWindowEventDetail : public MainThreadDictionaryBase
{
  nsString mFeatures;
  nsRefPtr<nsINode> mFrameElement;
  nsString mName;
  nsString mUrl;

  inline OpenWindowEventDetail()
  {
  }

private:
  OpenWindowEventDetail(const OpenWindowEventDetail&) MOZ_DELETE;
  void operator=(const OpenWindowEventDetail) MOZ_DELETE;

  static bool
  InitIds(JSContext* cx, OpenWindowEventDetailAtoms* atomsCache);

public:
  bool
  Init(JSContext* cx, JS::Handle<JS::Value> val, const char* sourceDescription = "Value");

  bool
  Init(const nsAString& aJSON);

  bool
  ToObject(JSContext* cx, JS::Handle<JSObject*> parentObject, JS::MutableHandle<JS::Value> rval) const;

  void
  TraceDictionary(JSTracer* trc);
};
struct OpenWindowEventDetailInitializer : public OpenWindowEventDetail
{
  OpenWindowEventDetailInitializer();
};


} // namespace dom
} // namespace mozilla

#endif // mozilla_dom_BrowserElementDictionariesBinding_h__
