Home | History | Annotate | Download | only in nacl
      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_
     74