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

Side by Side Diff: third_party/WebKit/Source/modules/crypto/NormalizeAlgorithm.cpp

Issue 2972023002: Deduplicate CopyBytes in modules/crypto (Closed)
Patch Set: Dropped the "test in jumbo" code Created 3 years, 5 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 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 21 matching lines...) Expand all
32 32
33 #include <algorithm> 33 #include <algorithm>
34 #include <memory> 34 #include <memory>
35 #include "bindings/core/v8/ArrayBufferOrArrayBufferView.h" 35 #include "bindings/core/v8/ArrayBufferOrArrayBufferView.h"
36 #include "bindings/core/v8/Dictionary.h" 36 #include "bindings/core/v8/Dictionary.h"
37 #include "bindings/core/v8/V8ArrayBuffer.h" 37 #include "bindings/core/v8/V8ArrayBuffer.h"
38 #include "bindings/core/v8/V8ArrayBufferView.h" 38 #include "bindings/core/v8/V8ArrayBufferView.h"
39 #include "bindings/modules/v8/V8CryptoKey.h" 39 #include "bindings/modules/v8/V8CryptoKey.h"
40 #include "core/dom/DOMArrayPiece.h" 40 #include "core/dom/DOMArrayPiece.h"
41 #include "core/dom/DOMTypedArray.h" 41 #include "core/dom/DOMTypedArray.h"
42 #include "modules/crypto/CryptoUtilities.h"
42 #include "platform/wtf/MathExtras.h" 43 #include "platform/wtf/MathExtras.h"
43 #include "platform/wtf/PtrUtil.h" 44 #include "platform/wtf/PtrUtil.h"
44 #include "platform/wtf/Vector.h" 45 #include "platform/wtf/Vector.h"
45 #include "platform/wtf/text/StringBuilder.h" 46 #include "platform/wtf/text/StringBuilder.h"
46 #include "public/platform/WebCryptoAlgorithmParams.h" 47 #include "public/platform/WebCryptoAlgorithmParams.h"
47 #include "public/platform/WebString.h" 48 #include "public/platform/WebString.h"
48 49
49 namespace blink { 50 namespace blink {
50 51
51 namespace { 52 namespace {
52 53
53 typedef ArrayBufferOrArrayBufferView BufferSource;
54
55 struct AlgorithmNameMapping { 54 struct AlgorithmNameMapping {
56 // Must be an upper case ASCII string. 55 // Must be an upper case ASCII string.
57 const char* const algorithm_name; 56 const char* const algorithm_name;
58 // Must be strlen(algorithmName). 57 // Must be strlen(algorithmName).
59 unsigned char algorithm_name_length; 58 unsigned char algorithm_name_length;
60 WebCryptoAlgorithmId algorithm_id; 59 WebCryptoAlgorithmId algorithm_id;
61 60
62 #if DCHECK_IS_ON() 61 #if DCHECK_IS_ON()
63 bool operator<(const AlgorithmNameMapping&) const; 62 bool operator<(const AlgorithmNameMapping&) const;
64 #endif 63 #endif
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 stack.Add(message2); 256 stack.Add(message2);
258 return stack.ToString(); 257 return stack.ToString();
259 } 258 }
260 259
261 private: 260 private:
262 // This inline size is large enough to avoid having to grow the Vector in 261 // This inline size is large enough to avoid having to grow the Vector in
263 // the majority of cases (up to 1 nested algorithm identifier). 262 // the majority of cases (up to 1 nested algorithm identifier).
264 Vector<const char*, 10> messages_; 263 Vector<const char*, 10> messages_;
265 }; 264 };
266 265
267 static WebVector<uint8_t> CopyBytes(const DOMArrayPiece& source) {
268 return WebVector<uint8_t>(static_cast<const uint8_t*>(source.Data()),
269 source.ByteLength());
270 }
271
272 // Defined by the WebCrypto spec as: 266 // Defined by the WebCrypto spec as:
273 // 267 //
274 // typedef (ArrayBuffer or ArrayBufferView) BufferSource; 268 // typedef (ArrayBuffer or ArrayBufferView) BufferSource;
275 // 269 //
276 bool GetOptionalBufferSource(const Dictionary& raw, 270 bool GetOptionalBufferSource(const Dictionary& raw,
277 const char* property_name, 271 const char* property_name,
278 bool& has_property, 272 bool& has_property,
279 WebVector<uint8_t>& bytes, 273 WebVector<uint8_t>& bytes,
280 const ErrorContext& context, 274 const ErrorContext& context,
281 AlgorithmError* error) { 275 AlgorithmError* error) {
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 } // namespace 1089 } // namespace
1096 1090
1097 bool NormalizeAlgorithm(const AlgorithmIdentifier& raw, 1091 bool NormalizeAlgorithm(const AlgorithmIdentifier& raw,
1098 WebCryptoOperation op, 1092 WebCryptoOperation op,
1099 WebCryptoAlgorithm& algorithm, 1093 WebCryptoAlgorithm& algorithm,
1100 AlgorithmError* error) { 1094 AlgorithmError* error) {
1101 return ParseAlgorithmIdentifier(raw, op, algorithm, ErrorContext(), error); 1095 return ParseAlgorithmIdentifier(raw, op, algorithm, ErrorContext(), error);
1102 } 1096 }
1103 1097
1104 } // namespace blink 1098 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/crypto/CryptoUtilities.h ('k') | third_party/WebKit/Source/modules/crypto/SubtleCrypto.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698