| 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); | 
|  |