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 (48797c5119a4)

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
/* -*- 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_location_h__
#define mozilla_dom_location_h__

#include "WorkerCommon.h"
#include "WorkerPrivate.h"
#include "nsWrapperCache.h"

namespace mozilla {
namespace dom {

class WorkerLocation final : public nsWrapperCache {
  nsString mHref;
  nsString mProtocol;
  nsString mHost;
  nsString mHostname;
  nsString mPort;
  nsString mPathname;
  nsString mSearch;
  nsString mHash;
  nsString mOrigin;

  WorkerLocation(const nsAString& aHref, const nsAString& aProtocol,
                 const nsAString& aHost, const nsAString& aHostname,
                 const nsAString& aPort, const nsAString& aPathname,
                 const nsAString& aSearch, const nsAString& aHash,
                 const nsAString& aOrigin)
      : mHref(aHref),
        mProtocol(aProtocol),
        mHost(aHost),
        mHostname(aHostname),
        mPort(aPort),
        mPathname(aPathname),
        mSearch(aSearch),
        mHash(aHash),
        mOrigin(aOrigin) {
    MOZ_COUNT_CTOR(WorkerLocation);
  }

  ~WorkerLocation() { MOZ_COUNT_DTOR(WorkerLocation); }

 public:
  NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WorkerLocation)
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WorkerLocation)

  static already_AddRefed<WorkerLocation> Create(
      WorkerPrivate::LocationInfo& aInfo);

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

  nsISupports* GetParentObject() const { return nullptr; }

  void Stringify(nsString& aHref) const { aHref = mHref; }
  void GetHref(nsString& aHref) const { aHref = mHref; }
  void GetProtocol(nsString& aProtocol) const { aProtocol = mProtocol; }
  void GetHost(nsString& aHost) const { aHost = mHost; }
  void GetHostname(nsString& aHostname) const { aHostname = mHostname; }
  void GetPort(nsString& aPort) const { aPort = mPort; }
  void GetPathname(nsString& aPathname) const { aPathname = mPathname; }
  void GetSearch(nsString& aSearch) const { aSearch = mSearch; }
  void GetHash(nsString& aHash) const { aHash = mHash; }
  void GetOrigin(nsString& aOrigin) const { aOrigin = mOrigin; }
};

}  // namespace dom
}  // namespace mozilla

#endif  // mozilla_dom_location_h__