LCOV - code coverage report
Current view: top level - toolkit/components/url-classifier - nsUrlClassifierProxies.h (source / functions) Hit Total Coverage
Test: output.info Lines: 48 94 51.1 %
Date: 2017-07-14 16:53:18 Functions: 26 53 49.1 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; 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 nsUrlClassifierProxies_h
       7             : #define nsUrlClassifierProxies_h
       8             : 
       9             : #include "nsIUrlClassifierDBService.h"
      10             : #include "nsUrlClassifierDBService.h"
      11             : #include "nsProxyRelease.h"
      12             : #include "nsThreadUtils.h"
      13             : #include "mozilla/Attributes.h"
      14             : #include "nsIPrincipal.h"
      15             : #include "LookupCache.h"
      16             : 
      17             : 
      18             : /**
      19             :  * Thread proxy from the main thread to the worker thread.
      20             :  */
      21             : class UrlClassifierDBServiceWorkerProxy final : public nsIUrlClassifierDBService
      22             : {
      23             : public:
      24           1 :   explicit UrlClassifierDBServiceWorkerProxy(nsUrlClassifierDBServiceWorker* aTarget)
      25           1 :     : mTarget(aTarget)
      26           1 :   { }
      27             : 
      28             :   NS_DECL_THREADSAFE_ISUPPORTS
      29             :   NS_DECL_NSIURLCLASSIFIERDBSERVICE
      30             : 
      31           0 :   class LookupRunnable : public mozilla::Runnable
      32             :   {
      33             :   public:
      34           0 :     LookupRunnable(nsUrlClassifierDBServiceWorker* aTarget,
      35             :                    nsIPrincipal* aPrincipal,
      36             :                    const nsACString& aTables,
      37             :                    nsIUrlClassifierCallback* aCB)
      38           0 :       : mozilla::Runnable("UrlClassifierDBServiceWorkerProxy::LookupRunnable")
      39             :       , mTarget(aTarget)
      40             :       , mPrincipal(aPrincipal)
      41             :       , mLookupTables(aTables)
      42           0 :       , mCB(aCB)
      43           0 :     { }
      44             : 
      45             :     NS_DECL_NSIRUNNABLE
      46             : 
      47             :   private:
      48             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
      49             :     nsCOMPtr<nsIPrincipal> mPrincipal;
      50             :     nsCString mLookupTables;
      51             :     nsCOMPtr<nsIUrlClassifierCallback> mCB;
      52             :   };
      53             : 
      54           6 :   class GetTablesRunnable : public mozilla::Runnable
      55             :   {
      56             :   public:
      57           2 :     GetTablesRunnable(nsUrlClassifierDBServiceWorker* aTarget,
      58             :                       nsIUrlClassifierCallback* aCB)
      59           2 :       : mozilla::Runnable(
      60             :           "UrlClassifierDBServiceWorkerProxy::GetTablesRunnable")
      61             :       , mTarget(aTarget)
      62           2 :       , mCB(aCB)
      63           2 :     { }
      64             : 
      65             :     NS_DECL_NSIRUNNABLE
      66             : 
      67             :   private:
      68             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
      69             :     nsCOMPtr<nsIUrlClassifierCallback> mCB;
      70             :   };
      71             : 
      72           6 :   class BeginUpdateRunnable : public mozilla::Runnable
      73             :   {
      74             :   public:
      75           2 :     BeginUpdateRunnable(nsUrlClassifierDBServiceWorker* aTarget,
      76             :                         nsIUrlClassifierUpdateObserver* aUpdater,
      77             :                         const nsACString& aTables)
      78           2 :       : mozilla::Runnable(
      79             :           "UrlClassifierDBServiceWorkerProxy::BeginUpdateRunnable")
      80             :       , mTarget(aTarget)
      81             :       , mUpdater(aUpdater)
      82           2 :       , mTables(aTables)
      83           2 :     { }
      84             : 
      85             :     NS_DECL_NSIRUNNABLE
      86             : 
      87             :   private:
      88             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
      89             :     nsCOMPtr<nsIUrlClassifierUpdateObserver> mUpdater;
      90             :     nsCString mTables;
      91             :   };
      92             : 
      93           3 :   class BeginStreamRunnable : public mozilla::Runnable
      94             :   {
      95             :   public:
      96           1 :     BeginStreamRunnable(nsUrlClassifierDBServiceWorker* aTarget,
      97             :                         const nsACString& aTable)
      98           1 :       : mozilla::Runnable(
      99             :           "UrlClassifierDBServiceWorkerProxy::BeginStreamRunnable")
     100             :       , mTarget(aTarget)
     101           1 :       , mTable(aTable)
     102           1 :     { }
     103             : 
     104             :     NS_DECL_NSIRUNNABLE
     105             : 
     106             :   private:
     107             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
     108             :     nsCString mTable;
     109             :   };
     110             : 
     111           3 :   class UpdateStreamRunnable : public mozilla::Runnable
     112             :   {
     113             :   public:
     114           1 :     UpdateStreamRunnable(nsUrlClassifierDBServiceWorker* aTarget,
     115             :                          const nsACString& aUpdateChunk)
     116           1 :       : mozilla::Runnable(
     117             :           "UrlClassifierDBServiceWorkerProxy::UpdateStreamRunnable")
     118             :       , mTarget(aTarget)
     119           1 :       , mUpdateChunk(aUpdateChunk)
     120           1 :     { }
     121             : 
     122             :     NS_DECL_NSIRUNNABLE
     123             : 
     124             :   private:
     125             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
     126             :     nsCString mUpdateChunk;
     127             :   };
     128             : 
     129           0 :   class CacheCompletionsRunnable : public mozilla::Runnable
     130             :   {
     131             :   public:
     132           0 :     CacheCompletionsRunnable(nsUrlClassifierDBServiceWorker* aTarget,
     133             :                              mozilla::safebrowsing::CacheResultArray* aEntries)
     134           0 :       : mozilla::Runnable(
     135             :           "UrlClassifierDBServiceWorkerProxy::CacheCompletionsRunnable")
     136             :       , mTarget(aTarget)
     137           0 :       , mEntries(aEntries)
     138           0 :     { }
     139             : 
     140             :     NS_DECL_NSIRUNNABLE
     141             : 
     142             :   private:
     143             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
     144             :      mozilla::safebrowsing::CacheResultArray *mEntries;
     145             :   };
     146             : 
     147           0 :   class DoLocalLookupRunnable : public mozilla::Runnable
     148             :   {
     149             :   public:
     150           0 :     DoLocalLookupRunnable(nsUrlClassifierDBServiceWorker* aTarget,
     151             :                           const nsACString& spec,
     152             :                           const nsACString& tables,
     153             :                           mozilla::safebrowsing::LookupResultArray* results)
     154           0 :       : mozilla::Runnable(
     155             :           "UrlClassifierDBServiceWorkerProxy::DoLocalLookupRunnable")
     156             :       , mTarget(aTarget)
     157             :       , mSpec(spec)
     158             :       , mTables(tables)
     159           0 :       , mResults(results)
     160           0 :     { }
     161             : 
     162             :     NS_DECL_NSIRUNNABLE
     163             :   private:
     164             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
     165             : 
     166             :     nsCString mSpec;
     167             :     nsCString mTables;
     168             :     mozilla::safebrowsing::LookupResultArray* mResults;
     169             :   };
     170             : 
     171           0 :   class ClearLastResultsRunnable : public mozilla::Runnable
     172             :   {
     173             :   public:
     174           0 :     explicit ClearLastResultsRunnable(nsUrlClassifierDBServiceWorker* aTarget)
     175           0 :       : mozilla::Runnable(
     176             :           "UrlClassifierDBServiceWorkerProxy::ClearLastResultsRunnable")
     177           0 :       , mTarget(aTarget)
     178           0 :     { }
     179             : 
     180             :     NS_DECL_NSIRUNNABLE
     181             :   private:
     182             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
     183             :   };
     184             : 
     185           0 :   class GetCacheInfoRunnable: public mozilla::Runnable
     186             :   {
     187             :   public:
     188           0 :     explicit GetCacheInfoRunnable(nsUrlClassifierDBServiceWorker* aTarget,
     189             :                                   const nsACString& aTable,
     190             :                                   nsIUrlClassifierCacheInfo** aCache)
     191           0 :       : mozilla::Runnable(
     192             :           "UrlClassifierDBServiceWorkerProxy::GetCacheInfoRunnable")
     193             :       , mTarget(aTarget)
     194             :       , mTable(aTable)
     195           0 :       , mCache(aCache)
     196           0 :     { }
     197             : 
     198             :     NS_DECL_NSIRUNNABLE
     199             :   private:
     200             :     RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
     201             :     nsCString mTable;
     202             :     nsIUrlClassifierCacheInfo** mCache;
     203             :   };
     204             : 
     205             : public:
     206             :   nsresult DoLocalLookup(const nsACString& spec,
     207             :                          const nsACString& tables,
     208             :                          mozilla::safebrowsing::LookupResultArray* results);
     209             : 
     210             :   nsresult OpenDb();
     211             :   nsresult CloseDb();
     212             : 
     213             :   nsresult CacheCompletions(mozilla::safebrowsing::CacheResultArray * aEntries);
     214             : 
     215             :   nsresult GetCacheInfo(const nsACString& aTable,
     216             :                         nsIUrlClassifierCacheInfo** aCache);
     217             : private:
     218           0 :   ~UrlClassifierDBServiceWorkerProxy() {}
     219             : 
     220             :   RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
     221             : };
     222             : 
     223             : // The remaining classes here are all proxies to the main thread
     224             : 
     225             : class UrlClassifierLookupCallbackProxy final :
     226             :   public nsIUrlClassifierLookupCallback
     227             : {
     228             : public:
     229           0 :   explicit UrlClassifierLookupCallbackProxy(nsIUrlClassifierLookupCallback* aTarget)
     230           0 :     : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>(
     231           0 :         "UrlClassifierLookupCallbackProxy::mTarget", aTarget))
     232           0 :   { }
     233             : 
     234             :   NS_DECL_THREADSAFE_ISUPPORTS
     235             :   NS_DECL_NSIURLCLASSIFIERLOOKUPCALLBACK
     236             : 
     237           0 :   class LookupCompleteRunnable : public mozilla::Runnable
     238             :   {
     239             :   public:
     240           0 :     LookupCompleteRunnable(
     241             :       const nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback>& aTarget,
     242             :       mozilla::safebrowsing::LookupResultArray* aResults)
     243           0 :       : mozilla::Runnable(
     244             :           "UrlClassifierLookupCallbackProxy::LookupCompleteRunnable")
     245             :       , mTarget(aTarget)
     246           0 :       , mResults(aResults)
     247           0 :     { }
     248             : 
     249             :     NS_DECL_NSIRUNNABLE
     250             : 
     251             :   private:
     252             :     nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback> mTarget;
     253             :     mozilla::safebrowsing::LookupResultArray * mResults;
     254             :   };
     255             : 
     256             : private:
     257           0 :   ~UrlClassifierLookupCallbackProxy() {}
     258             : 
     259             :   nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback> mTarget;
     260             : };
     261             : 
     262             : class UrlClassifierCallbackProxy final : public nsIUrlClassifierCallback
     263             : {
     264             : public:
     265           2 :   explicit UrlClassifierCallbackProxy(nsIUrlClassifierCallback* aTarget)
     266           2 :     : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierCallback>(
     267           4 :         "UrlClassifierCallbackProxy::mTarget", aTarget))
     268           2 :   { }
     269             : 
     270             :   NS_DECL_THREADSAFE_ISUPPORTS
     271             :   NS_DECL_NSIURLCLASSIFIERCALLBACK
     272             : 
     273           6 :   class HandleEventRunnable : public mozilla::Runnable
     274             :   {
     275             :   public:
     276           2 :     HandleEventRunnable(
     277             :       const nsMainThreadPtrHandle<nsIUrlClassifierCallback>& aTarget,
     278             :       const nsACString& aValue)
     279           2 :       : mozilla::Runnable("UrlClassifierCallbackProxy::HandleEventRunnable")
     280             :       , mTarget(aTarget)
     281           2 :       , mValue(aValue)
     282           2 :     { }
     283             : 
     284             :     NS_DECL_NSIRUNNABLE
     285             : 
     286             :   private:
     287             :     nsMainThreadPtrHandle<nsIUrlClassifierCallback> mTarget;
     288             :     nsCString mValue;
     289             :   };
     290             : 
     291             : private:
     292           2 :   ~UrlClassifierCallbackProxy() {}
     293             : 
     294             :   nsMainThreadPtrHandle<nsIUrlClassifierCallback> mTarget;
     295             : };
     296             : 
     297             : class UrlClassifierUpdateObserverProxy final :
     298             :   public nsIUrlClassifierUpdateObserver
     299             : {
     300             : public:
     301           2 :   explicit UrlClassifierUpdateObserverProxy(nsIUrlClassifierUpdateObserver* aTarget)
     302           2 :     : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>(
     303           4 :         "UrlClassifierUpdateObserverProxy::mTarget", aTarget))
     304           2 :   { }
     305             : 
     306             :   NS_DECL_THREADSAFE_ISUPPORTS
     307             :   NS_DECL_NSIURLCLASSIFIERUPDATEOBSERVER
     308             : 
     309           0 :   class UpdateUrlRequestedRunnable : public mozilla::Runnable
     310             :   {
     311             :   public:
     312           0 :     UpdateUrlRequestedRunnable(
     313             :       const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
     314             :       const nsACString& aURL,
     315             :       const nsACString& aTable)
     316           0 :       : mozilla::Runnable(
     317             :           "UrlClassifierUpdateObserverProxy::UpdateUrlRequestedRunnable")
     318             :       , mTarget(aTarget)
     319             :       , mURL(aURL)
     320           0 :       , mTable(aTable)
     321           0 :     { }
     322             : 
     323             :     NS_DECL_NSIRUNNABLE
     324             : 
     325             :   private:
     326             :     nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
     327             :     nsCString mURL, mTable;
     328             :   };
     329             : 
     330           3 :   class StreamFinishedRunnable : public mozilla::Runnable
     331             :   {
     332             :   public:
     333           1 :     StreamFinishedRunnable(
     334             :       const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
     335             :       nsresult aStatus,
     336             :       uint32_t aDelay)
     337           1 :       : mozilla::Runnable(
     338             :           "UrlClassifierUpdateObserverProxy::StreamFinishedRunnable")
     339             :       , mTarget(aTarget)
     340             :       , mStatus(aStatus)
     341           1 :       , mDelay(aDelay)
     342           1 :     { }
     343             : 
     344             :     NS_DECL_NSIRUNNABLE
     345             : 
     346             :   private:
     347             :     nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
     348             :     nsresult mStatus;
     349             :     uint32_t mDelay;
     350             :   };
     351             : 
     352           0 :   class UpdateErrorRunnable : public mozilla::Runnable
     353             :   {
     354             :   public:
     355           0 :     UpdateErrorRunnable(
     356             :       const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
     357             :       nsresult aError)
     358           0 :       : mozilla::Runnable(
     359             :           "UrlClassifierUpdateObserverProxy::UpdateErrorRunnable")
     360             :       , mTarget(aTarget)
     361           0 :       , mError(aError)
     362           0 :     { }
     363             : 
     364             :     NS_DECL_NSIRUNNABLE
     365             : 
     366             :   private:
     367             :     nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
     368             :     nsresult mError;
     369             :   };
     370             : 
     371           6 :   class UpdateSuccessRunnable : public mozilla::Runnable
     372             :   {
     373             :   public:
     374           2 :     UpdateSuccessRunnable(
     375             :       const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
     376             :       uint32_t aRequestedTimeout)
     377           2 :       : mozilla::Runnable(
     378             :           "UrlClassifierUpdateObserverProxy::UpdateSuccessRunnable")
     379             :       , mTarget(aTarget)
     380           2 :       , mRequestedTimeout(aRequestedTimeout)
     381           2 :     { }
     382             : 
     383             :     NS_DECL_NSIRUNNABLE
     384             : 
     385             :   private:
     386             :     nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
     387             :     uint32_t mRequestedTimeout;
     388             :   };
     389             : 
     390             : private:
     391           2 :   ~UrlClassifierUpdateObserverProxy() {}
     392             : 
     393             :   nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
     394             : };
     395             : 
     396             : #endif // nsUrlClassifierProxies_h

Generated by: LCOV version 1.13