toolkit/components/url-classifier/nsUrlClassifierProxies.cpp

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/toolkit/components/url-classifier/nsUrlClassifierProxies.cpp	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,283 @@
     1.4 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +#include "nsUrlClassifierProxies.h"
    1.10 +#include "nsUrlClassifierDBService.h"
    1.11 +
    1.12 +using namespace mozilla::safebrowsing;
    1.13 +
    1.14 +static nsresult
    1.15 +DispatchToWorkerThread(nsIRunnable* r)
    1.16 +{
    1.17 +  nsIThread* t = nsUrlClassifierDBService::BackgroundThread();
    1.18 +  if (!t)
    1.19 +    return NS_ERROR_FAILURE;
    1.20 +
    1.21 +  return t->Dispatch(r, NS_DISPATCH_NORMAL);
    1.22 +}
    1.23 +
    1.24 +NS_IMPL_ISUPPORTS(UrlClassifierDBServiceWorkerProxy,
    1.25 +                  nsIUrlClassifierDBServiceWorker)
    1.26 +
    1.27 +NS_IMETHODIMP
    1.28 +UrlClassifierDBServiceWorkerProxy::Lookup(nsIPrincipal* aPrincipal,
    1.29 +                                          const nsACString& aTables,
    1.30 +                                          nsIUrlClassifierCallback* aCB)
    1.31 +{
    1.32 +  nsCOMPtr<nsIRunnable> r = new LookupRunnable(mTarget, aPrincipal, aTables,
    1.33 +                                               aCB);
    1.34 +  return DispatchToWorkerThread(r);
    1.35 +}
    1.36 +
    1.37 +NS_IMETHODIMP
    1.38 +UrlClassifierDBServiceWorkerProxy::LookupRunnable::Run()
    1.39 +{
    1.40 +  (void) mTarget->Lookup(mPrincipal, mLookupTables, mCB);
    1.41 +  return NS_OK;
    1.42 +}
    1.43 +
    1.44 +NS_IMETHODIMP
    1.45 +UrlClassifierDBServiceWorkerProxy::GetTables(nsIUrlClassifierCallback* aCB)
    1.46 +{
    1.47 +  nsCOMPtr<nsIRunnable> r = new GetTablesRunnable(mTarget, aCB);
    1.48 +  return DispatchToWorkerThread(r);
    1.49 +}
    1.50 +
    1.51 +NS_IMETHODIMP
    1.52 +UrlClassifierDBServiceWorkerProxy::GetTablesRunnable::Run()
    1.53 +{
    1.54 +  mTarget->GetTables(mCB);
    1.55 +  return NS_OK;
    1.56 +}
    1.57 +
    1.58 +NS_IMETHODIMP
    1.59 +UrlClassifierDBServiceWorkerProxy::SetHashCompleter
    1.60 +  (const nsACString&, nsIUrlClassifierHashCompleter*)
    1.61 +{
    1.62 +  NS_NOTREACHED("This method should not be called!");
    1.63 +  return NS_ERROR_NOT_IMPLEMENTED;
    1.64 +}
    1.65 +
    1.66 +NS_IMETHODIMP
    1.67 +UrlClassifierDBServiceWorkerProxy::BeginUpdate
    1.68 +  (nsIUrlClassifierUpdateObserver* aUpdater,
    1.69 +   const nsACString& aTables)
    1.70 +{
    1.71 +  nsCOMPtr<nsIRunnable> r = new BeginUpdateRunnable(mTarget, aUpdater,
    1.72 +                                                    aTables);
    1.73 +  return DispatchToWorkerThread(r);
    1.74 +}
    1.75 +
    1.76 +NS_IMETHODIMP
    1.77 +UrlClassifierDBServiceWorkerProxy::BeginUpdateRunnable::Run()
    1.78 +{
    1.79 +  mTarget->BeginUpdate(mUpdater, mTables);
    1.80 +  return NS_OK;
    1.81 +}
    1.82 +
    1.83 +NS_IMETHODIMP
    1.84 +UrlClassifierDBServiceWorkerProxy::BeginStream(const nsACString& aTable)
    1.85 +{
    1.86 +  nsCOMPtr<nsIRunnable> r =
    1.87 +    new BeginStreamRunnable(mTarget, aTable);
    1.88 +  return DispatchToWorkerThread(r);
    1.89 +}
    1.90 +
    1.91 +NS_IMETHODIMP
    1.92 +UrlClassifierDBServiceWorkerProxy::BeginStreamRunnable::Run()
    1.93 +{
    1.94 +  mTarget->BeginStream(mTable);
    1.95 +  return NS_OK;
    1.96 +}
    1.97 +
    1.98 +NS_IMETHODIMP
    1.99 +UrlClassifierDBServiceWorkerProxy::UpdateStream(const nsACString& aUpdateChunk)
   1.100 +{
   1.101 +  nsCOMPtr<nsIRunnable> r =
   1.102 +    new UpdateStreamRunnable(mTarget, aUpdateChunk);
   1.103 +  return DispatchToWorkerThread(r);
   1.104 +}
   1.105 +
   1.106 +NS_IMETHODIMP
   1.107 +UrlClassifierDBServiceWorkerProxy::UpdateStreamRunnable::Run()
   1.108 +{
   1.109 +  mTarget->UpdateStream(mUpdateChunk);
   1.110 +  return NS_OK;
   1.111 +}
   1.112 +
   1.113 +NS_IMETHODIMP
   1.114 +UrlClassifierDBServiceWorkerProxy::FinishStream()
   1.115 +{
   1.116 +  nsCOMPtr<nsIRunnable> r =
   1.117 +    NS_NewRunnableMethod(mTarget,
   1.118 +                         &nsIUrlClassifierDBServiceWorker::FinishStream);
   1.119 +  return DispatchToWorkerThread(r);
   1.120 +}
   1.121 +
   1.122 +NS_IMETHODIMP
   1.123 +UrlClassifierDBServiceWorkerProxy::FinishUpdate()
   1.124 +{
   1.125 +  nsCOMPtr<nsIRunnable> r =
   1.126 +    NS_NewRunnableMethod(mTarget,
   1.127 +                         &nsIUrlClassifierDBServiceWorker::FinishUpdate);
   1.128 +  return DispatchToWorkerThread(r);
   1.129 +}
   1.130 +
   1.131 +NS_IMETHODIMP
   1.132 +UrlClassifierDBServiceWorkerProxy::CancelUpdate()
   1.133 +{
   1.134 +  nsCOMPtr<nsIRunnable> r =
   1.135 +    NS_NewRunnableMethod(mTarget,
   1.136 +                         &nsIUrlClassifierDBServiceWorker::CancelUpdate);
   1.137 +  return DispatchToWorkerThread(r);
   1.138 +}
   1.139 +
   1.140 +NS_IMETHODIMP
   1.141 +UrlClassifierDBServiceWorkerProxy::ResetDatabase()
   1.142 +{
   1.143 +  nsCOMPtr<nsIRunnable> r =
   1.144 +    NS_NewRunnableMethod(mTarget,
   1.145 +                         &nsIUrlClassifierDBServiceWorker::ResetDatabase);
   1.146 +  return DispatchToWorkerThread(r);
   1.147 +}
   1.148 +
   1.149 +NS_IMETHODIMP
   1.150 +UrlClassifierDBServiceWorkerProxy::CloseDb()
   1.151 +{
   1.152 +  nsCOMPtr<nsIRunnable> r =
   1.153 +    NS_NewRunnableMethod(mTarget,
   1.154 +                         &nsIUrlClassifierDBServiceWorker::CloseDb);
   1.155 +  return DispatchToWorkerThread(r);
   1.156 +}
   1.157 +
   1.158 +NS_IMETHODIMP
   1.159 +UrlClassifierDBServiceWorkerProxy::CacheCompletions(CacheResultArray * aEntries)
   1.160 +{
   1.161 +  nsCOMPtr<nsIRunnable> r = new CacheCompletionsRunnable(mTarget, aEntries);
   1.162 +  return DispatchToWorkerThread(r);
   1.163 +}
   1.164 +
   1.165 +NS_IMETHODIMP
   1.166 +UrlClassifierDBServiceWorkerProxy::CacheCompletionsRunnable::Run()
   1.167 +{
   1.168 +  mTarget->CacheCompletions(mEntries);
   1.169 +  return NS_OK;
   1.170 +}
   1.171 +
   1.172 +NS_IMETHODIMP
   1.173 +UrlClassifierDBServiceWorkerProxy::CacheMisses(PrefixArray * aEntries)
   1.174 +{
   1.175 +  nsCOMPtr<nsIRunnable> r = new CacheMissesRunnable(mTarget, aEntries);
   1.176 +  return DispatchToWorkerThread(r);
   1.177 +}
   1.178 +
   1.179 +NS_IMETHODIMP
   1.180 +UrlClassifierDBServiceWorkerProxy::CacheMissesRunnable::Run()
   1.181 +{
   1.182 +  mTarget->CacheMisses(mEntries);
   1.183 +  return NS_OK;
   1.184 +}
   1.185 +
   1.186 +
   1.187 +NS_IMPL_ISUPPORTS(UrlClassifierLookupCallbackProxy,
   1.188 +                  nsIUrlClassifierLookupCallback)
   1.189 +
   1.190 +NS_IMETHODIMP
   1.191 +UrlClassifierLookupCallbackProxy::LookupComplete
   1.192 +  (LookupResultArray * aResults)
   1.193 +{
   1.194 +  nsCOMPtr<nsIRunnable> r = new LookupCompleteRunnable(mTarget, aResults);
   1.195 +  return NS_DispatchToMainThread(r);
   1.196 +}
   1.197 +
   1.198 +NS_IMETHODIMP
   1.199 +UrlClassifierLookupCallbackProxy::LookupCompleteRunnable::Run()
   1.200 +{
   1.201 +  mTarget->LookupComplete(mResults);
   1.202 +  return NS_OK;
   1.203 +}
   1.204 +
   1.205 +NS_IMPL_ISUPPORTS(UrlClassifierCallbackProxy,
   1.206 +                  nsIUrlClassifierCallback)
   1.207 +
   1.208 +NS_IMETHODIMP
   1.209 +UrlClassifierCallbackProxy::HandleEvent(const nsACString& aValue)
   1.210 +{
   1.211 +  nsCOMPtr<nsIRunnable> r = new HandleEventRunnable(mTarget, aValue);
   1.212 +  return NS_DispatchToMainThread(r);
   1.213 +}
   1.214 +
   1.215 +NS_IMETHODIMP
   1.216 +UrlClassifierCallbackProxy::HandleEventRunnable::Run()
   1.217 +{
   1.218 +  mTarget->HandleEvent(mValue);
   1.219 +  return NS_OK;
   1.220 +}
   1.221 +
   1.222 +NS_IMPL_ISUPPORTS(UrlClassifierUpdateObserverProxy,
   1.223 +                  nsIUrlClassifierUpdateObserver)
   1.224 +
   1.225 +NS_IMETHODIMP
   1.226 +UrlClassifierUpdateObserverProxy::UpdateUrlRequested
   1.227 +  (const nsACString& aURL,
   1.228 +   const nsACString& aTable)
   1.229 +{
   1.230 +  nsCOMPtr<nsIRunnable> r =
   1.231 +    new UpdateUrlRequestedRunnable(mTarget, aURL, aTable);
   1.232 +  return NS_DispatchToMainThread(r);
   1.233 +}
   1.234 +
   1.235 +NS_IMETHODIMP
   1.236 +UrlClassifierUpdateObserverProxy::UpdateUrlRequestedRunnable::Run()
   1.237 +{
   1.238 +  mTarget->UpdateUrlRequested(mURL, mTable);
   1.239 +  return NS_OK;
   1.240 +}
   1.241 +
   1.242 +NS_IMETHODIMP
   1.243 +UrlClassifierUpdateObserverProxy::StreamFinished(nsresult aStatus,
   1.244 +                                                 uint32_t aDelay)
   1.245 +{
   1.246 +  nsCOMPtr<nsIRunnable> r =
   1.247 +    new StreamFinishedRunnable(mTarget, aStatus, aDelay);
   1.248 +  return NS_DispatchToMainThread(r);
   1.249 +}
   1.250 +
   1.251 +NS_IMETHODIMP
   1.252 +UrlClassifierUpdateObserverProxy::StreamFinishedRunnable::Run()
   1.253 +{
   1.254 +  mTarget->StreamFinished(mStatus, mDelay);
   1.255 +  return NS_OK;
   1.256 +}
   1.257 +
   1.258 +NS_IMETHODIMP
   1.259 +UrlClassifierUpdateObserverProxy::UpdateError(nsresult aError)
   1.260 +{
   1.261 +  nsCOMPtr<nsIRunnable> r =
   1.262 +    new UpdateErrorRunnable(mTarget, aError);
   1.263 +  return NS_DispatchToMainThread(r);
   1.264 +}
   1.265 +
   1.266 +NS_IMETHODIMP
   1.267 +UrlClassifierUpdateObserverProxy::UpdateErrorRunnable::Run()
   1.268 +{
   1.269 +  mTarget->UpdateError(mError);
   1.270 +  return NS_OK;
   1.271 +}
   1.272 +
   1.273 +NS_IMETHODIMP
   1.274 +UrlClassifierUpdateObserverProxy::UpdateSuccess(uint32_t aRequestedTimeout)
   1.275 +{
   1.276 +  nsCOMPtr<nsIRunnable> r =
   1.277 +    new UpdateSuccessRunnable(mTarget, aRequestedTimeout);
   1.278 +  return NS_DispatchToMainThread(r);
   1.279 +}
   1.280 +
   1.281 +NS_IMETHODIMP
   1.282 +UrlClassifierUpdateObserverProxy::UpdateSuccessRunnable::Run()
   1.283 +{
   1.284 +  mTarget->UpdateSuccess(mRequestedTimeout);
   1.285 +  return NS_OK;
   1.286 +}

mercurial