Blame dom/events/MessageEvent.h

Packit f0b94e
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
Packit f0b94e
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
Packit f0b94e
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit f0b94e
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit f0b94e
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit f0b94e
Packit f0b94e
#ifndef mozilla_dom_MessageEvent_h_
Packit f0b94e
#define mozilla_dom_MessageEvent_h_
Packit f0b94e
Packit f0b94e
#include "mozilla/dom/Event.h"
Packit f0b94e
#include "mozilla/dom/BindingUtils.h"
Packit f0b94e
#include "nsCycleCollectionParticipant.h"
Packit f0b94e
Packit f0b94e
namespace mozilla {
Packit f0b94e
namespace dom {
Packit f0b94e
Packit f0b94e
struct MessageEventInit;
Packit f0b94e
class MessagePort;
Packit f0b94e
class OwningWindowProxyOrMessagePortOrServiceWorker;
Packit f0b94e
class ServiceWorker;
Packit f0b94e
class WindowProxyOrMessagePortOrServiceWorker;
Packit f0b94e
Packit f0b94e
/**
Packit f0b94e
 * Implements the MessageEvent event, used for cross-document messaging and
Packit f0b94e
 * server-sent events.
Packit f0b94e
 *
Packit f0b94e
 * See http://www.whatwg.org/specs/web-apps/current-work/#messageevent for
Packit f0b94e
 * further details.
Packit f0b94e
 */
Packit f0b94e
class MessageEvent final : public Event {
Packit f0b94e
 public:
Packit f0b94e
  MessageEvent(EventTarget* aOwner, nsPresContext* aPresContext,
Packit f0b94e
               WidgetEvent* aEvent);
Packit f0b94e
Packit f0b94e
  NS_DECL_ISUPPORTS_INHERITED
Packit f0b94e
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(MessageEvent, Event)
Packit f0b94e
Packit f0b94e
  // Forward to base class
Packit f0b94e
  NS_FORWARD_TO_EVENT
Packit f0b94e
Packit f0b94e
  virtual JSObject* WrapObjectInternal(
Packit f0b94e
      JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
Packit f0b94e
Packit f0b94e
  void GetData(JSContext* aCx, JS::MutableHandle<JS::Value> aData,
Packit f0b94e
               ErrorResult& aRv);
Packit f0b94e
  void GetOrigin(nsAString&) const;
Packit f0b94e
  void GetLastEventId(nsAString&) const;
Packit f0b94e
  void GetSource(
Packit f0b94e
      Nullable<OwningWindowProxyOrMessagePortOrServiceWorker>& aValue) const;
Packit f0b94e
Packit f0b94e
  void GetPorts(nsTArray<RefPtr<MessagePort>>& aPorts);
Packit f0b94e
Packit f0b94e
  static already_AddRefed<MessageEvent> Constructor(
Packit f0b94e
      const GlobalObject& aGlobal, const nsAString& aType,
Packit f0b94e
      const MessageEventInit& aEventInit, ErrorResult& aRv);
Packit f0b94e
Packit f0b94e
  static already_AddRefed<MessageEvent> Constructor(
Packit f0b94e
      EventTarget* aEventTarget, const nsAString& aType,
Packit f0b94e
      const MessageEventInit& aEventInit);
Packit f0b94e
Packit f0b94e
  void InitMessageEvent(
Packit f0b94e
      JSContext* aCx, const nsAString& aType, bool aCanBubble, bool aCancelable,
Packit f0b94e
      JS::Handle<JS::Value> aData, const nsAString& aOrigin,
Packit f0b94e
      const nsAString& aLastEventId,
Packit f0b94e
      const Nullable<WindowProxyOrMessagePortOrServiceWorker>& aSource,
Packit f0b94e
      const Sequence<OwningNonNull<MessagePort>>& aPorts);
Packit f0b94e
Packit f0b94e
 protected:
Packit f0b94e
  ~MessageEvent();
Packit f0b94e
Packit f0b94e
 private:
Packit f0b94e
  JS::Heap<JS::Value> mData;
Packit f0b94e
  nsString mOrigin;
Packit f0b94e
  nsString mLastEventId;
Packit f0b94e
  RefPtr<nsPIDOMWindowOuter> mWindowSource;
Packit f0b94e
  RefPtr<MessagePort> mPortSource;
Packit f0b94e
  RefPtr<ServiceWorker> mServiceWorkerSource;
Packit f0b94e
Packit f0b94e
  nsTArray<RefPtr<MessagePort>> mPorts;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
}  // namespace dom
Packit f0b94e
}  // namespace mozilla
Packit f0b94e
Packit f0b94e
#endif  // mozilla_dom_MessageEvent_h_