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.
5 package org.chromium.android_webview.test.util;
7 import android.content.Context;
8 import android.util.Pair;
10 import org.chromium.net.test.util.TestWebServer;
12 import java.io.ByteArrayOutputStream;
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.util.List;
18 * This class is a WebServer provide video data.
20 public class VideoTestWebServer {
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";
30 private String mOnePixelOneFrameWebmURL;
31 private String mFullScreenVideoTestURL;
32 private TestWebServer mTestWebServer;
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);
44 * @return the mOnePixelOneFrameWebmURL
46 public String getOnePixelOneFrameWebmURL() {
47 return mOnePixelOneFrameWebmURL;
50 public String getFullScreenVideoTestURL() {
51 return mFullScreenVideoTestURL;
54 public TestWebServer getTestWebServer() {
55 return mTestWebServer;
58 private static List<Pair<String, String>> getWebmHeaders(boolean disableCache) {
59 return CommonResources.getContentTypeAndCacheHeaders("video/webm", disableCache);
62 private static List<Pair<String, String>> getHTMLHeaders(boolean disableCache) {
63 return CommonResources.getContentTypeAndCacheHeaders("text/html", disableCache);
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));
74 private String loadAssetData(Context context, String asset) throws IOException {
75 InputStream in = context.getAssets().open(asset);
76 ByteArrayOutputStream os = new ByteArrayOutputStream();
78 byte[] buffer = new byte[buflen];
79 int len = in.read(buffer, 0, buflen);
81 os.write(buffer, 0, len);
82 if (len < buflen) break;
83 len = in.read(buffer, 0, buflen);