1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Copyright (c) 2014 Intel Corporation. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
6 package org.xwalk.core.internal.xwview.test.util;
8 import android.content.Context;
9 import android.util.Pair;
11 import java.io.ByteArrayOutputStream;
12 import java.io.IOException;
13 import java.io.InputStream;
14 import java.util.List;
16 import org.chromium.net.test.util.TestWebServer;
19 * This class is a WebServer provide video data.
21 public class VideoTestWebServer {
22 // VIDEO_ID must be kept in sync with the id in full_screen_video_test.html.
23 public static final String VIDEO_ID = "video";
24 public static final String ONE_PIXEL_ONE_FRAME_WEBM_FILENAME = "one_pixel_one_frame.webm";
25 public static final String ONE_PIXEL_ONE_FRAME_WEBM_BASE64 =
26 "GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQN8VSalmQCgq17FAAw9C" +
27 "QE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEAD" +
28 "dW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBlrqBlh9DtnVAdOeBAKNAboEAAIDyCACdASqWAJYA" +
29 "Pk0ci0WD+IBAAJiWlu4XdQTSq2H4MW0+sMO0gz8HMRe+0jRo0aNGjRo0aNGjRo0aNGjRo0aNGjRo" +
30 "0aNGjRo0aNGjRo0VAAD+/729RWRzH4mOZ9/O8Dl319afX4gsgAAA";
32 private String mOnePixelOneFrameWebmURL;
33 private String mFullScreenVideoTestURL;
34 private TestWebServer mTestWebServer;
36 public VideoTestWebServer(Context context) throws Exception {
37 mTestWebServer = TestWebServer.start();
38 List<Pair<String, String>> headers = getWebmHeaders(true);
39 mOnePixelOneFrameWebmURL = mTestWebServer.setResponseBase64("/" +
40 ONE_PIXEL_ONE_FRAME_WEBM_FILENAME,
41 ONE_PIXEL_ONE_FRAME_WEBM_BASE64, headers);
42 initFullScreenVideoTest(context);
46 * @return the mOnePixelOneFrameWebmURL
48 public String getOnePixelOneFrameWebmURL() {
49 return mOnePixelOneFrameWebmURL;
52 public String getFullScreenVideoTestURL() {
53 return mFullScreenVideoTestURL;
56 public TestWebServer getTestWebServer() {
57 return mTestWebServer;
60 private static List<Pair<String, String>> getWebmHeaders(boolean disableCache) {
61 return CommonResources.getContentTypeAndCacheHeaders("video/webm", disableCache);
64 private static List<Pair<String, String>> getHTMLHeaders(boolean disableCache) {
65 return CommonResources.getContentTypeAndCacheHeaders("text/html", disableCache);
68 private void initFullScreenVideoTest(Context context) throws IOException {
69 final String fullScreenVideoPath = "full_screen_video_test.html";
70 String data = loadAssetData(context, fullScreenVideoPath);
71 mFullScreenVideoTestURL = mTestWebServer.setResponse("/" + fullScreenVideoPath,
72 data.replace("VIDEO_FILE_URL", getOnePixelOneFrameWebmURL()),
73 getHTMLHeaders(false));
76 private String loadAssetData(Context context, String asset) throws IOException {
77 InputStream in = context.getAssets().open(asset);
78 ByteArrayOutputStream os = new ByteArrayOutputStream();
79 int bufferLength = 128;
80 byte[] buffer = new byte[bufferLength];
81 int len = in.read(buffer, 0, bufferLength);
83 os.write(buffer, 0, len);
84 if (len < bufferLength) break;
85 len = in.read(buffer, 0, bufferLength);