OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/webcrypto/webcrypto_impl.h" | 5 #include "components/webcrypto/webcrypto_impl.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 // | 65 // |
66 // * blink::WebCryptoResult is not threadsafe and should only be operated on | 66 // * blink::WebCryptoResult is not threadsafe and should only be operated on |
67 // the target Blink thread. HOWEVER, it is safe to delete it from any thread. | 67 // the target Blink thread. HOWEVER, it is safe to delete it from any thread. |
68 // This can happen if by the time the operation has completed in the crypto | 68 // This can happen if by the time the operation has completed in the crypto |
69 // worker pool, the Blink worker thread that initiated the request is gone. | 69 // worker pool, the Blink worker thread that initiated the request is gone. |
70 // Posting back to the origin thread will fail, and the WebCryptoResult will | 70 // Posting back to the origin thread will fail, and the WebCryptoResult will |
71 // be deleted while running in the crypto worker pool. | 71 // be deleted while running in the crypto worker pool. |
72 class CryptoThreadPool { | 72 class CryptoThreadPool { |
73 public: | 73 public: |
74 CryptoThreadPool() | 74 CryptoThreadPool() |
75 : worker_pool_(new base::SequencedWorkerPool(1, "WebCrypto")), | 75 : worker_pool_( |
| 76 new base::SequencedWorkerPool(1, |
| 77 "WebCrypto", |
| 78 base::TaskPriority::USER_BLOCKING)), |
76 task_runner_(worker_pool_->GetSequencedTaskRunnerWithShutdownBehavior( | 79 task_runner_(worker_pool_->GetSequencedTaskRunnerWithShutdownBehavior( |
77 worker_pool_->GetSequenceToken(), | 80 worker_pool_->GetSequenceToken(), |
78 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)) {} | 81 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)) {} |
79 | 82 |
80 static bool PostTask(const tracked_objects::Location& from_here, | 83 static bool PostTask(const tracked_objects::Location& from_here, |
81 const base::Closure& task); | 84 const base::Closure& task); |
82 | 85 |
83 private: | 86 private: |
84 scoped_refptr<base::SequencedWorkerPool> worker_pool_; | 87 scoped_refptr<base::SequencedWorkerPool> worker_pool_; |
85 scoped_refptr<base::SequencedTaskRunner> task_runner_; | 88 scoped_refptr<base::SequencedTaskRunner> task_runner_; |
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
781 webcrypto::CryptoData(key_data, key_data_size), &key); | 784 webcrypto::CryptoData(key_data, key_data_size), &key); |
782 } | 785 } |
783 | 786 |
784 bool WebCryptoImpl::serializeKeyForClone( | 787 bool WebCryptoImpl::serializeKeyForClone( |
785 const blink::WebCryptoKey& key, | 788 const blink::WebCryptoKey& key, |
786 blink::WebVector<unsigned char>& key_data) { | 789 blink::WebVector<unsigned char>& key_data) { |
787 return webcrypto::SerializeKeyForClone(key, &key_data); | 790 return webcrypto::SerializeKeyForClone(key, &key_data); |
788 } | 791 } |
789 | 792 |
790 } // namespace webcrypto | 793 } // namespace webcrypto |
OLD | NEW |