toolkit/components/url-classifier/nsUrlClassifierProxies.cpp

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     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/. */
     6 #include "nsUrlClassifierProxies.h"
     7 #include "nsUrlClassifierDBService.h"
     9 using namespace mozilla::safebrowsing;
    11 static nsresult
    12 DispatchToWorkerThread(nsIRunnable* r)
    13 {
    14   nsIThread* t = nsUrlClassifierDBService::BackgroundThread();
    15   if (!t)
    16     return NS_ERROR_FAILURE;
    18   return t->Dispatch(r, NS_DISPATCH_NORMAL);
    19 }
    21 NS_IMPL_ISUPPORTS(UrlClassifierDBServiceWorkerProxy,
    22                   nsIUrlClassifierDBServiceWorker)
    24 NS_IMETHODIMP
    25 UrlClassifierDBServiceWorkerProxy::Lookup(nsIPrincipal* aPrincipal,
    26                                           const nsACString& aTables,
    27                                           nsIUrlClassifierCallback* aCB)
    28 {
    29   nsCOMPtr<nsIRunnable> r = new LookupRunnable(mTarget, aPrincipal, aTables,
    30                                                aCB);
    31   return DispatchToWorkerThread(r);
    32 }
    34 NS_IMETHODIMP
    35 UrlClassifierDBServiceWorkerProxy::LookupRunnable::Run()
    36 {
    37   (void) mTarget->Lookup(mPrincipal, mLookupTables, mCB);
    38   return NS_OK;
    39 }
    41 NS_IMETHODIMP
    42 UrlClassifierDBServiceWorkerProxy::GetTables(nsIUrlClassifierCallback* aCB)
    43 {
    44   nsCOMPtr<nsIRunnable> r = new GetTablesRunnable(mTarget, aCB);
    45   return DispatchToWorkerThread(r);
    46 }
    48 NS_IMETHODIMP
    49 UrlClassifierDBServiceWorkerProxy::GetTablesRunnable::Run()
    50 {
    51   mTarget->GetTables(mCB);
    52   return NS_OK;
    53 }
    55 NS_IMETHODIMP
    56 UrlClassifierDBServiceWorkerProxy::SetHashCompleter
    57   (const nsACString&, nsIUrlClassifierHashCompleter*)
    58 {
    59   NS_NOTREACHED("This method should not be called!");
    60   return NS_ERROR_NOT_IMPLEMENTED;
    61 }
    63 NS_IMETHODIMP
    64 UrlClassifierDBServiceWorkerProxy::BeginUpdate
    65   (nsIUrlClassifierUpdateObserver* aUpdater,
    66    const nsACString& aTables)
    67 {
    68   nsCOMPtr<nsIRunnable> r = new BeginUpdateRunnable(mTarget, aUpdater,
    69                                                     aTables);
    70   return DispatchToWorkerThread(r);
    71 }
    73 NS_IMETHODIMP
    74 UrlClassifierDBServiceWorkerProxy::BeginUpdateRunnable::Run()
    75 {
    76   mTarget->BeginUpdate(mUpdater, mTables);
    77   return NS_OK;
    78 }
    80 NS_IMETHODIMP
    81 UrlClassifierDBServiceWorkerProxy::BeginStream(const nsACString& aTable)
    82 {
    83   nsCOMPtr<nsIRunnable> r =
    84     new BeginStreamRunnable(mTarget, aTable);
    85   return DispatchToWorkerThread(r);
    86 }
    88 NS_IMETHODIMP
    89 UrlClassifierDBServiceWorkerProxy::BeginStreamRunnable::Run()
    90 {
    91   mTarget->BeginStream(mTable);
    92   return NS_OK;
    93 }
    95 NS_IMETHODIMP
    96 UrlClassifierDBServiceWorkerProxy::UpdateStream(const nsACString& aUpdateChunk)
    97 {
    98   nsCOMPtr<nsIRunnable> r =
    99     new UpdateStreamRunnable(mTarget, aUpdateChunk);
   100   return DispatchToWorkerThread(r);
   101 }
   103 NS_IMETHODIMP
   104 UrlClassifierDBServiceWorkerProxy::UpdateStreamRunnable::Run()
   105 {
   106   mTarget->UpdateStream(mUpdateChunk);
   107   return NS_OK;
   108 }
   110 NS_IMETHODIMP
   111 UrlClassifierDBServiceWorkerProxy::FinishStream()
   112 {
   113   nsCOMPtr<nsIRunnable> r =
   114     NS_NewRunnableMethod(mTarget,
   115                          &nsIUrlClassifierDBServiceWorker::FinishStream);
   116   return DispatchToWorkerThread(r);
   117 }
   119 NS_IMETHODIMP
   120 UrlClassifierDBServiceWorkerProxy::FinishUpdate()
   121 {
   122   nsCOMPtr<nsIRunnable> r =
   123     NS_NewRunnableMethod(mTarget,
   124                          &nsIUrlClassifierDBServiceWorker::FinishUpdate);
   125   return DispatchToWorkerThread(r);
   126 }
   128 NS_IMETHODIMP
   129 UrlClassifierDBServiceWorkerProxy::CancelUpdate()
   130 {
   131   nsCOMPtr<nsIRunnable> r =
   132     NS_NewRunnableMethod(mTarget,
   133                          &nsIUrlClassifierDBServiceWorker::CancelUpdate);
   134   return DispatchToWorkerThread(r);
   135 }
   137 NS_IMETHODIMP
   138 UrlClassifierDBServiceWorkerProxy::ResetDatabase()
   139 {
   140   nsCOMPtr<nsIRunnable> r =
   141     NS_NewRunnableMethod(mTarget,
   142                          &nsIUrlClassifierDBServiceWorker::ResetDatabase);
   143   return DispatchToWorkerThread(r);
   144 }
   146 NS_IMETHODIMP
   147 UrlClassifierDBServiceWorkerProxy::CloseDb()
   148 {
   149   nsCOMPtr<nsIRunnable> r =
   150     NS_NewRunnableMethod(mTarget,
   151                          &nsIUrlClassifierDBServiceWorker::CloseDb);
   152   return DispatchToWorkerThread(r);
   153 }
   155 NS_IMETHODIMP
   156 UrlClassifierDBServiceWorkerProxy::CacheCompletions(CacheResultArray * aEntries)
   157 {
   158   nsCOMPtr<nsIRunnable> r = new CacheCompletionsRunnable(mTarget, aEntries);
   159   return DispatchToWorkerThread(r);
   160 }
   162 NS_IMETHODIMP
   163 UrlClassifierDBServiceWorkerProxy::CacheCompletionsRunnable::Run()
   164 {
   165   mTarget->CacheCompletions(mEntries);
   166   return NS_OK;
   167 }
   169 NS_IMETHODIMP
   170 UrlClassifierDBServiceWorkerProxy::CacheMisses(PrefixArray * aEntries)
   171 {
   172   nsCOMPtr<nsIRunnable> r = new CacheMissesRunnable(mTarget, aEntries);
   173   return DispatchToWorkerThread(r);
   174 }
   176 NS_IMETHODIMP
   177 UrlClassifierDBServiceWorkerProxy::CacheMissesRunnable::Run()
   178 {
   179   mTarget->CacheMisses(mEntries);
   180   return NS_OK;
   181 }
   184 NS_IMPL_ISUPPORTS(UrlClassifierLookupCallbackProxy,
   185                   nsIUrlClassifierLookupCallback)
   187 NS_IMETHODIMP
   188 UrlClassifierLookupCallbackProxy::LookupComplete
   189   (LookupResultArray * aResults)
   190 {
   191   nsCOMPtr<nsIRunnable> r = new LookupCompleteRunnable(mTarget, aResults);
   192   return NS_DispatchToMainThread(r);
   193 }
   195 NS_IMETHODIMP
   196 UrlClassifierLookupCallbackProxy::LookupCompleteRunnable::Run()
   197 {
   198   mTarget->LookupComplete(mResults);
   199   return NS_OK;
   200 }
   202 NS_IMPL_ISUPPORTS(UrlClassifierCallbackProxy,
   203                   nsIUrlClassifierCallback)
   205 NS_IMETHODIMP
   206 UrlClassifierCallbackProxy::HandleEvent(const nsACString& aValue)
   207 {
   208   nsCOMPtr<nsIRunnable> r = new HandleEventRunnable(mTarget, aValue);
   209   return NS_DispatchToMainThread(r);
   210 }
   212 NS_IMETHODIMP
   213 UrlClassifierCallbackProxy::HandleEventRunnable::Run()
   214 {
   215   mTarget->HandleEvent(mValue);
   216   return NS_OK;
   217 }
   219 NS_IMPL_ISUPPORTS(UrlClassifierUpdateObserverProxy,
   220                   nsIUrlClassifierUpdateObserver)
   222 NS_IMETHODIMP
   223 UrlClassifierUpdateObserverProxy::UpdateUrlRequested
   224   (const nsACString& aURL,
   225    const nsACString& aTable)
   226 {
   227   nsCOMPtr<nsIRunnable> r =
   228     new UpdateUrlRequestedRunnable(mTarget, aURL, aTable);
   229   return NS_DispatchToMainThread(r);
   230 }
   232 NS_IMETHODIMP
   233 UrlClassifierUpdateObserverProxy::UpdateUrlRequestedRunnable::Run()
   234 {
   235   mTarget->UpdateUrlRequested(mURL, mTable);
   236   return NS_OK;
   237 }
   239 NS_IMETHODIMP
   240 UrlClassifierUpdateObserverProxy::StreamFinished(nsresult aStatus,
   241                                                  uint32_t aDelay)
   242 {
   243   nsCOMPtr<nsIRunnable> r =
   244     new StreamFinishedRunnable(mTarget, aStatus, aDelay);
   245   return NS_DispatchToMainThread(r);
   246 }
   248 NS_IMETHODIMP
   249 UrlClassifierUpdateObserverProxy::StreamFinishedRunnable::Run()
   250 {
   251   mTarget->StreamFinished(mStatus, mDelay);
   252   return NS_OK;
   253 }
   255 NS_IMETHODIMP
   256 UrlClassifierUpdateObserverProxy::UpdateError(nsresult aError)
   257 {
   258   nsCOMPtr<nsIRunnable> r =
   259     new UpdateErrorRunnable(mTarget, aError);
   260   return NS_DispatchToMainThread(r);
   261 }
   263 NS_IMETHODIMP
   264 UrlClassifierUpdateObserverProxy::UpdateErrorRunnable::Run()
   265 {
   266   mTarget->UpdateError(mError);
   267   return NS_OK;
   268 }
   270 NS_IMETHODIMP
   271 UrlClassifierUpdateObserverProxy::UpdateSuccess(uint32_t aRequestedTimeout)
   272 {
   273   nsCOMPtr<nsIRunnable> r =
   274     new UpdateSuccessRunnable(mTarget, aRequestedTimeout);
   275   return NS_DispatchToMainThread(r);
   276 }
   278 NS_IMETHODIMP
   279 UrlClassifierUpdateObserverProxy::UpdateSuccessRunnable::Run()
   280 {
   281   mTarget->UpdateSuccess(mRequestedTimeout);
   282   return NS_OK;
   283 }

mercurial