blob: bbd5585a08712e0cbfbb0b2f587f6e3f1e1f18a5 [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.
#ifndef DataConsumerHandleUtil_h
#define DataConsumerHandleUtil_h
#include "modules/ModulesExport.h"
#include "modules/fetch/FetchDataConsumerHandle.h"
#include "public/platform/WebDataConsumerHandle.h"
#include "wtf/Allocator.h"
#include "wtf/PassOwnPtr.h"
#include "wtf/WeakPtr.h"
namespace blink {
// Returns a handle that returns ShouldWait for read / beginRead and
// UnexpectedError for endRead.
MODULES_EXPORT PassOwnPtr<WebDataConsumerHandle> createWaitingDataConsumerHandle();
// Returns a handle that returns Done for read / beginRead and
// UnexpectedError for endRead.
MODULES_EXPORT PassOwnPtr<WebDataConsumerHandle> createDoneDataConsumerHandle();
// Returns a handle that returns UnexpectedError for read / beginRead /
// endRead.
MODULES_EXPORT PassOwnPtr<WebDataConsumerHandle> createUnexpectedErrorDataConsumerHandle();
// Returns a FetchDataConsumerHandle that wraps WebDataConsumerHandle.
MODULES_EXPORT PassOwnPtr<FetchDataConsumerHandle> createFetchDataConsumerHandleFromWebHandle(PassOwnPtr<WebDataConsumerHandle>);
// A helper class to call Client::didGetReadable() asynchronously after
// Reader creation.
// NotifyOnReaderCreationHelper must be owned by a reader and
// |client| must be the client of the reader.
class NotifyOnReaderCreationHelper final {
DISALLOW_NEW();
public:
NotifyOnReaderCreationHelper(WebDataConsumerHandle::Client* /* client */);
private:
void notify(WebDataConsumerHandle::Client*);
WeakPtrFactory<NotifyOnReaderCreationHelper> m_factory;
};
} // namespace blink
#endif // DataConsumerHandleUtil_h