1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PAPPI_TESTS_TEST_URL_LOADER_H_
6#define PAPPI_TESTS_TEST_URL_LOADER_H_
7
8#include <string>
9
10#include "ppapi/c/private/ppb_file_io_private.h"
11#include "ppapi/c/trusted/ppb_url_loader_trusted.h"
12#include "ppapi/tests/test_case.h"
13
14namespace pp {
15class FileIO;
16class FileRef;
17class FileSystem;
18class URLLoader;
19class URLRequestInfo;
20}
21
22class TestURLLoader : public TestCase {
23 public:
24  explicit TestURLLoader(TestingInstance* instance);
25
26  // TestCase implementation.
27  virtual bool Init();
28  virtual void RunTests(const std::string& filter);
29
30 private:
31  std::string ReadEntireFile(pp::FileIO* file_io, std::string* data);
32  std::string ReadEntireResponseBody(pp::URLLoader* loader,
33                                     std::string* body);
34  std::string LoadAndCompareBody(const pp::URLRequestInfo& request,
35                                 const std::string& expected_body);
36  int32_t OpenFileSystem(pp::FileSystem* file_system, std::string* message);
37  int32_t PrepareFileForPost(const pp::FileRef& file_ref,
38                             const std::string& data,
39                             std::string* message);
40  std::string GetReachableAbsoluteURL(const std::string& file_name);
41  std::string GetReachableCrossOriginURL(const std::string& file_name);
42  int32_t OpenUntrusted(const pp::URLRequestInfo& request);
43  int32_t OpenTrusted(const pp::URLRequestInfo& request);
44  int32_t OpenUntrusted(const std::string& method,
45                        const std::string& header);
46  int32_t OpenTrusted(const std::string& method,
47                      const std::string& header);
48  int32_t Open(const pp::URLRequestInfo& request,
49               bool with_universal_access);
50  int32_t OpenWithPrefetchBufferThreshold(int32_t lower, int32_t upper);
51
52  std::string TestBasicGET();
53  std::string TestBasicPOST();
54  std::string TestBasicFilePOST();
55  std::string TestBasicFileRangePOST();
56  std::string TestCompoundBodyPOST();
57  std::string TestEmptyDataPOST();
58  std::string TestBinaryDataPOST();
59  std::string TestCustomRequestHeader();
60  std::string TestFailsBogusContentLength();
61  std::string TestStreamToFile();
62  std::string TestUntrustedSameOriginRestriction();
63  std::string TestTrustedSameOriginRestriction();
64  std::string TestUntrustedCrossOriginRequest();
65  std::string TestTrustedCrossOriginRequest();
66  std::string TestUntrustedJavascriptURLRestriction();
67  std::string TestTrustedJavascriptURLRestriction();
68  std::string TestUntrustedHttpRequests();
69  std::string TestTrustedHttpRequests();
70  std::string TestFollowURLRedirect();
71  std::string TestAuditURLRedirect();
72  std::string TestAbortCalls();
73  std::string TestUntendedLoad();
74  std::string TestPrefetchBufferThreshold();
75  std::string TestXRequestedWithHeader();
76
77  const PPB_FileIO_Private* file_io_private_interface_;
78  const PPB_URLLoaderTrusted* url_loader_trusted_interface_;
79};
80
81#endif  // PAPPI_TESTS_TEST_URL_LOADER_H_
82