Home | History | Annotate | Download | only in media
      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 CONTENT_RENDERER_MEDIA_TEST_RESPONSE_GENERATOR_H_
      6 #define CONTENT_RENDERER_MEDIA_TEST_RESPONSE_GENERATOR_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "third_party/WebKit/public/platform/WebURLError.h"
     10 #include "third_party/WebKit/public/platform/WebURLResponse.h"
     11 #include "url/gurl.h"
     12 
     13 namespace content {
     14 
     15 // Generates WebURLErrors and WebURLResponses suitable for testing purposes.
     16 class TestResponseGenerator {
     17  public:
     18   enum Flags {
     19     kNormal = 0,
     20     kNoAcceptRanges = 1 << 0,   // Don't include Accept-Ranges in 206 response.
     21     kNoContentRange = 1 << 1,   // Don't include Content-Range in 206 response.
     22     kNoContentLength = 1 << 2,  // Don't include Content-Length in 206 response.
     23     kNoContentRangeInstanceSize = 1 << 3,  // Content-Range: N-M/* in 206.
     24   };
     25 
     26   // Build an HTTP response generator for the given URL. |content_length| is
     27   // used to generate Content-Length and Content-Range headers.
     28   TestResponseGenerator(const GURL& gurl, int64 content_length);
     29 
     30   // Generates a WebURLError object.
     31   WebKit::WebURLError GenerateError();
     32 
     33   // Generates a regular HTTP 200 response.
     34   WebKit::WebURLResponse Generate200();
     35 
     36   // Generates a regular HTTP 206 response starting from |first_byte_offset|
     37   // until the end of the resource.
     38   WebKit::WebURLResponse Generate206(int64 first_byte_offset);
     39 
     40   // Generates a custom HTTP 206 response starting from |first_byte_offset|
     41   // until the end of the resource. You can tweak what gets included in the
     42   // headers via |flags|.
     43   WebKit::WebURLResponse Generate206(int64 first_byte_offset, Flags flags);
     44 
     45   // Generates a regular HTTP 404 response.
     46   WebKit::WebURLResponse Generate404();
     47 
     48   // Generates a file:// response starting from |first_byte_offset| until the
     49   // end of the resource.
     50   //
     51   // If |first_byte_offset| is negative a response containing no content length
     52   // will be returned.
     53   WebKit::WebURLResponse GenerateFileResponse(int64 first_byte_offset);
     54 
     55   int64 content_length() { return content_length_; }
     56 
     57  private:
     58   GURL gurl_;
     59   int64 content_length_;
     60 
     61   DISALLOW_COPY_AND_ASSIGN(TestResponseGenerator);
     62 };
     63 
     64 }  // namespace content
     65 
     66 #endif  // CONTENT_RENDERER_MEDIA_TEST_RESPONSE_GENERATOR_H_
     67