blob: 3e757f9eee89a487f88a7c94c6ccdea2badd54d8 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "public/platform/WebDataConsumerHandle.h"
#include "platform/heap/Handle.h"
#include <algorithm>
#include <string.h>
namespace blink {
WebDataConsumerHandle::WebDataConsumerHandle()
{
ASSERT(ThreadState::current());
}
WebDataConsumerHandle::~WebDataConsumerHandle()
{
ASSERT(ThreadState::current());
}
PassOwnPtr<WebDataConsumerHandle::Reader> WebDataConsumerHandle::obtainReader(WebDataConsumerHandle::Client* client)
{
ASSERT(ThreadState::current());
return adoptPtr(obtainReaderInternal(client));
}
WebDataConsumerHandle::Result WebDataConsumerHandle::Reader::read(void* data, size_t size, Flags flags, size_t* readSize)
{
*readSize = 0;
const void* src = nullptr;
size_t available;
Result r = beginRead(&src, flags, &available);
if (r != WebDataConsumerHandle::Ok)
return r;
*readSize = std::min(available, size);
memcpy(data, src, *readSize);
return endRead(*readSize);
}
} // namespace blink