| Index: Source/core/inspector/DOMPatchSupport.cpp
|
| diff --git a/Source/core/inspector/DOMPatchSupport.cpp b/Source/core/inspector/DOMPatchSupport.cpp
|
| index be9f2a30898afb1cb1f16358cebb1c639774b1bc..4d867fb93ace14a7a1aaf63b4c5c102ad54ccabd 100644
|
| --- a/Source/core/inspector/DOMPatchSupport.cpp
|
| +++ b/Source/core/inspector/DOMPatchSupport.cpp
|
| @@ -46,10 +46,11 @@
|
| #include "core/inspector/DOMEditor.h"
|
| #include "core/inspector/InspectorHistory.h"
|
| #include "core/xml/parser/XMLDocumentParser.h"
|
| +#include "platform/Crypto.h"
|
| +#include "public/platform/Platform.h"
|
| #include "wtf/Deque.h"
|
| #include "wtf/HashTraits.h"
|
| #include "wtf/RefPtr.h"
|
| -#include "wtf/SHA1.h"
|
| #include "wtf/text/Base64.h"
|
| #include "wtf/text/CString.h"
|
|
|
| @@ -402,28 +403,28 @@ bool DOMPatchSupport::innerPatchChildren(ContainerNode* parentNode, const Vector
|
| return true;
|
| }
|
|
|
| -static void addStringToSHA1(SHA1& sha1, const String& string)
|
| +static void addStringToDigestor(blink::WebCryptoDigestor* digestor, const String& string)
|
| {
|
| - CString cString = string.utf8();
|
| - sha1.addBytes(reinterpret_cast<const uint8_t*>(cString.data()), cString.length());
|
| + digestor->consume(reinterpret_cast<const unsigned char*>(string.utf8().data()), string.length());
|
| }
|
|
|
| PassOwnPtr<DOMPatchSupport::Digest> DOMPatchSupport::createDigest(Node* node, UnusedNodesMap* unusedNodesMap)
|
| {
|
| Digest* digest = new Digest(node);
|
|
|
| - SHA1 sha1;
|
| + OwnPtr<blink::WebCryptoDigestor> digestor = createDigestor(HashAlgorithmSha1);
|
| + DigestValue digestResult;
|
|
|
| Node::NodeType nodeType = node->nodeType();
|
| - sha1.addBytes(reinterpret_cast<const uint8_t*>(&nodeType), sizeof(nodeType));
|
| - addStringToSHA1(sha1, node->nodeName());
|
| - addStringToSHA1(sha1, node->nodeValue());
|
| + digestor->consume(reinterpret_cast<const unsigned char*>(&nodeType), sizeof(nodeType));
|
| + addStringToDigestor(digestor.get(), node->nodeName());
|
| + addStringToDigestor(digestor.get(), node->nodeValue());
|
|
|
| if (node->nodeType() == Node::ELEMENT_NODE) {
|
| Node* child = node->firstChild();
|
| while (child) {
|
| OwnPtr<Digest> childInfo = createDigest(child, unusedNodesMap);
|
| - addStringToSHA1(sha1, childInfo->m_sha1);
|
| + addStringToDigestor(digestor.get(), childInfo->m_sha1);
|
| child = child->nextSibling();
|
| digest->m_children.append(childInfo.release());
|
| }
|
| @@ -431,22 +432,21 @@ PassOwnPtr<DOMPatchSupport::Digest> DOMPatchSupport::createDigest(Node* node, Un
|
|
|
| if (element->hasAttributesWithoutUpdate()) {
|
| size_t numAttrs = element->attributeCount();
|
| - SHA1 attrsSHA1;
|
| + OwnPtr<blink::WebCryptoDigestor> attrsDigestor = createDigestor(HashAlgorithmSha1);
|
| for (size_t i = 0; i < numAttrs; ++i) {
|
| const Attribute& attribute = element->attributeItem(i);
|
| - addStringToSHA1(attrsSHA1, attribute.name().toString());
|
| - addStringToSHA1(attrsSHA1, attribute.value());
|
| + addStringToDigestor(attrsDigestor.get(), attribute.name().toString());
|
| + addStringToDigestor(attrsDigestor.get(), attribute.value().string());
|
| }
|
| - Vector<uint8_t, 20> attrsHash;
|
| - attrsSHA1.computeHash(attrsHash);
|
| - digest->m_attrsSHA1 = base64Encode(reinterpret_cast<const char*>(attrsHash.data()), 10);
|
| - addStringToSHA1(sha1, digest->m_attrsSHA1);
|
| + finishDigestor(attrsDigestor.get(), digestResult);
|
| + digest->m_attrsSHA1 = base64Encode(reinterpret_cast<const char*>(digestResult.data()), 10);
|
| + addStringToDigestor(digestor.get(), digest->m_attrsSHA1);
|
| + digestResult.clear();
|
| }
|
| }
|
| + finishDigestor(digestor.get(), digestResult);
|
| + digest->m_sha1 = base64Encode(reinterpret_cast<const char*>(digestResult.data()), 10);
|
|
|
| - Vector<uint8_t, 20> hash;
|
| - sha1.computeHash(hash);
|
| - digest->m_sha1 = base64Encode(reinterpret_cast<const char*>(hash.data()), 10);
|
| if (unusedNodesMap)
|
| unusedNodesMap->add(digest->m_sha1, digest);
|
| return adoptPtr(digest);
|
|
|