LCOV - code coverage report
Current view: top level - toolkit/components/url-classifier - nsUrlClassifierProxies.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 61 140 43.6 %
Date: 2017-07-14 16:53:18 Functions: 25 52 48.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             : #include "nsUrlClassifierProxies.h"
       7             : #include "nsUrlClassifierDBService.h"
       8             : 
       9             : #include "mozilla/SyncRunnable.h"
      10             : 
      11             : using namespace mozilla::safebrowsing;
      12             : using mozilla::NewRunnableMethod;
      13             : 
      14             : static nsresult
      15          10 : DispatchToWorkerThread(nsIRunnable* r)
      16             : {
      17          10 :   nsIThread* t = nsUrlClassifierDBService::BackgroundThread();
      18          10 :   if (!t)
      19           0 :     return NS_ERROR_FAILURE;
      20             : 
      21          10 :   return t->Dispatch(r, NS_DISPATCH_NORMAL);
      22             : }
      23             : 
      24           1 : NS_IMPL_ISUPPORTS(UrlClassifierDBServiceWorkerProxy, nsIUrlClassifierDBService)
      25             : 
      26             : NS_IMETHODIMP
      27           0 : UrlClassifierDBServiceWorkerProxy::Lookup(nsIPrincipal* aPrincipal,
      28             :                                           const nsACString& aTables,
      29             :                                           nsIUrlClassifierCallback* aCB)
      30             : {
      31             :   nsCOMPtr<nsIRunnable> r = new LookupRunnable(mTarget, aPrincipal, aTables,
      32           0 :                                                aCB);
      33           0 :   return DispatchToWorkerThread(r);
      34             : }
      35             : 
      36             : NS_IMETHODIMP
      37           0 : UrlClassifierDBServiceWorkerProxy::LookupRunnable::Run()
      38             : {
      39           0 :   (void) mTarget->Lookup(mPrincipal, mLookupTables, mCB);
      40           0 :   return NS_OK;
      41             : }
      42             : 
      43             : NS_IMETHODIMP
      44           2 : UrlClassifierDBServiceWorkerProxy::GetTables(nsIUrlClassifierCallback* aCB)
      45             : {
      46           6 :   nsCOMPtr<nsIRunnable> r = new GetTablesRunnable(mTarget, aCB);
      47           4 :   return DispatchToWorkerThread(r);
      48             : }
      49             : 
      50             : NS_IMETHODIMP
      51           2 : UrlClassifierDBServiceWorkerProxy::GetTablesRunnable::Run()
      52             : {
      53           2 :   mTarget->GetTables(mCB);
      54           2 :   return NS_OK;
      55             : }
      56             : 
      57             : NS_IMETHODIMP
      58           0 : UrlClassifierDBServiceWorkerProxy::SetHashCompleter
      59             :   (const nsACString&, nsIUrlClassifierHashCompleter*)
      60             : {
      61           0 :   NS_NOTREACHED("This method should not be called!");
      62           0 :   return NS_ERROR_NOT_IMPLEMENTED;
      63             : }
      64             : 
      65             : NS_IMETHODIMP
      66           2 : UrlClassifierDBServiceWorkerProxy::BeginUpdate
      67             :   (nsIUrlClassifierUpdateObserver* aUpdater,
      68             :    const nsACString& aTables)
      69             : {
      70             :   nsCOMPtr<nsIRunnable> r = new BeginUpdateRunnable(mTarget, aUpdater,
      71           6 :                                                     aTables);
      72           4 :   return DispatchToWorkerThread(r);
      73             : }
      74             : 
      75             : NS_IMETHODIMP
      76           2 : UrlClassifierDBServiceWorkerProxy::BeginUpdateRunnable::Run()
      77             : {
      78           2 :   mTarget->BeginUpdate(mUpdater, mTables);
      79           2 :   return NS_OK;
      80             : }
      81             : 
      82             : NS_IMETHODIMP
      83           1 : UrlClassifierDBServiceWorkerProxy::BeginStream(const nsACString& aTable)
      84             : {
      85             :   nsCOMPtr<nsIRunnable> r =
      86           3 :     new BeginStreamRunnable(mTarget, aTable);
      87           2 :   return DispatchToWorkerThread(r);
      88             : }
      89             : 
      90             : NS_IMETHODIMP
      91           1 : UrlClassifierDBServiceWorkerProxy::BeginStreamRunnable::Run()
      92             : {
      93           1 :   mTarget->BeginStream(mTable);
      94           1 :   return NS_OK;
      95             : }
      96             : 
      97             : NS_IMETHODIMP
      98           1 : UrlClassifierDBServiceWorkerProxy::UpdateStream(const nsACString& aUpdateChunk)
      99             : {
     100             :   nsCOMPtr<nsIRunnable> r =
     101           3 :     new UpdateStreamRunnable(mTarget, aUpdateChunk);
     102           2 :   return DispatchToWorkerThread(r);
     103             : }
     104             : 
     105             : NS_IMETHODIMP
     106           1 : UrlClassifierDBServiceWorkerProxy::UpdateStreamRunnable::Run()
     107             : {
     108           1 :   mTarget->UpdateStream(mUpdateChunk);
     109           1 :   return NS_OK;
     110             : }
     111             : 
     112             : NS_IMETHODIMP
     113           1 : UrlClassifierDBServiceWorkerProxy::FinishStream()
     114             : {
     115             :   nsCOMPtr<nsIRunnable> r =
     116           2 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::FinishStream",
     117             :                       mTarget,
     118           2 :                       &nsUrlClassifierDBServiceWorker::FinishStream);
     119           2 :   return DispatchToWorkerThread(r);
     120             : }
     121             : 
     122             : NS_IMETHODIMP
     123           0 : UrlClassifierDBServiceWorkerProxy::DoLocalLookupRunnable::Run()
     124             : {
     125           0 :   mTarget->DoLocalLookup(mSpec, mTables, mResults);
     126           0 :   return NS_OK;
     127             : }
     128             : 
     129             : nsresult
     130           0 : UrlClassifierDBServiceWorkerProxy::DoLocalLookup(const nsACString& spec,
     131             :                                                  const nsACString& tables,
     132             :                                                  LookupResultArray* results)
     133             : 
     134             : {
     135             :   // Run synchronously on background thread. NS_DISPATCH_SYNC does *not* do
     136             :   // what we want -- it continues processing events on the main thread loop
     137             :   // before the Dispatch returns.
     138           0 :   nsCOMPtr<nsIRunnable> r = new DoLocalLookupRunnable(mTarget, spec, tables, results);
     139           0 :   nsIThread* t = nsUrlClassifierDBService::BackgroundThread();
     140           0 :   if (!t)
     141           0 :     return NS_ERROR_FAILURE;
     142             : 
     143           0 :   mozilla::SyncRunnable::DispatchToThread(t, r);
     144           0 :   return NS_OK;
     145             : }
     146             : 
     147             : NS_IMETHODIMP
     148           2 : UrlClassifierDBServiceWorkerProxy::FinishUpdate()
     149             : {
     150             :   nsCOMPtr<nsIRunnable> r =
     151           4 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::FinishUpdate",
     152             :                       mTarget,
     153           4 :                       &nsUrlClassifierDBServiceWorker::FinishUpdate);
     154           4 :   return DispatchToWorkerThread(r);
     155             : }
     156             : 
     157             : NS_IMETHODIMP
     158           0 : UrlClassifierDBServiceWorkerProxy::CancelUpdate()
     159             : {
     160             :   nsCOMPtr<nsIRunnable> r =
     161           0 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::CancelUpdate",
     162             :                       mTarget,
     163           0 :                       &nsUrlClassifierDBServiceWorker::CancelUpdate);
     164           0 :   return DispatchToWorkerThread(r);
     165             : }
     166             : 
     167             : NS_IMETHODIMP
     168           0 : UrlClassifierDBServiceWorkerProxy::ResetDatabase()
     169             : {
     170             :   nsCOMPtr<nsIRunnable> r =
     171           0 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::ResetDatabase",
     172             :                       mTarget,
     173           0 :                       &nsUrlClassifierDBServiceWorker::ResetDatabase);
     174           0 :   return DispatchToWorkerThread(r);
     175             : }
     176             : 
     177             : NS_IMETHODIMP
     178           0 : UrlClassifierDBServiceWorkerProxy::ReloadDatabase()
     179             : {
     180             :   nsCOMPtr<nsIRunnable> r =
     181           0 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::ReloadDatabase",
     182             :                       mTarget,
     183           0 :                       &nsUrlClassifierDBServiceWorker::ReloadDatabase);
     184           0 :   return DispatchToWorkerThread(r);
     185             : }
     186             : 
     187             : NS_IMETHODIMP
     188           0 : UrlClassifierDBServiceWorkerProxy::ClearCache()
     189             : {
     190             :   nsCOMPtr<nsIRunnable> r =
     191           0 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::ClearCache",
     192             :                       mTarget,
     193           0 :                       &nsUrlClassifierDBServiceWorker::ClearCache);
     194           0 :   return DispatchToWorkerThread(r);
     195             : }
     196             : 
     197             : nsresult
     198           1 : UrlClassifierDBServiceWorkerProxy::OpenDb()
     199             : {
     200             :   nsCOMPtr<nsIRunnable> r =
     201           2 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::OpenDb",
     202             :                       mTarget,
     203           2 :                       &nsUrlClassifierDBServiceWorker::OpenDb);
     204           2 :   return DispatchToWorkerThread(r);
     205             : }
     206             : 
     207             : nsresult
     208           0 : UrlClassifierDBServiceWorkerProxy::CloseDb()
     209             : {
     210             :   nsCOMPtr<nsIRunnable> r =
     211           0 :     NewRunnableMethod("nsUrlClassifierDBServiceWorker::CloseDb",
     212             :                       mTarget,
     213           0 :                       &nsUrlClassifierDBServiceWorker::CloseDb);
     214           0 :   return DispatchToWorkerThread(r);
     215             : }
     216             : 
     217             : nsresult
     218           0 : UrlClassifierDBServiceWorkerProxy::CacheCompletions(CacheResultArray * aEntries)
     219             : {
     220           0 :   nsCOMPtr<nsIRunnable> r = new CacheCompletionsRunnable(mTarget, aEntries);
     221           0 :   return DispatchToWorkerThread(r);
     222             : }
     223             : 
     224             : NS_IMETHODIMP
     225           0 : UrlClassifierDBServiceWorkerProxy::CacheCompletionsRunnable::Run()
     226             : {
     227           0 :   mTarget->CacheCompletions(mEntries);
     228           0 :   return NS_OK;
     229             : }
     230             : 
     231             : NS_IMETHODIMP
     232           0 : UrlClassifierDBServiceWorkerProxy::ClearLastResults()
     233             : {
     234           0 :   nsCOMPtr<nsIRunnable> r = new ClearLastResultsRunnable(mTarget);
     235           0 :   return DispatchToWorkerThread(r);
     236             : }
     237             : 
     238             : NS_IMETHODIMP
     239           0 : UrlClassifierDBServiceWorkerProxy::ClearLastResultsRunnable::Run()
     240             : {
     241           0 :   return mTarget->ClearLastResults();
     242             : }
     243             : 
     244             : nsresult
     245           0 : UrlClassifierDBServiceWorkerProxy::GetCacheInfo(const nsACString& aTable,
     246             :                                                 nsIUrlClassifierCacheInfo** aCache)
     247             : {
     248           0 :   nsCOMPtr<nsIRunnable> r = new GetCacheInfoRunnable(mTarget, aTable, aCache);
     249             : 
     250           0 :   nsIThread* t = nsUrlClassifierDBService::BackgroundThread();
     251           0 :   if (!t) {
     252           0 :     return NS_ERROR_FAILURE;
     253             :   }
     254             : 
     255             :   // This blocks main thread but since 'GetCacheInfo' is only used by
     256             :   // about:url-classifier so it should be fine.
     257           0 :   mozilla::SyncRunnable::DispatchToThread(t, r);
     258           0 :   return NS_OK;
     259             : }
     260             : 
     261             : NS_IMETHODIMP
     262           0 : UrlClassifierDBServiceWorkerProxy::GetCacheInfoRunnable::Run()
     263             : {
     264           0 :   return mTarget->GetCacheInfo(mTable, mCache);
     265             : }
     266             : 
     267           0 : NS_IMPL_ISUPPORTS(UrlClassifierLookupCallbackProxy,
     268             :                   nsIUrlClassifierLookupCallback)
     269             : 
     270             : NS_IMETHODIMP
     271           0 : UrlClassifierLookupCallbackProxy::LookupComplete
     272             :   (LookupResultArray * aResults)
     273             : {
     274           0 :   nsCOMPtr<nsIRunnable> r = new LookupCompleteRunnable(mTarget, aResults);
     275           0 :   return NS_DispatchToMainThread(r);
     276             : }
     277             : 
     278             : NS_IMETHODIMP
     279           0 : UrlClassifierLookupCallbackProxy::LookupCompleteRunnable::Run()
     280             : {
     281           0 :   mTarget->LookupComplete(mResults);
     282           0 :   return NS_OK;
     283             : }
     284             : 
     285          22 : NS_IMPL_ISUPPORTS(UrlClassifierCallbackProxy,
     286             :                   nsIUrlClassifierCallback)
     287             : 
     288             : NS_IMETHODIMP
     289           2 : UrlClassifierCallbackProxy::HandleEvent(const nsACString& aValue)
     290             : {
     291           4 :   nsCOMPtr<nsIRunnable> r = new HandleEventRunnable(mTarget, aValue);
     292           4 :   return NS_DispatchToMainThread(r);
     293             : }
     294             : 
     295             : NS_IMETHODIMP
     296           2 : UrlClassifierCallbackProxy::HandleEventRunnable::Run()
     297             : {
     298           2 :   mTarget->HandleEvent(mValue);
     299           2 :   return NS_OK;
     300             : }
     301             : 
     302          32 : NS_IMPL_ISUPPORTS(UrlClassifierUpdateObserverProxy,
     303             :                   nsIUrlClassifierUpdateObserver)
     304             : 
     305             : NS_IMETHODIMP
     306           0 : UrlClassifierUpdateObserverProxy::UpdateUrlRequested
     307             :   (const nsACString& aURL,
     308             :    const nsACString& aTable)
     309             : {
     310             :   nsCOMPtr<nsIRunnable> r =
     311           0 :     new UpdateUrlRequestedRunnable(mTarget, aURL, aTable);
     312           0 :   return NS_DispatchToMainThread(r);
     313             : }
     314             : 
     315             : NS_IMETHODIMP
     316           0 : UrlClassifierUpdateObserverProxy::UpdateUrlRequestedRunnable::Run()
     317             : {
     318           0 :   mTarget->UpdateUrlRequested(mURL, mTable);
     319           0 :   return NS_OK;
     320             : }
     321             : 
     322             : NS_IMETHODIMP
     323           1 : UrlClassifierUpdateObserverProxy::StreamFinished(nsresult aStatus,
     324             :                                                  uint32_t aDelay)
     325             : {
     326             :   nsCOMPtr<nsIRunnable> r =
     327           2 :     new StreamFinishedRunnable(mTarget, aStatus, aDelay);
     328           2 :   return NS_DispatchToMainThread(r);
     329             : }
     330             : 
     331             : NS_IMETHODIMP
     332           1 : UrlClassifierUpdateObserverProxy::StreamFinishedRunnable::Run()
     333             : {
     334           1 :   mTarget->StreamFinished(mStatus, mDelay);
     335           1 :   return NS_OK;
     336             : }
     337             : 
     338             : NS_IMETHODIMP
     339           0 : UrlClassifierUpdateObserverProxy::UpdateError(nsresult aError)
     340             : {
     341             :   nsCOMPtr<nsIRunnable> r =
     342           0 :     new UpdateErrorRunnable(mTarget, aError);
     343           0 :   return NS_DispatchToMainThread(r);
     344             : }
     345             : 
     346             : NS_IMETHODIMP
     347           0 : UrlClassifierUpdateObserverProxy::UpdateErrorRunnable::Run()
     348             : {
     349           0 :   mTarget->UpdateError(mError);
     350           0 :   return NS_OK;
     351             : }
     352             : 
     353             : NS_IMETHODIMP
     354           2 : UrlClassifierUpdateObserverProxy::UpdateSuccess(uint32_t aRequestedTimeout)
     355             : {
     356             :   nsCOMPtr<nsIRunnable> r =
     357           4 :     new UpdateSuccessRunnable(mTarget, aRequestedTimeout);
     358           4 :   return NS_DispatchToMainThread(r);
     359             : }
     360             : 
     361             : NS_IMETHODIMP
     362           2 : UrlClassifierUpdateObserverProxy::UpdateSuccessRunnable::Run()
     363             : {
     364           2 :   mTarget->UpdateSuccess(mRequestedTimeout);
     365           2 :   return NS_OK;
     366             : }

Generated by: LCOV version 1.13