| Index: Source/modules/crypto/CryptoResult.cpp
 | 
| diff --git a/Source/core/platform/chromium/support/WebCrypto.cpp b/Source/modules/crypto/CryptoResult.cpp
 | 
| similarity index 54%
 | 
| copy from Source/core/platform/chromium/support/WebCrypto.cpp
 | 
| copy to Source/modules/crypto/CryptoResult.cpp
 | 
| index cd4e17994c0a1e2ef82dac335249a385579ac96f..d2885527dc1e733361917d1427cb9569d9e01fed 100644
 | 
| --- a/Source/core/platform/chromium/support/WebCrypto.cpp
 | 
| +++ b/Source/modules/crypto/CryptoResult.cpp
 | 
| @@ -29,58 +29,68 @@
 | 
|   */
 | 
|  
 | 
|  #include "config.h"
 | 
| +#include "modules/crypto/CryptoResult.h"
 | 
| +
 | 
| +#include "V8Key.h" // Must precede ScriptPromiseResolver.h
 | 
| +#include "bindings/v8/custom/V8ArrayBufferCustom.h" // Must precede ScriptPromiseResolver.h
 | 
| +#include "bindings/v8/ScriptPromiseResolver.h"
 | 
| +#include "modules/crypto/Key.h"
 | 
| +#include "modules/crypto/NormalizeAlgorithm.h"
 | 
| +#include "public/platform/Platform.h"
 | 
|  #include "public/platform/WebArrayBuffer.h"
 | 
|  #include "public/platform/WebCrypto.h"
 | 
| -#include <string.h>
 | 
| +#include "public/platform/WebCryptoAlgorithm.h"
 | 
| +#include "wtf/ArrayBufferView.h"
 | 
|  
 | 
| -namespace WebKit {
 | 
| +namespace WebCore {
 | 
|  
 | 
| -void WebCryptoResult::completeWithError()
 | 
| +CryptoResult::~CryptoResult()
 | 
|  {
 | 
| -    m_impl->completeWithError();
 | 
| -    reset();
 | 
| +    ASSERT(m_finished);
 | 
|  }
 | 
|  
 | 
| -void WebCryptoResult::completeWithBuffer(const WebArrayBuffer& buffer)
 | 
| +PassRefPtr<CryptoResult> CryptoResult::create()
 | 
|  {
 | 
| -    RELEASE_ASSERT(!buffer.isNull());
 | 
| -    m_impl->completeWithBuffer(buffer);
 | 
| -    reset();
 | 
| +    return adoptRef(new CryptoResult);
 | 
|  }
 | 
|  
 | 
| -void WebCryptoResult::completeWithBuffer(const void* bytes, size_t bytesSize)
 | 
| +void CryptoResult::completeWithError()
 | 
|  {
 | 
| -    WebArrayBuffer buffer = WebKit::WebArrayBuffer::create(bytesSize, 1);
 | 
| -    RELEASE_ASSERT(!buffer.isNull());
 | 
| -    memcpy(buffer.data(), bytes, bytesSize);
 | 
| -    completeWithBuffer(buffer);
 | 
| +    m_promiseResolver->reject(ScriptValue::createNull());
 | 
| +    finish();
 | 
|  }
 | 
|  
 | 
| -void WebCryptoResult::completeWithBoolean(bool b)
 | 
| +void CryptoResult::completeWithBuffer(const WebKit::WebArrayBuffer& buffer)
 | 
|  {
 | 
| -    m_impl->completeWithBoolean(b);
 | 
| -    reset();
 | 
| +    m_promiseResolver->fulfill(PassRefPtr<ArrayBuffer>(buffer));
 | 
| +    finish();
 | 
|  }
 | 
|  
 | 
| -void WebCryptoResult::completeWithKey(const WebCryptoKey& key)
 | 
| +void CryptoResult::completeWithBoolean(bool b)
 | 
|  {
 | 
| -    m_impl->completeWithKey(key);
 | 
| -    reset();
 | 
| +    m_promiseResolver->fulfill(ScriptValue::createBoolean(b));
 | 
| +    finish();
 | 
|  }
 | 
|  
 | 
| -void WebCryptoResult::reset()
 | 
| +void CryptoResult::completeWithKey(const WebKit::WebCryptoKey& key)
 | 
|  {
 | 
| -    m_impl.reset();
 | 
| +    m_promiseResolver->fulfill(Key::create(key));
 | 
| +    finish();
 | 
|  }
 | 
|  
 | 
| -void WebCryptoResult::assign(const WebCryptoResult& o)
 | 
| +ScriptObject CryptoResult::promise()
 | 
|  {
 | 
| -    m_impl = o.m_impl;
 | 
| +    return m_promiseResolver->promise();
 | 
|  }
 | 
|  
 | 
| -void WebCryptoResult::assign(WebCryptoResultPrivate* impl)
 | 
| +CryptoResult::CryptoResult()
 | 
| +    : m_promiseResolver(ScriptPromiseResolver::create())
 | 
| +    , m_finished(false) { }
 | 
| +
 | 
| +void CryptoResult::finish()
 | 
|  {
 | 
| -    m_impl = impl;
 | 
| +    ASSERT(!m_finished);
 | 
| +    m_finished = true;
 | 
|  }
 | 
|  
 | 
| -} // namespace WebKit
 | 
| +} // namespace WebCore
 | 
| 
 |