blob: f32f292293b5b83da39d4240d64b83d9ced218d2 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.android_webview.test;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.util.Log;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.android_webview.AwWebResourceResponse;
import org.chromium.android_webview.DefaultVideoPosterRequestHandler;
import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.Feature;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.TimeoutException;
/**
* Tests for AwContentClient.GetDefaultVideoPoster.
*/
@RunWith(AwJUnit4ClassRunner.class)
public class AwContentsClientGetDefaultVideoPosterTest {
@Rule
public AwActivityTestRule mActivityTestRule = new AwActivityTestRule();
private static final String TAG = "AwContentsClientGetDefaultVideoPosterTest";
private static class DefaultVideoPosterClient extends TestAwContentsClient {
private CallbackHelper mVideoPosterCallbackHelper = new CallbackHelper();
private Bitmap mPoster;
private Context mContext;
public DefaultVideoPosterClient(Context context) {
mContext = context;
}
@Override
public Bitmap getDefaultVideoPoster() {
mVideoPosterCallbackHelper.notifyCalled();
return getPoster();
}
public void waitForGetDefaultVideoPosterCalled() throws InterruptedException,
TimeoutException {
mVideoPosterCallbackHelper.waitForCallback(0);
}
public Bitmap getPoster() {
if (mPoster == null) {
try {
mPoster = BitmapFactory.decodeStream(
mContext.getAssets().open("asset_icon.png"));
} catch (IOException e) {
Log.e(TAG, null, e);
}
}
return mPoster;
}
}
@Test
@Feature({"AndroidWebView"})
@SmallTest
public void testGetDefaultVideoPoster() throws Throwable {
DefaultVideoPosterClient contentsClient = new DefaultVideoPosterClient(
InstrumentationRegistry.getInstrumentation().getContext());
AwTestContainerView testContainerView =
mActivityTestRule.createAwTestContainerViewOnMainSync(contentsClient);
String data = "<html><head><body><video id='video' control src='' /> </body></html>";
mActivityTestRule.loadDataAsync(
testContainerView.getAwContents(), data, "text/html", false);
contentsClient.waitForGetDefaultVideoPosterCalled();
}
@Test
@Feature({"AndroidWebView"})
@SmallTest
public void testInterceptDefaultVidoePosterURL() throws Throwable {
DefaultVideoPosterClient contentsClient = new DefaultVideoPosterClient(
InstrumentationRegistry.getInstrumentation().getTargetContext());
DefaultVideoPosterRequestHandler handler =
new DefaultVideoPosterRequestHandler(contentsClient);
AwWebResourceResponse requestData =
handler.shouldInterceptRequest(handler.getDefaultVideoPosterURL());
Assert.assertTrue(requestData.getMimeType().equals("image/png"));
Bitmap bitmap = BitmapFactory.decodeStream(requestData.getData());
Bitmap poster = contentsClient.getPoster();
Assert.assertEquals("poster.getHeight() not equal to bitmap.getHeight()",
poster.getHeight(), bitmap.getHeight());
Assert.assertEquals("poster.getWidth() not equal to bitmap.getWidth()", poster.getWidth(),
bitmap.getWidth());
}
@Test
@Feature({"AndroidWebView"})
@SmallTest
public void testNoDefaultVideoPoster() throws Throwable {
NullContentsClient contentsClient = new NullContentsClient();
DefaultVideoPosterRequestHandler handler =
new DefaultVideoPosterRequestHandler(contentsClient);
AwWebResourceResponse requestData =
handler.shouldInterceptRequest(handler.getDefaultVideoPosterURL());
Assert.assertTrue(requestData.getMimeType().equals("image/png"));
InputStream in = requestData.getData();
Assert.assertEquals("Should get -1", in.read(), -1);
}
}