--- /dev/null
+// Copyright (c) 2014 The Chromium Embedded Framework 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 CEF_TESTS_CEFCLIENT_BROWSER_BYTES_WRITE_HANDLER_H_
+#define CEF_TESTS_CEFCLIENT_BROWSER_BYTES_WRITE_HANDLER_H_
+#pragma once
+
+#include "include/base/cef_lock.h"
+#include "include/cef_stream.h"
+
+namespace client {
+
+class BytesWriteHandler : public CefWriteHandler {
+ public:
+ explicit BytesWriteHandler(size_t grow);
+ ~BytesWriteHandler();
+
+ size_t Write(const void* ptr, size_t size, size_t n) OVERRIDE;
+ int Seek(int64 offset, int whence) OVERRIDE;
+ int64 Tell() OVERRIDE;
+ int Flush() OVERRIDE;
+ bool MayBlock() OVERRIDE { return false; }
+
+ void* GetData() { return data_; }
+ int64 GetDataSize() { return offset_; }
+
+ private:
+ size_t Grow(size_t size);
+
+ size_t grow_;
+ void* data_;
+ int64 datasize_;
+ int64 offset_;
+
+ base::Lock lock_;
+
+ IMPLEMENT_REFCOUNTING(BytesWriteHandler);
+ DISALLOW_COPY_AND_ASSIGN(BytesWriteHandler);
+};
+
+} // namespace client
+
+#endif // CEF_TESTS_CEFCLIENT_BROWSER_BYTES_WRITE_HANDLER_H_