Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Side by Side Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwPermissionManagerTest.java

Issue 1342833002: permissions: handle request ids for permissions in permission manager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address webview comment Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW
« no previous file with comments | « android_webview/browser/aw_permission_manager.cc ('k') | chrome/browser/permissions/permission_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698