| Index: content/renderer/media/rtc_certificate_generator.cc
|
| diff --git a/content/renderer/media/rtc_certificate_generator.cc b/content/renderer/media/rtc_certificate_generator.cc
|
| index aa3f8d72c93fae0a19ea5bf5aa505de41c65b530..4b819c89056c8d89d6eaf3436b8744e1c4257667 100644
|
| --- a/content/renderer/media/rtc_certificate_generator.cc
|
| +++ b/content/renderer/media/rtc_certificate_generator.cc
|
| @@ -43,6 +43,10 @@ rtc::KeyParams WebRTCKeyParamsToKeyParams(
|
| // request alive independently of the |RTCCertificateGenerator| that spawned it.
|
| class RTCCertificateGeneratorRequest
|
| : public base::RefCountedThreadSafe<RTCCertificateGeneratorRequest> {
|
| + private:
|
| + using CertificateCallbackPtr = std::unique_ptr<
|
| + blink::WebRTCCertificateCallback,
|
| + base::OnTaskRunnerDeleter>;
|
| public:
|
| RTCCertificateGeneratorRequest(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& main_thread,
|
| @@ -59,12 +63,16 @@ class RTCCertificateGeneratorRequest
|
| std::unique_ptr<blink::WebRTCCertificateCallback> observer) {
|
| DCHECK(main_thread_->BelongsToCurrentThread());
|
| DCHECK(observer);
|
| +
|
| + CertificateCallbackPtr transition(
|
| + observer.release(),
|
| + base::OnTaskRunnerDeleter(base::ThreadTaskRunnerHandle::Get()));
|
| worker_thread_->PostTask(FROM_HERE, base::Bind(
|
| &RTCCertificateGeneratorRequest::GenerateCertificateOnWorkerThread,
|
| this,
|
| key_params,
|
| expires_ms,
|
| - base::Passed(std::move(observer))));
|
| + base::Passed(&transition)));
|
| }
|
|
|
| private:
|
| @@ -74,7 +82,7 @@ class RTCCertificateGeneratorRequest
|
| void GenerateCertificateOnWorkerThread(
|
| const blink::WebRTCKeyParams key_params,
|
| const rtc::Optional<uint64_t> expires_ms,
|
| - std::unique_ptr<blink::WebRTCCertificateCallback> observer) {
|
| + CertificateCallbackPtr observer) {
|
| DCHECK(worker_thread_->BelongsToCurrentThread());
|
|
|
| rtc::scoped_refptr<rtc::RTCCertificate> certificate =
|
| @@ -89,7 +97,7 @@ class RTCCertificateGeneratorRequest
|
| }
|
|
|
| void DoCallbackOnMainThread(
|
| - std::unique_ptr<blink::WebRTCCertificateCallback> observer,
|
| + CertificateCallbackPtr observer,
|
| std::unique_ptr<blink::WebRTCCertificate> certificate) {
|
| DCHECK(main_thread_->BelongsToCurrentThread());
|
| DCHECK(observer);
|
|
|