Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(748)

Side by Side Diff: chrome/browser/extensions/api/platform_keys/verify_trust_api.cc

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "chrome/browser/extensions/api/platform_keys/verify_trust_api.h" 5 #include "chrome/browser/extensions/api/platform_keys/verify_trust_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 25 matching lines...) Expand all
36 // used on the IO thread only. 36 // used on the IO thread only.
37 // It is created on the UI thread and afterwards lives on the IO thread. 37 // It is created on the UI thread and afterwards lives on the IO thread.
38 class VerifyTrustAPI::IOPart { 38 class VerifyTrustAPI::IOPart {
39 public: 39 public:
40 ~IOPart(); 40 ~IOPart();
41 41
42 // Verifies the certificate as stated by |params| and calls back |callback| 42 // Verifies the certificate as stated by |params| and calls back |callback|
43 // with the result (see the declaration of VerifyCallback). 43 // with the result (see the declaration of VerifyCallback).
44 // Will not call back after this object is destructed or the verifier for this 44 // Will not call back after this object is destructed or the verifier for this
45 // extension is deleted (see OnExtensionUnloaded). 45 // extension is deleted (see OnExtensionUnloaded).
46 void Verify(scoped_ptr<Params> params, 46 void Verify(std::unique_ptr<Params> params,
47 const std::string& extension_id, 47 const std::string& extension_id,
48 const VerifyCallback& callback); 48 const VerifyCallback& callback);
49 49
50 // Must be called when the extension with id |extension_id| is unloaded. 50 // Must be called when the extension with id |extension_id| is unloaded.
51 // Deletes the verifier for |extension_id| and cancels all pending 51 // Deletes the verifier for |extension_id| and cancels all pending
52 // verifications of this verifier. 52 // verifications of this verifier.
53 void OnExtensionUnloaded(const std::string& extension_id); 53 void OnExtensionUnloaded(const std::string& extension_id);
54 54
55 private: 55 private:
56 struct RequestState { 56 struct RequestState {
57 RequestState() {} 57 RequestState() {}
58 58
59 scoped_ptr<net::CertVerifier::Request> request; 59 std::unique_ptr<net::CertVerifier::Request> request;
60 60
61 private: 61 private:
62 DISALLOW_COPY_AND_ASSIGN(RequestState); 62 DISALLOW_COPY_AND_ASSIGN(RequestState);
63 }; 63 };
64 64
65 // Calls back |callback| with the result and no error. 65 // Calls back |callback| with the result and no error.
66 void CallBackWithResult(const VerifyCallback& callback, 66 void CallBackWithResult(const VerifyCallback& callback,
67 scoped_ptr<net::CertVerifyResult> verify_result, 67 std::unique_ptr<net::CertVerifyResult> verify_result,
68 RequestState* request_state, 68 RequestState* request_state,
69 int return_value); 69 int return_value);
70 70
71 // One CertVerifier per extension to verify trust. Each verifier is created on 71 // One CertVerifier per extension to verify trust. Each verifier is created on
72 // first usage and deleted when this IOPart is destructed or the respective 72 // first usage and deleted when this IOPart is destructed or the respective
73 // extension is unloaded. 73 // extension is unloaded.
74 std::map<std::string, linked_ptr<net::CertVerifier>> extension_to_verifier_; 74 std::map<std::string, linked_ptr<net::CertVerifier>> extension_to_verifier_;
75 }; 75 };
76 76
77 // static 77 // static
(...skipping 12 matching lines...) Expand all
90 VerifyTrustAPI::VerifyTrustAPI(content::BrowserContext* context) 90 VerifyTrustAPI::VerifyTrustAPI(content::BrowserContext* context)
91 : io_part_(new IOPart), registry_observer_(this), weak_factory_(this) { 91 : io_part_(new IOPart), registry_observer_(this), weak_factory_(this) {
92 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 92 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
93 registry_observer_.Add(ExtensionRegistry::Get(context)); 93 registry_observer_.Add(ExtensionRegistry::Get(context));
94 } 94 }
95 95
96 VerifyTrustAPI::~VerifyTrustAPI() { 96 VerifyTrustAPI::~VerifyTrustAPI() {
97 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 97 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
98 } 98 }
99 99
100 void VerifyTrustAPI::Verify(scoped_ptr<Params> params, 100 void VerifyTrustAPI::Verify(std::unique_ptr<Params> params,
101 const std::string& extension_id, 101 const std::string& extension_id,
102 const VerifyCallback& ui_callback) { 102 const VerifyCallback& ui_callback) {
103 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 103 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
104 104
105 // Call back through the VerifyTrustAPI object on the UIThread. Because of the 105 // Call back through the VerifyTrustAPI object on the UIThread. Because of the
106 // WeakPtr usage, this will ensure that |ui_callback| is not called after the 106 // WeakPtr usage, this will ensure that |ui_callback| is not called after the
107 // API is destroyed. 107 // API is destroyed.
108 VerifyCallback finish_callback(base::Bind( 108 VerifyCallback finish_callback(base::Bind(
109 &CallBackOnUI, base::Bind(&VerifyTrustAPI::FinishedVerificationOnUI, 109 &CallBackOnUI, base::Bind(&VerifyTrustAPI::FinishedVerificationOnUI,
110 weak_factory_.GetWeakPtr(), ui_callback))); 110 weak_factory_.GetWeakPtr(), ui_callback)));
(...skipping 30 matching lines...) Expand all
141 int cert_status) { 141 int cert_status) {
142 content::BrowserThread::PostTask( 142 content::BrowserThread::PostTask(
143 content::BrowserThread::UI, FROM_HERE, 143 content::BrowserThread::UI, FROM_HERE,
144 base::Bind(ui_callback, error, return_value, cert_status)); 144 base::Bind(ui_callback, error, return_value, cert_status));
145 } 145 }
146 146
147 VerifyTrustAPI::IOPart::~IOPart() { 147 VerifyTrustAPI::IOPart::~IOPart() {
148 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 148 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
149 } 149 }
150 150
151 void VerifyTrustAPI::IOPart::Verify(scoped_ptr<Params> params, 151 void VerifyTrustAPI::IOPart::Verify(std::unique_ptr<Params> params,
152 const std::string& extension_id, 152 const std::string& extension_id,
153 const VerifyCallback& callback) { 153 const VerifyCallback& callback) {
154 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 154 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
155 155
156 const api::platform_keys::VerificationDetails& details = params->details; 156 const api::platform_keys::VerificationDetails& details = params->details;
157 157
158 if (details.server_certificate_chain.empty()) { 158 if (details.server_certificate_chain.empty()) {
159 callback.Run(kErrorEmptyCertificateChain, 0, 0); 159 callback.Run(kErrorEmptyCertificateChain, 0, 0);
160 return; 160 return;
161 } 161 }
(...skipping 13 matching lines...) Expand all
175 callback.Run(platform_keys::kErrorInvalidX509Cert, 0, 0); 175 callback.Run(platform_keys::kErrorInvalidX509Cert, 0, 0);
176 return; 176 return;
177 } 177 }
178 178
179 if (!ContainsKey(extension_to_verifier_, extension_id)) { 179 if (!ContainsKey(extension_to_verifier_, extension_id)) {
180 extension_to_verifier_[extension_id] = 180 extension_to_verifier_[extension_id] =
181 make_linked_ptr(net::CertVerifier::CreateDefault().release()); 181 make_linked_ptr(net::CertVerifier::CreateDefault().release());
182 } 182 }
183 net::CertVerifier* verifier = extension_to_verifier_[extension_id].get(); 183 net::CertVerifier* verifier = extension_to_verifier_[extension_id].get();
184 184
185 scoped_ptr<net::CertVerifyResult> verify_result(new net::CertVerifyResult); 185 std::unique_ptr<net::CertVerifyResult> verify_result(
186 scoped_ptr<net::BoundNetLog> net_log(new net::BoundNetLog); 186 new net::CertVerifyResult);
187 std::unique_ptr<net::BoundNetLog> net_log(new net::BoundNetLog);
187 const int flags = 0; 188 const int flags = 0;
188 189
189 std::string ocsp_response; 190 std::string ocsp_response;
190 net::CertVerifyResult* const verify_result_ptr = verify_result.get(); 191 net::CertVerifyResult* const verify_result_ptr = verify_result.get();
191 192
192 RequestState* request_state = new RequestState(); 193 RequestState* request_state = new RequestState();
193 base::Callback<void(int)> bound_callback( 194 base::Callback<void(int)> bound_callback(
194 base::Bind(&IOPart::CallBackWithResult, base::Unretained(this), callback, 195 base::Bind(&IOPart::CallBackWithResult, base::Unretained(this), callback,
195 base::Passed(&verify_result), base::Owned(request_state))); 196 base::Passed(&verify_result), base::Owned(request_state)));
196 197
197 const int return_value = verifier->Verify( 198 const int return_value = verifier->Verify(
198 cert_chain.get(), details.hostname, ocsp_response, flags, 199 cert_chain.get(), details.hostname, ocsp_response, flags,
199 net::SSLConfigService::GetCRLSet().get(), verify_result_ptr, 200 net::SSLConfigService::GetCRLSet().get(), verify_result_ptr,
200 bound_callback, &request_state->request, *net_log); 201 bound_callback, &request_state->request, *net_log);
201 202
202 if (return_value != net::ERR_IO_PENDING) { 203 if (return_value != net::ERR_IO_PENDING) {
203 bound_callback.Run(return_value); 204 bound_callback.Run(return_value);
204 return; 205 return;
205 } 206 }
206 } 207 }
207 208
208 void VerifyTrustAPI::IOPart::OnExtensionUnloaded( 209 void VerifyTrustAPI::IOPart::OnExtensionUnloaded(
209 const std::string& extension_id) { 210 const std::string& extension_id) {
210 extension_to_verifier_.erase(extension_id); 211 extension_to_verifier_.erase(extension_id);
211 } 212 }
212 213
213 void VerifyTrustAPI::IOPart::CallBackWithResult( 214 void VerifyTrustAPI::IOPart::CallBackWithResult(
214 const VerifyCallback& callback, 215 const VerifyCallback& callback,
215 scoped_ptr<net::CertVerifyResult> verify_result, 216 std::unique_ptr<net::CertVerifyResult> verify_result,
216 RequestState* request_state, 217 RequestState* request_state,
217 int return_value) { 218 int return_value) {
218 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 219 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
219 220
220 callback.Run(std::string() /* no error message */, return_value, 221 callback.Run(std::string() /* no error message */, return_value,
221 verify_result->cert_status); 222 verify_result->cert_status);
222 } 223 }
223 224
224 } // namespace extensions 225 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698