mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-31 06:05:44 +00:00
9fe74dfec0
This is implemented by creating a Promise object internally and forwarding the .then() call to it. Any further callbacks passed to future .then() calls will be added as callbacks on the same internal promise object. We also take care of resolving or rejecting the promise if the success/error event of the DOMRequest object has been fired before .then() is called.
60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
/* 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_domcursor_h__
|
|
#define mozilla_dom_domcursor_h__
|
|
|
|
#include "nsIDOMDOMCursor.h"
|
|
#include "DOMRequest.h"
|
|
#include "nsCycleCollectionParticipant.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "mozilla/Attributes.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class DOMCursor : public DOMRequest
|
|
, public nsIDOMDOMCursor
|
|
{
|
|
public:
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_DECL_NSIDOMDOMCURSOR
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DOMCursor,
|
|
DOMRequest)
|
|
|
|
DOMCursor(nsPIDOMWindow* aWindow, nsICursorContinueCallback *aCallback);
|
|
|
|
virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
|
|
|
|
bool Done() const
|
|
{
|
|
return mFinished;
|
|
}
|
|
virtual void Continue(ErrorResult& aRv);
|
|
|
|
void Reset();
|
|
void FireDone();
|
|
|
|
protected:
|
|
~DOMCursor() {}
|
|
|
|
private:
|
|
DOMCursor() MOZ_DELETE;
|
|
// Calling Then() on DOMCursor is a mistake, since the DOMCursor object
|
|
// should not have a .then() method from JS' point of view.
|
|
already_AddRefed<mozilla::dom::Promise>
|
|
Then(JSContext* aCx, AnyCallback* aResolveCallback,
|
|
AnyCallback* aRejectCallback, ErrorResult& aRv) MOZ_DELETE;
|
|
|
|
nsCOMPtr<nsICursorContinueCallback> mCallback;
|
|
bool mFinished;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif /* mozilla_dom_domcursor_h__ */
|