| Index: android_webview/javatests/src/org/chromium/android_webview/test/MediaAccessPermissionRequestTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/MediaAccessPermissionRequestTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/MediaAccessPermissionRequestTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4d85e7cfe7fba43c63fb4f0282e5a37011cfa98f
|
| --- /dev/null
|
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/MediaAccessPermissionRequestTest.java
|
| @@ -0,0 +1,111 @@
|
| +// Copyright 2014 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.net.Uri;
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import org.chromium.android_webview.AwContents;
|
| +import org.chromium.android_webview.permission.AwPermissionRequest;
|
| +import org.chromium.base.test.util.DisabledTest;
|
| +import org.chromium.base.test.util.Feature;
|
| +import org.chromium.content.browser.test.util.CallbackHelper;
|
| +
|
| +/**
|
| + * Test MediaAccessPermissionRequest.
|
| + */
|
| +public class MediaAccessPermissionRequestTest extends AwTestBase {
|
| + private static class OnPermissionRequestHelper extends CallbackHelper {
|
| + private Uri mOrigin;
|
| + private long mResources;
|
| + public void notifyCalled(Uri origin, long resources) {
|
| + mOrigin = origin;
|
| + mResources = resources;
|
| + notifyCalled();
|
| + }
|
| + public Uri getOrigin() {
|
| + assert getCallCount() > 0;
|
| + return mOrigin;
|
| + }
|
| + public long getResources() {
|
| + assert getCallCount() > 0;
|
| + return mResources;
|
| + }
|
| + }
|
| +
|
| + private final String data = "<html> <script> " +
|
| + "var constraints = {audio: true, video: true};" +
|
| + "var video = document.querySelector('video');" +
|
| + "function successCallback(stream) {" +
|
| + "window.document.title = 'grant';" +
|
| + "if (window.URL) {" +
|
| + "video.src = window.URL.createObjectURL(stream);" +
|
| + "} else {" +
|
| + "video.src = stream;" +
|
| + "}" +
|
| + "}" +
|
| + "function errorCallback(error){" +
|
| + "window.document.title = 'deny';" +
|
| + "console.log('navigator.getUserMedia error: ', error);" +
|
| + "}" +
|
| + "navigator.webkitGetUserMedia(constraints, successCallback, errorCallback)" +
|
| + " </script><body>" +
|
| + "<video autoplay></video>" +
|
| + "</body></html>";
|
| +
|
| + // The test isn't passed due to WebRTC requests security origin.
|
| + @Feature({"AndroidWebView"})
|
| + @SmallTest
|
| + @DisabledTest
|
| + public void testGrantAccess() throws Throwable {
|
| + final OnPermissionRequestHelper helper = new OnPermissionRequestHelper();
|
| + TestAwContentsClient contentsClient =
|
| + new TestAwContentsClient() {
|
| + @Override
|
| + public void onPermissionRequest(AwPermissionRequest awPermissionRequest) {
|
| + awPermissionRequest.grant();
|
| + helper.notifyCalled(awPermissionRequest.getOrigin(),
|
| + awPermissionRequest.getResources());
|
| + }
|
| + };
|
| + final AwTestContainerView testContainerView =
|
| + createAwTestContainerViewOnMainSync(contentsClient);
|
| + final AwContents awContents = testContainerView.getAwContents();
|
| + enableJavaScriptOnUiThread(awContents);
|
| + int callCount = helper.getCallCount();
|
| + loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), data,
|
| + "text/html", false);
|
| + helper.waitForCallback(callCount);
|
| + Thread.sleep(5 * 1000);
|
| + assertEquals("grant", getTitleOnUiThread(awContents));
|
| + }
|
| +
|
| + // The test isn't passed due to WebRTC requests security origin.
|
| + @Feature({"AndroidWebView"})
|
| + @SmallTest
|
| + @DisabledTest
|
| + public void testDenyAccess() throws Throwable {
|
| + final OnPermissionRequestHelper helper = new OnPermissionRequestHelper();
|
| + TestAwContentsClient contentsClient =
|
| + new TestAwContentsClient() {
|
| + @Override
|
| + public void onPermissionRequest(AwPermissionRequest awPermissionRequest) {
|
| + awPermissionRequest.deny();
|
| + helper.notifyCalled(awPermissionRequest.getOrigin(),
|
| + awPermissionRequest.getResources());
|
| + }
|
| + };
|
| + final AwTestContainerView testContainerView =
|
| + createAwTestContainerViewOnMainSync(contentsClient);
|
| + final AwContents awContents = testContainerView.getAwContents();
|
| + enableJavaScriptOnUiThread(awContents);
|
| + int callCount = helper.getCallCount();
|
| + loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), data,
|
| + "text/html", false);
|
| + helper.waitForCallback(callCount);
|
| + Thread.sleep(5 * 1000);
|
| + assertEquals("deny", getTitleOnUiThread(awContents));
|
| + }
|
| +}
|
|
|