summaryrefslogtreecommitdiffstats
path: root/layout/xul/BoxObject.h
diff options
context:
space:
mode:
Diffstat (limited to 'layout/xul/BoxObject.h')
-rw-r--r--layout/xul/BoxObject.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/layout/xul/BoxObject.h b/layout/xul/BoxObject.h
new file mode 100644
index 000000000..ac3df420b
--- /dev/null
+++ b/layout/xul/BoxObject.h
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; 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/. */
+
+#ifndef mozilla_dom_BoxObject_h__
+#define mozilla_dom_BoxObject_h__
+
+#include "mozilla/Attributes.h"
+#include "mozilla/ErrorResult.h"
+#include "nsCOMPtr.h"
+#include "nsIBoxObject.h"
+#include "nsPIBoxObject.h"
+#include "nsPoint.h"
+#include "nsAutoPtr.h"
+#include "nsHashKeys.h"
+#include "nsInterfaceHashtable.h"
+#include "nsCycleCollectionParticipant.h"
+#include "nsWrapperCache.h"
+#include "nsRect.h"
+
+class nsIFrame;
+class nsIPresShell;
+
+namespace mozilla {
+namespace dom {
+
+class Element;
+
+class BoxObject : public nsPIBoxObject,
+ public nsWrapperCache
+{
+ NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+ NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(BoxObject)
+ NS_DECL_NSIBOXOBJECT
+
+public:
+ BoxObject();
+
+ // nsPIBoxObject
+ virtual nsresult Init(nsIContent* aContent) override;
+ virtual void Clear() override;
+ virtual void ClearCachedValues() override;
+
+ nsIFrame* GetFrame(bool aFlushLayout);
+ nsIPresShell* GetPresShell(bool aFlushLayout);
+ nsresult GetOffsetRect(nsIntRect& aRect);
+ nsresult GetScreenPosition(nsIntPoint& aPoint);
+
+ // Given a parent frame and a child frame, find the frame whose
+ // next sibling is the given child frame and return its element
+ static nsresult GetPreviousSibling(nsIFrame* aParentFrame, nsIFrame* aFrame,
+ nsIDOMElement** aResult);
+
+ // WebIDL (wraps old impls)
+ nsIContent* GetParentObject() const;
+ virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+
+ Element* GetElement() const;
+
+ int32_t X();
+ int32_t Y();
+ int32_t GetScreenX(ErrorResult& aRv);
+ int32_t GetScreenY(ErrorResult& aRv);
+ int32_t Width();
+ int32_t Height();
+
+ already_AddRefed<nsISupports> GetPropertyAsSupports(const nsAString& propertyName);
+ void SetPropertyAsSupports(const nsAString& propertyName, nsISupports* value);
+ void GetProperty(const nsAString& propertyName, nsString& aRetVal, ErrorResult& aRv);
+ void SetProperty(const nsAString& propertyName, const nsAString& propertyValue);
+ void RemoveProperty(const nsAString& propertyName);
+
+ already_AddRefed<Element> GetParentBox();
+ already_AddRefed<Element> GetFirstChild();
+ already_AddRefed<Element> GetLastChild();
+ already_AddRefed<Element> GetNextSibling();
+ already_AddRefed<Element> GetPreviousSibling();
+
+protected:
+ virtual ~BoxObject();
+
+ nsAutoPtr<nsInterfaceHashtable<nsStringHashKey,nsISupports> > mPropertyTable; //[OWNER]
+
+ nsIContent* mContent; // [WEAK]
+};
+
+} // namespace dom
+} // namespace mozilla
+
+#endif