LCOV - code coverage report
Current view: top level - toolkit/components/extensions - WebExtensionPolicy.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 35 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 26 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*-  Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #ifndef mozilla_extensions_WebExtensionPolicy_h
       7             : #define mozilla_extensions_WebExtensionPolicy_h
       8             : 
       9             : #include "mozilla/dom/BindingDeclarations.h"
      10             : #include "mozilla/dom/WebExtensionPolicyBinding.h"
      11             : #include "mozilla/extensions/MatchPattern.h"
      12             : 
      13             : #include "jspubtd.h"
      14             : 
      15             : #include "mozilla/Result.h"
      16             : #include "mozilla/WeakPtr.h"
      17             : #include "nsCOMPtr.h"
      18             : #include "nsCycleCollectionParticipant.h"
      19             : #include "nsISupports.h"
      20             : #include "nsWrapperCache.h"
      21             : 
      22             : namespace mozilla {
      23             : namespace extensions {
      24             : 
      25             : using dom::WebExtensionInit;
      26             : using dom::WebExtensionLocalizeCallback;
      27             : 
      28             : class WebExtensionContentScript;
      29             : 
      30             : class WebExtensionPolicy final : public nsISupports
      31             :                                , public nsWrapperCache
      32             :                                , public SupportsWeakPtr<WebExtensionPolicy>
      33             : {
      34             : public:
      35             :   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
      36           0 :   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(WebExtensionPolicy)
      37           0 :   MOZ_DECLARE_WEAKREFERENCE_TYPENAME(WebExtensionPolicy)
      38             : 
      39             :   using ScriptArray = nsTArray<RefPtr<WebExtensionContentScript>>;
      40             : 
      41             :   static already_AddRefed<WebExtensionPolicy>
      42             :   Constructor(dom::GlobalObject& aGlobal, const WebExtensionInit& aInit, ErrorResult& aRv);
      43             : 
      44           0 :   nsIAtom* Id() const { return mId; }
      45           0 :   void GetId(nsAString& aId) const { aId = nsDependentAtomString(mId); };
      46             : 
      47           0 :   const nsCString& MozExtensionHostname() const { return mHostname; }
      48           0 :   void GetMozExtensionHostname(nsACString& aHostname) const
      49             :   {
      50           0 :     aHostname = MozExtensionHostname();
      51           0 :   }
      52             : 
      53           0 :   void GetBaseURL(nsACString& aBaseURL) const
      54             :   {
      55           0 :     MOZ_ALWAYS_SUCCEEDS(mBaseURI->GetSpec(aBaseURL));
      56           0 :   }
      57             : 
      58             :   void GetURL(const nsAString& aPath, nsAString& aURL, ErrorResult& aRv) const;
      59             : 
      60             :   Result<nsString, nsresult> GetURL(const nsAString& aPath) const;
      61             : 
      62           0 :   bool CanAccessURI(nsIURI* aURI, bool aExplicit = false) const
      63             :   {
      64           0 :     return mHostPermissions && mHostPermissions->Matches(aURI, aExplicit);
      65             :   }
      66             : 
      67           0 :   bool IsPathWebAccessible(const nsAString& aPath) const
      68             :   {
      69           0 :     return mWebAccessiblePaths.Matches(aPath);
      70             :   }
      71             : 
      72             :   bool HasPermission(const nsIAtom* aPermission) const
      73             :   {
      74             :     return mPermissions->Contains(aPermission);
      75             :   }
      76           0 :   bool HasPermission(const nsAString& aPermission) const
      77             :   {
      78           0 :     return mPermissions->Contains(aPermission);
      79             :   }
      80             : 
      81             :   nsCString BackgroundPageHTML() const;
      82             : 
      83             :   void Localize(const nsAString& aInput, nsString& aResult) const;
      84             : 
      85             :   const nsString& ContentSecurityPolicy() const
      86             :   {
      87             :     return mContentSecurityPolicy;
      88             :   }
      89           0 :   void GetContentSecurityPolicy(nsAString& aCSP) const
      90             :   {
      91           0 :     aCSP = mContentSecurityPolicy;
      92           0 :   }
      93             : 
      94             : 
      95           0 :   already_AddRefed<MatchPatternSet> AllowedOrigins()
      96             :   {
      97           0 :     return do_AddRef(mHostPermissions);
      98             :   }
      99           0 :   void SetAllowedOrigins(MatchPatternSet& aAllowedOrigins)
     100             :   {
     101           0 :     mHostPermissions = &aAllowedOrigins;
     102           0 :   }
     103             : 
     104           0 :   void GetPermissions(nsTArray<nsString>& aResult) const
     105             :   {
     106           0 :     mPermissions->Get(aResult);
     107           0 :   }
     108           0 :   void SetPermissions(const nsTArray<nsString>& aPermissions)
     109             :   {
     110           0 :     mPermissions = new AtomSet(aPermissions);
     111           0 :   }
     112             : 
     113             :   void GetContentScripts(ScriptArray& aScripts) const;
     114           0 :   const ScriptArray& ContentScripts() const { return mContentScripts; }
     115             : 
     116             : 
     117           0 :   bool Active() const { return mActive; }
     118             :   void SetActive(bool aActive, ErrorResult& aRv);
     119             : 
     120             : 
     121             :   static void
     122             :   GetActiveExtensions(dom::GlobalObject& aGlobal, nsTArray<RefPtr<WebExtensionPolicy>>& aResults);
     123             : 
     124             :   static already_AddRefed<WebExtensionPolicy>
     125             :   GetByID(dom::GlobalObject& aGlobal, const nsAString& aID);
     126             : 
     127             :   static already_AddRefed<WebExtensionPolicy>
     128             :   GetByHostname(dom::GlobalObject& aGlobal, const nsACString& aHostname);
     129             : 
     130             :   static already_AddRefed<WebExtensionPolicy>
     131             :   GetByURI(dom::GlobalObject& aGlobal, nsIURI* aURI);
     132             : 
     133             : 
     134             :   static bool IsExtensionProcess(dom::GlobalObject& aGlobal);
     135             : 
     136             : 
     137           0 :   nsISupports* GetParentObject() const { return mParent; }
     138             : 
     139             :   virtual JSObject* WrapObject(JSContext* aCx, JS::HandleObject aGivenProto) override;
     140             : 
     141             : protected:
     142           0 :   virtual ~WebExtensionPolicy() = default;
     143             : 
     144             : private:
     145             :   WebExtensionPolicy(dom::GlobalObject& aGlobal, const WebExtensionInit& aInit, ErrorResult& aRv);
     146             : 
     147             :   bool Enable();
     148             :   bool Disable();
     149             : 
     150             :   nsCOMPtr<nsISupports> mParent;
     151             : 
     152             :   nsCOMPtr<nsIAtom> mId;
     153             :   nsCString mHostname;
     154             :   nsCOMPtr<nsIURI> mBaseURI;
     155             : 
     156             :   nsString mContentSecurityPolicy;
     157             : 
     158             :   bool mActive = false;
     159             : 
     160             :   RefPtr<WebExtensionLocalizeCallback> mLocalizeCallback;
     161             : 
     162             :   RefPtr<AtomSet> mPermissions;
     163             :   RefPtr<MatchPatternSet> mHostPermissions;
     164             :   MatchGlobSet mWebAccessiblePaths;
     165             : 
     166             :   Nullable<nsTArray<nsString>> mBackgroundScripts;
     167             : 
     168             :   nsTArray<RefPtr<WebExtensionContentScript>> mContentScripts;
     169             : };
     170             : 
     171             : } // namespace extensions
     172             : } // namespace mozilla
     173             : 
     174             : #endif // mozilla_extensions_WebExtensionPolicy_h

Generated by: LCOV version 1.13