Index: native_client_sdk/src/tests/nacl_io_test/fake_pepper_interface_url_loader.h |
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_pepper_interface_url_loader.h b/native_client_sdk/src/tests/nacl_io_test/fake_pepper_interface_url_loader.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5945d13d813c56ce728afb6435099b574db362fa |
--- /dev/null |
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_pepper_interface_url_loader.h |
@@ -0,0 +1,151 @@ |
+// Copyright (c) 2013 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 LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_URL_LOADER_H_ |
+#define LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_URL_LOADER_H_ |
+ |
+#include <map> |
+#include <string> |
+#include <vector> |
+ |
+#include "fake_core_interface.h" |
+#include "fake_var_interface.h" |
+#include "nacl_io/pepper_interface_dummy.h" |
+#include "sdk_util/macros.h" |
+ |
+class FakeURLLoaderEntity { |
+ public: |
+ explicit FakeURLLoaderEntity(const std::string& body); |
+ |
+ const std::string& body() const { return body_; } |
+ |
+ private: |
+ std::string body_; |
+}; |
+ |
+class FakeURLLoaderServer { |
+ public: |
+ FakeURLLoaderServer(); |
+ |
+ void Clear(); |
+ bool AddEntity(const std::string& url, |
+ const std::string& body, |
+ FakeURLLoaderEntity** out_entity); |
+ bool AddError(const std::string& url, |
+ int http_status_code); |
+ FakeURLLoaderEntity* GetEntity(const std::string& url); |
+ // Returns 0 if the url is not in the error map. |
+ int GetError(const std::string& url); |
+ |
+ // The maximum number of bytes that ReadResponseBody will send. If 0, then |
+ // send as many as are requested. |
+ void set_max_read_size(size_t max_read_size) { |
+ max_read_size_ = max_read_size; |
+ } |
+ |
+ // Whether to add the "Content-Length" header. |
+ void set_send_content_length(bool send_content_length) { |
+ send_content_length_ = send_content_length; |
+ } |
+ |
+ // Whether to allow partial reads (via the "Range" request header). |
+ void set_allow_partial(bool allow_partial) { allow_partial_ = allow_partial; } |
+ |
+ size_t max_read_size() const { return max_read_size_; } |
+ bool send_content_length() const { return send_content_length_; } |
+ bool allow_partial() const { return allow_partial_; } |
+ |
+ private: |
+ typedef std::map<std::string, FakeURLLoaderEntity> EntityMap; |
+ typedef std::map<std::string, int> ErrorMap; |
+ EntityMap entity_map_; |
+ ErrorMap error_map_; |
+ size_t max_read_size_; |
+ bool send_content_length_; |
+ bool allow_partial_; |
+}; |
+ |
+class FakeURLLoaderInterface : public nacl_io::URLLoaderInterface { |
+ public: |
+ explicit FakeURLLoaderInterface(FakeCoreInterface* core_interface); |
+ |
+ virtual PP_Resource Create(PP_Instance instance); |
+ virtual int32_t Open(PP_Resource loader, |
+ PP_Resource request_info, |
+ PP_CompletionCallback callback); |
+ virtual PP_Resource GetResponseInfo(PP_Resource loader); |
+ virtual int32_t ReadResponseBody(PP_Resource loader, |
+ void* buffer, |
+ int32_t bytes_to_read, |
+ PP_CompletionCallback callback); |
+ virtual void Close(PP_Resource loader); |
+ |
+ private: |
+ FakeCoreInterface* core_interface_; // Weak reference. |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FakeURLLoaderInterface); |
+}; |
+ |
+class FakeURLRequestInfoInterface : public nacl_io::URLRequestInfoInterface { |
+ public: |
+ FakeURLRequestInfoInterface(FakeCoreInterface* core_interface, |
+ FakeVarInterface* var_interface); |
+ |
+ virtual PP_Resource Create(PP_Instance instance); |
+ virtual PP_Bool SetProperty(PP_Resource request, |
+ PP_URLRequestProperty property, |
+ PP_Var value); |
+ |
+ private: |
+ FakeCoreInterface* core_interface_; // Weak reference. |
+ FakeVarInterface* var_interface_; // Weak reference. |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FakeURLRequestInfoInterface); |
+}; |
+ |
+class FakeURLResponseInfoInterface : public nacl_io::URLResponseInfoInterface { |
+ public: |
+ FakeURLResponseInfoInterface(FakeCoreInterface* core_interface, |
+ FakeVarInterface* var_interface); |
+ |
+ virtual PP_Var GetProperty(PP_Resource response, |
+ PP_URLResponseProperty property); |
+ |
+ private: |
+ FakeCoreInterface* core_interface_; // Weak reference. |
+ FakeVarInterface* var_interface_; // Weak reference. |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FakeURLResponseInfoInterface); |
+}; |
+ |
+class FakePepperInterfaceURLLoader : public nacl_io::PepperInterfaceDummy { |
+ public: |
+ FakePepperInterfaceURLLoader(); |
+ FakePepperInterfaceURLLoader(const FakeURLLoaderServer& server); |
+ ~FakePepperInterfaceURLLoader(); |
+ |
+ virtual PP_Instance GetInstance() { return instance_; } |
+ virtual nacl_io::CoreInterface* GetCoreInterface(); |
+ virtual nacl_io::VarInterface* GetVarInterface(); |
+ virtual nacl_io::URLLoaderInterface* GetURLLoaderInterface(); |
+ virtual nacl_io::URLRequestInfoInterface* GetURLRequestInfoInterface(); |
+ virtual nacl_io::URLResponseInfoInterface* GetURLResponseInfoInterface(); |
+ |
+ FakeURLLoaderServer* server_template() { return &server_template_; } |
+ |
+ private: |
+ void Init(); |
+ |
+ FakeCoreInterface core_interface_; |
+ FakeVarInterface var_interface_; |
+ FakeURLLoaderServer server_template_; |
+ FakeURLLoaderInterface url_loader_interface_; |
+ FakeURLRequestInfoInterface url_request_info_interface_; |
+ FakeURLResponseInfoInterface url_response_info_interface_; |
+ PP_Instance instance_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FakePepperInterfaceURLLoader); |
+}; |
+ |
+#endif // LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_URL_LOADER_H_ |