DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Implementation

Mercurial (fddffdeab170)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=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_cellbroadcast_CellBroadcastMessage_h
#define mozilla_dom_cellbroadcast_CellBroadcastMessage_h

#include "mozilla/dom/MozCellBroadcastMessageBinding.h"
#include "nsAutoPtr.h"
#include "nsCOMPtr.h"
#include "nsString.h"
#include "nsWrapperCache.h"

class nsPIDOMWindow;

namespace mozilla {
namespace dom {

class CellBroadcastEtwsInfo;

class CellBroadcastMessage final : public nsISupports
                                 , public nsWrapperCache
{
public:
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(CellBroadcastMessage)

  CellBroadcastMessage(nsPIDOMWindow* aWindow,
                       uint32_t aServiceId,
                       uint32_t aGsmGeographicalScope,
                       uint16_t aMessageCode,
                       uint16_t aMessageId,
                       const nsAString& aLanguage,
                       const nsAString& aBody,
                       uint32_t aMessageClass,
                       uint64_t aTimestamp,
                       uint32_t aCdmaServiceCategory,
                       bool aHasEtwsInfo,
                       uint32_t aEtwsWarningType,
                       bool aEtwsEmergencyUserAlert,
                       bool aEtwsPopup);

  nsPIDOMWindow*
  GetParentObject() const { return mWindow; }

  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;

  // WebIDL interface

  uint32_t ServiceId() const { return mServiceId; }

  const Nullable<CellBroadcastGsmGeographicalScope>&
  GetGsmGeographicalScope() { return mGsmGeographicalScope; }

  uint16_t MessageCode() const { return mMessageCode; }

  uint16_t MessageId() const { return mMessageId; }

  void GetLanguage(nsString& aLanguage) const { aLanguage = mLanguage; }

  void GetBody(nsString& aBody) const { aBody = mBody; }

  const Nullable<CellBroadcastMessageClass>&
  GetMessageClass() { return mMessageClass; }

  uint64_t Timestamp() const { return mTimestamp; }

  // Mark this as resultNotAddRefed to return raw pointers
  already_AddRefed<CellBroadcastEtwsInfo> GetEtws() const;

  const Nullable<uint16_t>& GetCdmaServiceCategory() { return mCdmaServiceCategory; };

private:
  // final suppresses -Werror,-Wdelete-non-virtual-dtor
  ~CellBroadcastMessage() {};

  // Don't try to use the default constructor.
  CellBroadcastMessage();

  nsCOMPtr<nsPIDOMWindow> mWindow;
  uint32_t mServiceId;
  Nullable<CellBroadcastGsmGeographicalScope> mGsmGeographicalScope;
  uint16_t mMessageCode;
  uint16_t mMessageId;
  nsString mLanguage;
  nsString mBody;
  Nullable<CellBroadcastMessageClass> mMessageClass;
  uint64_t mTimestamp;
  Nullable<uint16_t> mCdmaServiceCategory;
  RefPtr<CellBroadcastEtwsInfo> mEtwsInfo;
};

class CellBroadcastEtwsInfo final : public nsISupports
                                  , public nsWrapperCache
{
public:
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(CellBroadcastEtwsInfo)

  CellBroadcastEtwsInfo(nsPIDOMWindow* aWindow,
                        uint32_t aWarningType,
                        bool aEmergencyUserAlert,
                        bool aPopup);

  nsPIDOMWindow*
  GetParentObject() const { return mWindow; }

  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;

  // WebIDL interface

  const Nullable<CellBroadcastEtwsWarningType>&
  GetWarningType()  { return mWarningType; }

  bool EmergencyUserAlert() const { return mEmergencyUserAlert; }

  bool Popup() const { return mPopup; }

private:
  // final suppresses -Werror,-Wdelete-non-virtual-dtor
  ~CellBroadcastEtwsInfo() {};

  // Don't try to use the default constructor.
  CellBroadcastEtwsInfo();

  nsCOMPtr<nsPIDOMWindow> mWindow;
  Nullable<CellBroadcastEtwsWarningType> mWarningType;
  bool mEmergencyUserAlert;
  bool mPopup;
};

} // namespace dom
} // namespace mozilla

#endif // mozilla_dom_cellbroadcast_CellBroadcastMessage_h