Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / test / nacl / pnacl_header_test.h
1 // Copyright 2013 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 CHROME_TEST_NACL_PNACL_HEADER_TEST_H_
6 #define CHROME_TEST_NACL_PNACL_HEADER_TEST_H_
7
8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/test/base/in_process_browser_test.h"
11 #include "content/public/browser/resource_dispatcher_host_delegate.h"
12 #include "content/public/common/resource_type.h"
13
14 namespace base {
15 class FilePath;
16 }
17
18 namespace net {
19 namespace test_server {
20 struct HttpRequest;
21 class HttpResponse;
22 }
23 }
24
25 using content::ResourceDispatcherHostDelegate;
26
27 class TestDispatcherHostDelegate : public ResourceDispatcherHostDelegate {
28  public:
29   explicit TestDispatcherHostDelegate()
30       : ResourceDispatcherHostDelegate(), found_pnacl_header_(false) {}
31
32   virtual ~TestDispatcherHostDelegate() {}
33
34   virtual void RequestBeginning(
35       net::URLRequest* request,
36       content::ResourceContext* resource_context,
37       content::AppCacheService* appcache_service,
38       content::ResourceType resource_type,
39       ScopedVector<content::ResourceThrottle>* throttles) OVERRIDE;
40
41   bool found_pnacl_header() const { return found_pnacl_header_; }
42
43  private:
44   bool found_pnacl_header_;
45
46   DISALLOW_COPY_AND_ASSIGN(TestDispatcherHostDelegate);
47 };
48
49 class PnaclHeaderTest : public InProcessBrowserTest {
50  public:
51   PnaclHeaderTest();
52   virtual ~PnaclHeaderTest();
53
54   // Run a simple test that checks that the NaCl plugin sends the right
55   // headers when doing |expected_noncors| same origin pexe load requests
56   // and |expected_cors| cross origin pexe load requests.
57   void RunLoadTest(const std::string& url,
58                    int expected_noncors,
59                    int expected_cors);
60
61  private:
62   void StartServer();
63
64   scoped_ptr<net::test_server::HttpResponse> WatchForPexeFetch(
65       const net::test_server::HttpRequest& request);
66
67   int noncors_loads_;
68   int cors_loads_;
69   TestDispatcherHostDelegate test_delegate_;
70   DISALLOW_COPY_AND_ASSIGN(PnaclHeaderTest);
71 };
72
73 #endif  // CHROME_TEST_NACL_PNACL_HEADER_TEST_H_