- add sources.
[platform/framework/web/crosswalk.git] / src / android_webview / javatests / src / org / chromium / android_webview / test / util / VideoTestWebServer.java
1 // Copyright (c) 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 package org.chromium.android_webview.test.util;
6
7 import android.content.Context;
8 import android.util.Pair;
9
10 import org.chromium.net.test.util.TestWebServer;
11
12 import java.io.ByteArrayOutputStream;
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.util.List;
16
17 /**
18  * This class is a WebServer provide video data.
19  */
20 public class VideoTestWebServer {
21
22     public static final String ONE_PIXEL_ONE_FRAME_WEBM_FILENAME = "one_pixel_one_frame.webm";
23     public static final String ONE_PIXEL_ONE_FRAME_WEBM_BASE64 =
24             "GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQN8VSalmQCgq17FAAw9C" +
25             "QE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEAD" +
26             "dW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBlrqBlh9DtnVAdOeBAKNAboEAAIDyCACdASqWAJYA" +
27             "Pk0ci0WD+IBAAJiWlu4XdQTSq2H4MW0+sMO0gz8HMRe+0jRo0aNGjRo0aNGjRo0aNGjRo0aNGjRo" +
28             "0aNGjRo0aNGjRo0VAAD+/729RWRzH4mOZ9/O8Dl319afX4gsgAAA";
29
30     private String mOnePixelOneFrameWebmURL;
31     private String mFullScreenVideoTestURL;
32     private TestWebServer mTestWebServer;
33
34     public VideoTestWebServer(Context context) throws Exception {
35         mTestWebServer = new TestWebServer(false);
36         List<Pair<String, String>> headers = getWebmHeaders(true);
37         mOnePixelOneFrameWebmURL = mTestWebServer.setResponseBase64("/" +
38                 ONE_PIXEL_ONE_FRAME_WEBM_FILENAME,
39                 ONE_PIXEL_ONE_FRAME_WEBM_BASE64, headers);
40         initFullScreenVideoTest(context);
41     }
42
43     /**
44      * @return the mOnePixelOneFrameWebmURL
45      */
46     public String getOnePixelOneFrameWebmURL() {
47         return mOnePixelOneFrameWebmURL;
48     }
49
50     public String getFullScreenVideoTestURL() {
51         return mFullScreenVideoTestURL;
52     }
53
54     public TestWebServer getTestWebServer() {
55         return mTestWebServer;
56     }
57
58     private static List<Pair<String, String>> getWebmHeaders(boolean disableCache) {
59         return CommonResources.getContentTypeAndCacheHeaders("video/webm", disableCache);
60     }
61
62     private static List<Pair<String, String>> getHTMLHeaders(boolean disableCache) {
63         return CommonResources.getContentTypeAndCacheHeaders("text/html", disableCache);
64     }
65
66     private void initFullScreenVideoTest(Context context) throws IOException {
67         final String FULL_SCREEN_VIDEO_PATH = "full_screen_video_test.html";
68         String data = loadAssetData(context, FULL_SCREEN_VIDEO_PATH);
69         mFullScreenVideoTestURL = mTestWebServer.setResponse("/" + FULL_SCREEN_VIDEO_PATH,
70                 data.replace("VIDEO_FILE_URL", getOnePixelOneFrameWebmURL()),
71                 getHTMLHeaders(false));
72     }
73
74     private String loadAssetData(Context context, String asset) throws IOException {
75         InputStream in = context.getAssets().open(asset);
76         ByteArrayOutputStream os = new ByteArrayOutputStream();
77         int buflen = 128;
78         byte[] buffer = new byte[buflen];
79         int len = in.read(buffer, 0, buflen);
80         while (len != -1) {
81             os.write(buffer, 0, len);
82             if (len < buflen) break;
83             len = in.read(buffer, 0, buflen);
84         }
85         return os.toString();
86   }
87 }