--- a/toolkit/components/url-classifier/nsUrlClassifierProxies.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierProxies.cpp
@@ -233,22 +233,28 @@ UrlClassifierUpdateObserverProxy::Update
{
mTarget->UpdateUrlRequested(mURL, mTable, mServerMAC);
return NS_OK;
}
NS_IMETHODIMP
UrlClassifierUpdateObserverProxy::RekeyRequested()
{
- nsCOMPtr<nsIRunnable> r =
- NS_NewRunnableMethod(mTarget, &nsIUrlClassifierUpdateObserver::RekeyRequested);
+ nsCOMPtr<nsIRunnable> r = new RekeyRequestedRunnable(mTarget);
return NS_DispatchToMainThread(r);
}
NS_IMETHODIMP
+UrlClassifierUpdateObserverProxy::RekeyRequestedRunnable::Run()
+{
+ mTarget->RekeyRequested();
+ return NS_OK;
+}
+
+NS_IMETHODIMP
UrlClassifierUpdateObserverProxy::StreamFinished(nsresult aStatus,
uint32_t aDelay)
{
nsCOMPtr<nsIRunnable> r =
new StreamFinishedRunnable(mTarget, aStatus, aDelay);
return NS_DispatchToMainThread(r);
}
--- a/toolkit/components/url-classifier/nsUrlClassifierProxies.h
+++ b/toolkit/components/url-classifier/nsUrlClassifierProxies.h
@@ -2,16 +2,17 @@
/* 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 "nsProxyRelease.h"
#include "nsThreadUtils.h"
#include "mozilla/Attributes.h"
#include "nsIPrincipal.h"
#include "LookupCache.h"
using namespace mozilla::safebrowsing;
/**
@@ -157,150 +158,163 @@ private:
// The remaining classes here are all proxies to the main thread
class UrlClassifierLookupCallbackProxy MOZ_FINAL :
public nsIUrlClassifierLookupCallback
{
public:
UrlClassifierLookupCallbackProxy(nsIUrlClassifierLookupCallback* aTarget)
- : mTarget(aTarget)
+ : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>(aTarget))
{ }
NS_DECL_ISUPPORTS
NS_DECL_NSIURLCLASSIFIERLOOKUPCALLBACK
class LookupCompleteRunnable : public nsRunnable
{
public:
- LookupCompleteRunnable(nsIUrlClassifierLookupCallback* aTarget,
+ LookupCompleteRunnable(nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>* aTarget,
LookupResultArray *aResults)
: mTarget(aTarget)
, mResults(aResults)
{ }
NS_DECL_NSIRUNNABLE
private:
- nsCOMPtr<nsIUrlClassifierLookupCallback> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback> mTarget;
LookupResultArray * mResults;
};
private:
- nsCOMPtr<nsIUrlClassifierLookupCallback> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback> mTarget;
};
class UrlClassifierCallbackProxy MOZ_FINAL : public nsIUrlClassifierCallback
{
public:
UrlClassifierCallbackProxy(nsIUrlClassifierCallback* aTarget)
- : mTarget(aTarget)
+ : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierCallback>(aTarget))
{ }
NS_DECL_ISUPPORTS
NS_DECL_NSIURLCLASSIFIERCALLBACK
class HandleEventRunnable : public nsRunnable
{
public:
- HandleEventRunnable(nsIUrlClassifierCallback* aTarget,
+ HandleEventRunnable(nsMainThreadPtrHolder<nsIUrlClassifierCallback>* aTarget,
const nsACString& aValue)
: mTarget(aTarget)
, mValue(aValue)
{ }
NS_DECL_NSIRUNNABLE
private:
- nsCOMPtr<nsIUrlClassifierCallback> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierCallback> mTarget;
nsCString mValue;
};
private:
- nsCOMPtr<nsIUrlClassifierCallback> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierCallback> mTarget;
};
class UrlClassifierUpdateObserverProxy MOZ_FINAL :
public nsIUrlClassifierUpdateObserver
{
public:
UrlClassifierUpdateObserverProxy(nsIUrlClassifierUpdateObserver* aTarget)
- : mTarget(aTarget)
+ : mTarget(new nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>(aTarget))
{ }
NS_DECL_ISUPPORTS
NS_DECL_NSIURLCLASSIFIERUPDATEOBSERVER
class UpdateUrlRequestedRunnable : public nsRunnable
{
public:
- UpdateUrlRequestedRunnable(nsIUrlClassifierUpdateObserver* aTarget,
+ UpdateUrlRequestedRunnable(nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>* aTarget,
const nsACString& aURL,
const nsACString& aTable,
const nsACString& aServerMAC)
: mTarget(aTarget)
, mURL(aURL)
, mTable(aTable)
, mServerMAC(aServerMAC)
{ }
NS_DECL_NSIRUNNABLE
private:
- nsCOMPtr<nsIUrlClassifierUpdateObserver> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
nsCString mURL, mTable, mServerMAC;
};
+ class RekeyRequestedRunnable : public nsRunnable
+ {
+ public:
+ RekeyRequestedRunnable(nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>* aTarget)
+ : mTarget(aTarget)
+ { }
+
+ NS_DECL_NSIRUNNABLE
+
+ private:
+ nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
+ };
+
class StreamFinishedRunnable : public nsRunnable
{
public:
- StreamFinishedRunnable(nsIUrlClassifierUpdateObserver* aTarget,
+ StreamFinishedRunnable(nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>* aTarget,
nsresult aStatus, uint32_t aDelay)
: mTarget(aTarget)
, mStatus(aStatus)
, mDelay(aDelay)
{ }
NS_DECL_NSIRUNNABLE
private:
- nsCOMPtr<nsIUrlClassifierUpdateObserver> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
nsresult mStatus;
uint32_t mDelay;
};
class UpdateErrorRunnable : public nsRunnable
{
public:
- UpdateErrorRunnable(nsIUrlClassifierUpdateObserver* aTarget,
+ UpdateErrorRunnable(nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>* aTarget,
nsresult aError)
: mTarget(aTarget)
, mError(aError)
{ }
NS_DECL_NSIRUNNABLE
private:
- nsCOMPtr<nsIUrlClassifierUpdateObserver> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
nsresult mError;
};
class UpdateSuccessRunnable : public nsRunnable
{
public:
- UpdateSuccessRunnable(nsIUrlClassifierUpdateObserver* aTarget,
+ UpdateSuccessRunnable(nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>* aTarget,
uint32_t aRequestedTimeout)
: mTarget(aTarget)
, mRequestedTimeout(aRequestedTimeout)
{ }
NS_DECL_NSIRUNNABLE
private:
- nsCOMPtr<nsIUrlClassifierUpdateObserver> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
uint32_t mRequestedTimeout;
};
private:
- nsCOMPtr<nsIUrlClassifierUpdateObserver> mTarget;
+ nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> mTarget;
};
#endif // nsUrlClassifierProxies_h