OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
michaelbai
2015/10/01 18:24:34
Copyright 2015
Lalit Maganti
2015/10/02 10:20:52
Done.
| |
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; | |
6 | |
7 import android.os.Build; | |
8 import android.os.Handler; | |
9 import android.os.Looper; | |
10 import android.test.suitebuilder.annotation.SmallTest; | |
11 | |
12 import org.chromium.android_webview.AwContents; | |
13 import org.chromium.android_webview.permission.AwPermissionRequest; | |
14 import org.chromium.android_webview.test.util.CommonResources; | |
15 import org.chromium.base.test.util.Feature; | |
16 import org.chromium.base.test.util.MinAndroidSdkLevel; | |
17 import org.chromium.net.test.util.TestWebServer; | |
18 | |
19 import java.util.concurrent.Callable; | |
20 | |
21 /** | |
22 * Test AwPermissionManager. | |
23 */ | |
24 @MinAndroidSdkLevel(Build.VERSION_CODES.KITKAT) | |
25 public class AwPermissionManagerTest extends AwTestBase { | |
26 | |
27 private static final String REQUEST_DUPLICATE = "<html> <script>" | |
28 + "navigator.requestMIDIAccess({sysex: true}).then(function() {" | |
29 + "});" | |
30 + "navigator.requestMIDIAccess({sysex: true}).then(function() {" | |
31 + " window.document.title = 'second-granted';" | |
32 + "});" | |
33 + "</script><body>" | |
34 + "</body></html>"; | |
35 | |
36 private TestWebServer mTestWebServer; | |
37 private String mPage; | |
38 | |
39 @Override | |
40 protected void setUp() throws Exception { | |
41 super.setUp(); | |
42 mTestWebServer = TestWebServer.start(); | |
43 } | |
44 | |
45 @Override | |
46 protected void tearDown() throws Exception { | |
47 mTestWebServer.shutdown(); | |
48 mTestWebServer = null; | |
49 super.tearDown(); | |
50 } | |
51 | |
52 @Feature({"AndroidWebView"}) | |
53 @SmallTest | |
54 public void testRequestMultiple() throws Throwable { | |
55 mPage = mTestWebServer.setResponse("/permissions", REQUEST_DUPLICATE, | |
56 CommonResources.getTextHtmlHeaders(true)); | |
57 | |
58 TestAwContentsClient contentsClient = new TestAwContentsClient() { | |
59 private boolean mCalled = false; | |
60 | |
61 @Override | |
62 public void onPermissionRequest(final AwPermissionRequest awPermissi onRequest) { | |
63 if (mCalled) { | |
64 fail("Only one request was expected"); | |
65 return; | |
66 } | |
67 mCalled = true; | |
68 | |
69 // Emulate a delayed response to the request by running four sec onds in the future. | |
70 Handler handler = new Handler(Looper.myLooper()); | |
71 handler.postDelayed(new Runnable() { | |
72 @Override | |
73 public void run() { | |
74 awPermissionRequest.grant(); | |
75 } | |
76 }, 4000); | |
77 } | |
78 }; | |
79 | |
80 final AwTestContainerView testContainerView = | |
81 createAwTestContainerViewOnMainSync(contentsClient); | |
82 final AwContents awContents = testContainerView.getAwContents(); | |
83 enableJavaScriptOnUiThread(awContents); | |
84 loadUrlAsync(awContents, mPage, null); | |
85 pollTitleAs("second-granted", awContents); | |
86 } | |
87 | |
88 private void pollTitleAs(final String title, final AwContents awContents) | |
89 throws Exception { | |
90 poll(new Callable<Boolean>() { | |
91 @Override | |
92 public Boolean call() throws Exception { | |
93 return title.equals(getTitleOnUiThread(awContents)); | |
94 } | |
95 }); | |
96 } | |
97 } | |
98 | |
OLD | NEW |