Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 : * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef mozilla_dom_domcursor_h__
8 : #define mozilla_dom_domcursor_h__
9 :
10 : #include "nsIDOMDOMCursor.h"
11 : #include "DOMRequest.h"
12 : #include "nsCycleCollectionParticipant.h"
13 : #include "nsCOMPtr.h"
14 : #include "mozilla/Attributes.h"
15 :
16 : namespace mozilla {
17 : namespace dom {
18 :
19 : class DOMCursor : public DOMRequest
20 : , public nsIDOMDOMCursor
21 : {
22 : public:
23 : NS_DECL_ISUPPORTS_INHERITED
24 : NS_DECL_NSIDOMDOMCURSOR
25 0 : NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DOMCursor,
26 : DOMRequest)
27 :
28 : DOMCursor(nsPIDOMWindowInner* aWindow, nsICursorContinueCallback *aCallback);
29 : DOMCursor(nsIGlobalObject* aGlobal, nsICursorContinueCallback *aCallback);
30 :
31 : virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
32 :
33 0 : bool Done() const
34 : {
35 0 : return mFinished;
36 : }
37 : virtual void Continue(ErrorResult& aRv);
38 :
39 : void Reset();
40 : void FireDone();
41 :
42 : protected:
43 0 : ~DOMCursor() {}
44 :
45 : private:
46 : DOMCursor() = delete;
47 : // Calling Then() on DOMCursor is a mistake, since the DOMCursor object
48 : // should not have a .then() method from JS' point of view.
49 : already_AddRefed<mozilla::dom::Promise>
50 : Then(JSContext* aCx, AnyCallback* aResolveCallback,
51 : AnyCallback* aRejectCallback, ErrorResult& aRv) = delete;
52 :
53 : nsCOMPtr<nsICursorContinueCallback> mCallback;
54 : bool mFinished;
55 : };
56 :
57 : } // namespace dom
58 : } // namespace mozilla
59 :
60 : #endif /* mozilla_dom_domcursor_h__ */
|