123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #ifndef nsUrlClassifierProxies_h
- #define nsUrlClassifierProxies_h
- #include "nsIUrlClassifierDBService.h"
- #include "nsUrlClassifierDBService.h"
- #include "nsProxyRelease.h"
- #include "nsThreadUtils.h"
- #include "mozilla/Attributes.h"
- #include "nsIPrincipal.h"
- #include "LookupCache.h"
- /**
- * Thread proxy from the main thread to the worker thread.
- */
- class UrlClassifierDBServiceWorkerProxy final : public nsIUrlClassifierDBService
- {
- public:
- explicit UrlClassifierDBServiceWorkerProxy(nsUrlClassifierDBServiceWorker* aTarget)
- : mTarget(aTarget)
- { }
- NS_DECL_THREADSAFE_ISUPPORTS
- NS_DECL_NSIURLCLASSIFIERDBSERVICE
- class LookupRunnable : public mozilla::Runnable
- {
- public:
- LookupRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- nsIPrincipal* aPrincipal,
- const nsACString& aTables,
- nsIUrlClassifierCallback* aCB)
- : mTarget(aTarget)
- , mPrincipal(aPrincipal)
- , mLookupTables(aTables)
- , mCB(aCB)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- nsCOMPtr<nsIPrincipal> mPrincipal;
- nsCString mLookupTables;
- nsCOMPtr<nsIUrlClassifierCallback> mCB;
- };
- class GetTablesRunnable : public mozilla::Runnable
- {
- public:
- GetTablesRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- nsIUrlClassifierCallback* aCB)
- : mTarget(aTarget)
- , mCB(aCB)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- nsCOMPtr<nsIUrlClassifierCallback> mCB;
- };
- class BeginUpdateRunnable : public mozilla::Runnable
- {
- public:
- BeginUpdateRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- nsIUrlClassifierUpdateObserver* aUpdater,
- const nsACString& aTables)
- : mTarget(aTarget)
- , mUpdater(aUpdater)
- , mTables(aTables)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- nsCOMPtr<nsIUrlClassifierUpdateObserver> mUpdater;
- nsCString mTables;
- };
- class BeginStreamRunnable : public mozilla::Runnable
- {
- public:
- BeginStreamRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- const nsACString& aTable)
- : mTarget(aTarget)
- , mTable(aTable)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- nsCString mTable;
- };
- class UpdateStreamRunnable : public mozilla::Runnable
- {
- public:
- UpdateStreamRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- const nsACString& aUpdateChunk)
- : mTarget(aTarget)
- , mUpdateChunk(aUpdateChunk)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- nsCString mUpdateChunk;
- };
- class CacheCompletionsRunnable : public mozilla::Runnable
- {
- public:
- CacheCompletionsRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- mozilla::safebrowsing::CacheResultArray *aEntries)
- : mTarget(aTarget)
- , mEntries(aEntries)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- mozilla::safebrowsing::CacheResultArray *mEntries;
- };
- class CacheMissesRunnable : public mozilla::Runnable
- {
- public:
- CacheMissesRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- mozilla::safebrowsing::PrefixArray *aEntries)
- : mTarget(aTarget)
- , mEntries(aEntries)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- mozilla::safebrowsing::PrefixArray *mEntries;
- };
- class DoLocalLookupRunnable : public mozilla::Runnable
- {
- public:
- DoLocalLookupRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- const nsACString& spec,
- const nsACString& tables,
- mozilla::safebrowsing::LookupResultArray* results)
- : mTarget(aTarget)
- , mSpec(spec)
- , mTables(tables)
- , mResults(results)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- nsCString mSpec;
- nsCString mTables;
- mozilla::safebrowsing::LookupResultArray* mResults;
- };
- class SetLastUpdateTimeRunnable : public mozilla::Runnable
- {
- public:
- SetLastUpdateTimeRunnable(nsUrlClassifierDBServiceWorker* aTarget,
- const nsACString& table,
- uint64_t updateTime)
- : mTarget(aTarget),
- mTable(table),
- mUpdateTime(updateTime)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- nsCString mTable;
- uint64_t mUpdateTime;
- };
- class ClearLastResultsRunnable : public mozilla::Runnable
- {
- public:
- explicit ClearLastResultsRunnable(nsUrlClassifierDBServiceWorker* aTarget)
- : mTarget(aTarget)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- };
- public:
- nsresult DoLocalLookup(const nsACString& spec,
- const nsACString& tables,
- mozilla::safebrowsing::LookupResultArray* results);
- nsresult OpenDb();
- nsresult CloseDb();
- nsresult CacheCompletions(mozilla::safebrowsing::CacheResultArray * aEntries);
- nsresult CacheMisses(mozilla::safebrowsing::PrefixArray * aEntries);
- private:
- ~UrlClassifierDBServiceWorkerProxy() {}
- RefPtr<nsUrlClassifierDBServiceWorker> mTarget;
- };
- // The remaining classes here are all proxies to the main thread
- class UrlClassifierLookupCallbackProxy final :
- public nsIUrlClassifierLookupCallback
- {
- public:
- explicit UrlClassifierLookupCallbackProxy(nsIUrlClassifierLookupCallback* aTarget)
- : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>(aTarget))
- { }
- NS_DECL_THREADSAFE_ISUPPORTS
- NS_DECL_NSIURLCLASSIFIERLOOKUPCALLBACK
- class LookupCompleteRunnable : public mozilla::Runnable
- {
- public:
- LookupCompleteRunnable(const nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback>& aTarget,
- mozilla::safebrowsing::LookupResultArray *aResults)
- : mTarget(aTarget)
- , mResults(aResults)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback> mTarget;
- mozilla::safebrowsing::LookupResultArray * mResults;
- };
- private:
- ~UrlClassifierLookupCallbackProxy() {}
- nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback> mTarget;
- };
- class UrlClassifierCallbackProxy final : public nsIUrlClassifierCallback
- {
- public:
- explicit UrlClassifierCallbackProxy(nsIUrlClassifierCallback* aTarget)
- : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierCallback>(aTarget))
- { }
- NS_DECL_THREADSAFE_ISUPPORTS
- NS_DECL_NSIURLCLASSIFIERCALLBACK
- class HandleEventRunnable : public mozilla::Runnable
- {
- public:
- HandleEventRunnable(const nsMainThreadPtrHandle<nsIUrlClassifierCallback>& aTarget,
- const nsACString& aValue)
- : mTarget(aTarget)
- , mValue(aValue)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- nsMainThreadPtrHandle<nsIUrlClassifierCallback> mTarget;
- nsCString mValue;
- };
- private:
- ~UrlClassifierCallbackProxy() {}
- nsMainThreadPtrHandle<nsIUrlClassifierCallback> mTarget;
- };
- class UrlClassifierUpdateObserverProxy final :
- public nsIUrlClassifierUpdateObserver
- {
- public:
- explicit UrlClassifierUpdateObserverProxy(nsIUrlClassifierUpdateObserver* aTarget)
- : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>(aTarget))
- { }
- NS_DECL_THREADSAFE_ISUPPORTS
- NS_DECL_NSIURLCLASSIFIERUPDATEOBSERVER
- class UpdateUrlRequestedRunnable : public mozilla::Runnable
- {
- public:
- UpdateUrlRequestedRunnable(const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
- const nsACString& aURL,
- const nsACString& aTable)
- : mTarget(aTarget)
- , mURL(aURL)
- , mTable(aTable)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
- nsCString mURL, mTable;
- };
- class StreamFinishedRunnable : public mozilla::Runnable
- {
- public:
- StreamFinishedRunnable(const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
- nsresult aStatus, uint32_t aDelay)
- : mTarget(aTarget)
- , mStatus(aStatus)
- , mDelay(aDelay)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
- nsresult mStatus;
- uint32_t mDelay;
- };
- class UpdateErrorRunnable : public mozilla::Runnable
- {
- public:
- UpdateErrorRunnable(const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
- nsresult aError)
- : mTarget(aTarget)
- , mError(aError)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
- nsresult mError;
- };
- class UpdateSuccessRunnable : public mozilla::Runnable
- {
- public:
- UpdateSuccessRunnable(const nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>& aTarget,
- uint32_t aRequestedTimeout)
- : mTarget(aTarget)
- , mRequestedTimeout(aRequestedTimeout)
- { }
- NS_DECL_NSIRUNNABLE
- private:
- nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
- uint32_t mRequestedTimeout;
- };
- private:
- ~UrlClassifierUpdateObserverProxy() {}
- nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
- };
- #endif // nsUrlClassifierProxies_h
|