LCOV - code coverage report
Current view: top level - dom/base - Location.h (source / functions) Hit Total Coverage
Test: output.info Lines: 6 18 33.3 %
Date: 2017-07-14 16:53:18 Functions: 6 12 50.0 %
Legend: Lines: hit not hit

          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
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #ifndef mozilla_dom_Location_h
       8             : #define mozilla_dom_Location_h
       9             : 
      10             : #include "js/TypeDecls.h"
      11             : #include "mozilla/ErrorResult.h"
      12             : #include "nsCycleCollectionParticipant.h"
      13             : #include "nsIWeakReferenceUtils.h"
      14             : #include "nsPIDOMWindow.h"
      15             : #include "nsString.h"
      16             : #include "nsWrapperCache.h"
      17             : 
      18             : class nsIDocShell;
      19             : class nsIDocShellLoadInfo;
      20             : class nsIURI;
      21             : 
      22             : namespace mozilla {
      23             : namespace dom {
      24             : 
      25             : //*****************************************************************************
      26             : // Location: Script "location" object
      27             : //*****************************************************************************
      28             : 
      29             : class Location final : public nsISupports
      30             :                      , public nsWrapperCache
      31             : {
      32             : public:
      33             :   Location(nsPIDOMWindowInner* aWindow, nsIDocShell *aDocShell);
      34             : 
      35             :   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
      36         103 :   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Location)
      37             : 
      38             :   // WebIDL API:
      39             :   void Assign(const nsAString& aUrl,
      40             :               nsIPrincipal& aSubjectPrincipal,
      41             :               ErrorResult& aError);
      42             : 
      43             :   void Replace(const nsAString& aUrl,
      44             :                nsIPrincipal& aSubjectPrincipal,
      45             :                ErrorResult& aError);
      46             : 
      47           0 :   void Reload(bool aForceget,
      48             :               nsIPrincipal& aSubjectPrincipal,
      49             :               ErrorResult& aError)
      50             :   {
      51           0 :     if (!CallerSubsumes(&aSubjectPrincipal)) {
      52           0 :       aError.Throw(NS_ERROR_DOM_SECURITY_ERR);
      53           0 :       return;
      54             :     }
      55             : 
      56           0 :     aError = Reload(aForceget);
      57             :   }
      58             : 
      59           5 :   void GetHref(nsAString& aHref,
      60             :                nsIPrincipal& aSubjectPrincipal,
      61             :                ErrorResult& aError)
      62             :   {
      63           5 :     if (!CallerSubsumes(&aSubjectPrincipal)) {
      64           0 :       aError.Throw(NS_ERROR_DOM_SECURITY_ERR);
      65           0 :       return;
      66             :     }
      67             : 
      68           5 :     aError = GetHref(aHref);
      69             :   }
      70             : 
      71             :   void SetHref(const nsAString& aHref,
      72             :                nsIPrincipal& aSubjectPrincipal,
      73             :                ErrorResult& aError);
      74             : 
      75             :   void GetOrigin(nsAString& aOrigin,
      76             :                  nsIPrincipal& aSubjectPrincipal,
      77             :                  ErrorResult& aError);
      78             : 
      79             :   void GetProtocol(nsAString& aProtocol,
      80             :                    nsIPrincipal& aSubjectPrincipal,
      81             :                    ErrorResult& aError);
      82             : 
      83             :   void SetProtocol(const nsAString& aProtocol,
      84             :                    nsIPrincipal& aSubjectPrincipal,
      85             :                    ErrorResult& aError);
      86             : 
      87             :   void GetHost(nsAString& aHost,
      88             :                nsIPrincipal& aSubjectPrincipal,
      89             :                ErrorResult& aError);
      90             : 
      91             :   void SetHost(const nsAString& aHost,
      92             :                nsIPrincipal& aSubjectPrincipal,
      93             :                ErrorResult& aError);
      94             : 
      95             :   void GetHostname(nsAString& aHostname,
      96             :                    nsIPrincipal& aSubjectPrincipal,
      97             :                    ErrorResult& aError);
      98             : 
      99             :   void SetHostname(const nsAString& aHostname,
     100             :                    nsIPrincipal& aSubjectPrincipal,
     101             :                    ErrorResult& aError);
     102             : 
     103             :   void GetPort(nsAString& aPort,
     104             :                nsIPrincipal& aSubjectPrincipal,
     105             :                ErrorResult& aError);
     106             : 
     107             :   void SetPort(const nsAString& aPort,
     108             :                nsIPrincipal& aSubjectPrincipal,
     109             :                ErrorResult& aError);
     110             : 
     111             :   void GetPathname(nsAString& aPathname,
     112             :                    nsIPrincipal& aSubjectPrincipal,
     113             :                    ErrorResult& aError);
     114             : 
     115             :   void SetPathname(const nsAString& aPathname,
     116             :                    nsIPrincipal& aSubjectPrincipal,
     117             :                    ErrorResult& aError);
     118             : 
     119             :   void GetSearch(nsAString& aSeach,
     120             :                  nsIPrincipal& aSubjectPrincipal,
     121             :                  ErrorResult& aError);
     122             : 
     123             :   void SetSearch(const nsAString& aSeach,
     124             :                  nsIPrincipal& aSubjectPrincipal,
     125             :                  ErrorResult& aError);
     126             : 
     127             :   void GetHash(nsAString& aHash,
     128             :                nsIPrincipal& aSubjectPrincipal,
     129             :                ErrorResult& aError);
     130             : 
     131             :   void SetHash(const nsAString& aHash,
     132             :                nsIPrincipal& aSubjectPrincipal,
     133             :                ErrorResult& aError);
     134             : 
     135           0 :   void Stringify(nsAString& aRetval,
     136             :                  nsIPrincipal& aSubjectPrincipal,
     137             :                  ErrorResult& aError)
     138             :   {
     139             :     // GetHref checks CallerSubsumes.
     140           0 :     GetHref(aRetval, aSubjectPrincipal, aError);
     141           0 :   }
     142             : 
     143           3 :   nsPIDOMWindowInner* GetParentObject() const
     144             :   {
     145           3 :     return mInnerWindow;
     146             :   }
     147             : 
     148             :   virtual JSObject* WrapObject(JSContext* aCx,
     149             :                                JS::Handle<JSObject*> aGivenProto) override;
     150             : 
     151             :   // Non WebIDL methods:
     152             : 
     153             :   nsresult GetHref(nsAString& aHref);
     154             : 
     155           0 :   nsresult ToString(nsAString& aString)
     156             :   {
     157           0 :     return GetHref(aString);
     158             :   }
     159             : 
     160             :   nsresult Reload(bool aForceget);
     161             : 
     162             : protected:
     163             :   virtual ~Location();
     164             : 
     165             :   // In the case of jar: uris, we sometimes want the place the jar was
     166             :   // fetched from as the URI instead of the jar: uri itself.  Pass in
     167             :   // true for aGetInnermostURI when that's the case.
     168             :   // Note, this method can return NS_OK with a null value for aURL. This happens
     169             :   // if the docShell is null.
     170             :   nsresult GetURI(nsIURI** aURL, bool aGetInnermostURI = false);
     171             :   // Note, this method can return NS_OK with a null value for aURL. This happens
     172             :   // if the docShell is null.
     173             :   nsresult GetWritableURI(nsIURI** aURL,
     174             :                           // If not null, give it the new ref
     175             :                           const nsACString* aNewRef = nullptr);
     176             :   nsresult SetURI(nsIURI* aURL, bool aReplace = false);
     177             :   nsresult SetHrefWithBase(const nsAString& aHref, nsIURI* aBase,
     178             :                            bool aReplace);
     179             :   nsresult SetHrefWithContext(JSContext* cx, const nsAString& aHref,
     180             :                               bool aReplace);
     181             : 
     182             :   nsresult GetSourceBaseURL(JSContext* cx, nsIURI** sourceURL);
     183             :   nsresult CheckURL(nsIURI *url, nsIDocShellLoadInfo** aLoadInfo);
     184             :   bool CallerSubsumes(nsIPrincipal* aSubjectPrincipal);
     185             : 
     186             :   nsString mCachedHash;
     187             :   nsCOMPtr<nsPIDOMWindowInner> mInnerWindow;
     188             :   nsWeakPtr mDocShell;
     189             : };
     190             : 
     191             : } // dom namespace
     192             : } // mozilla namespace
     193             : 
     194             : #endif // mozilla_dom_Location_h

Generated by: LCOV version 1.13