| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.input; | 5 package org.chromium.chrome.browser.input; |
| 6 | 6 |
| 7 import android.app.Activity; | 7 import android.app.Activity; |
| 8 import android.content.Intent; | 8 import android.content.Intent; |
| 9 import android.provider.MediaStore; | 9 import android.provider.MediaStore; |
| 10 import android.test.suitebuilder.annotation.MediumTest; | 10 import android.test.suitebuilder.annotation.MediumTest; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 | 23 |
| 24 /** | 24 /** |
| 25 * Integration test for select file dialog used for <input type="file" /> | 25 * Integration test for select file dialog used for <input type="file" /> |
| 26 */ | 26 */ |
| 27 public class SelectFileDialogTest extends ChromeShellTestBase { | 27 public class SelectFileDialogTest extends ChromeShellTestBase { |
| 28 private static final String DATA_URL = UrlUtils.encodeHtmlDataUri( | 28 private static final String DATA_URL = UrlUtils.encodeHtmlDataUri( |
| 29 "<html><head><meta name=\"viewport\"" + | 29 "<html><head><meta name=\"viewport\"" + |
| 30 "content=\"width=device-width, initial-scale=2.0, maximum-scale=2.0\
" /></head>" + | 30 "content=\"width=device-width, initial-scale=2.0, maximum-scale=2.0\
" /></head>" + |
| 31 "<body><form action=\"about:blank\">" + | 31 "<body><form action=\"about:blank\">" + |
| 32 "<input id=\"input_file\" type=\"file\" /><br/>" + | 32 "<input id=\"input_file\" type=\"file\" /><br/>" + |
| 33 "<input id=\"input_file_multiple\" type=\"file\" multiple /><br />"
+ |
| 33 "<input id=\"input_image\" type=\"file\" accept=\"image/*\" capture
/><br/>" + | 34 "<input id=\"input_image\" type=\"file\" accept=\"image/*\" capture
/><br/>" + |
| 34 "<input id=\"input_audio\" type=\"file\" accept=\"audio/*\" capture
/>" + | 35 "<input id=\"input_audio\" type=\"file\" accept=\"audio/*\" capture
/>" + |
| 35 "</form>" + | 36 "</form>" + |
| 36 "</body></html>"); | 37 "</body></html>"); |
| 37 | 38 |
| 38 private ContentViewCore mContentViewCore; | 39 private ContentViewCore mContentViewCore; |
| 39 private ActivityWindowAndroidForTest mActivityWindowAndroidForTest; | 40 private ActivityWindowAndroidForTest mActivityWindowAndroidForTest; |
| 40 | 41 |
| 41 private static class ActivityWindowAndroidForTest extends ActivityWindowAndr
oid { | 42 private static class ActivityWindowAndroidForTest extends ActivityWindowAndr
oid { |
| 42 public Intent lastIntent; | 43 public Intent lastIntent; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 */ | 90 */ |
| 90 @MediumTest | 91 @MediumTest |
| 91 @Feature({"TextInput", "Main"}) | 92 @Feature({"TextInput", "Main"}) |
| 92 public void testSelectFileAndCancelRequest() throws Throwable { | 93 public void testSelectFileAndCancelRequest() throws Throwable { |
| 93 DOMUtils.clickNode(this, mContentViewCore, "input_file"); | 94 DOMUtils.clickNode(this, mContentViewCore, "input_file"); |
| 94 assertTrue("SelectFileDialog never sent an intent.", | 95 assertTrue("SelectFileDialog never sent an intent.", |
| 95 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); | 96 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
| 96 assertEquals(Intent.ACTION_CHOOSER, mActivityWindowAndroidForTest.lastIn
tent.getAction()); | 97 assertEquals(Intent.ACTION_CHOOSER, mActivityWindowAndroidForTest.lastIn
tent.getAction()); |
| 97 resetActivityWindowAndroidForTest(); | 98 resetActivityWindowAndroidForTest(); |
| 98 | 99 |
| 100 DOMUtils.clickNode(this, mContentViewCore, "input_file_multiple"); |
| 101 assertTrue("SelectFileDialog never sent an intent.", |
| 102 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
| 103 assertEquals(Intent.ACTION_CHOOSER, mActivityWindowAndroidForTest.lastIn
tent.getAction()); |
| 104 Intent contentIntent = (Intent) |
| 105 mActivityWindowAndroidForTest.lastIntent.getParcelableExtra(Inte
nt.EXTRA_INTENT); |
| 106 assertNotNull(contentIntent); |
| 107 assertTrue(contentIntent.hasExtra(Intent.EXTRA_ALLOW_MULTIPLE)); |
| 108 resetActivityWindowAndroidForTest(); |
| 109 |
| 99 DOMUtils.clickNode(this, mContentViewCore, "input_image"); | 110 DOMUtils.clickNode(this, mContentViewCore, "input_image"); |
| 100 assertTrue("SelectFileDialog never sent an intent.", | 111 assertTrue("SelectFileDialog never sent an intent.", |
| 101 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); | 112 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
| 102 assertEquals(MediaStore.ACTION_IMAGE_CAPTURE, | 113 assertEquals(MediaStore.ACTION_IMAGE_CAPTURE, |
| 103 mActivityWindowAndroidForTest.lastIntent.getAction()); | 114 mActivityWindowAndroidForTest.lastIntent.getAction()); |
| 104 resetActivityWindowAndroidForTest(); | 115 resetActivityWindowAndroidForTest(); |
| 105 | 116 |
| 106 DOMUtils.clickNode(this, mContentViewCore, "input_audio"); | 117 DOMUtils.clickNode(this, mContentViewCore, "input_audio"); |
| 107 assertTrue("SelectFileDialog never sent an intent.", | 118 assertTrue("SelectFileDialog never sent an intent.", |
| 108 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); | 119 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
| 109 assertEquals(MediaStore.Audio.Media.RECORD_SOUND_ACTION, | 120 assertEquals(MediaStore.Audio.Media.RECORD_SOUND_ACTION, |
| 110 mActivityWindowAndroidForTest.lastIntent.getAction()); | 121 mActivityWindowAndroidForTest.lastIntent.getAction()); |
| 111 resetActivityWindowAndroidForTest(); | 122 resetActivityWindowAndroidForTest(); |
| 112 } | 123 } |
| 113 | 124 |
| 114 private void resetActivityWindowAndroidForTest() { | 125 private void resetActivityWindowAndroidForTest() { |
| 115 UiUtils.runOnUiThread(getActivity(), new Runnable() { | 126 UiUtils.runOnUiThread(getActivity(), new Runnable() { |
| 116 @Override | 127 @Override |
| 117 public void run() { | 128 public void run() { |
| 118 mActivityWindowAndroidForTest.lastCallback.onIntentCompleted( | 129 mActivityWindowAndroidForTest.lastCallback.onIntentCompleted( |
| 119 mActivityWindowAndroidForTest, Activity.RESULT_CANCELED,
null, null); | 130 mActivityWindowAndroidForTest, Activity.RESULT_CANCELED,
null, null); |
| 120 } | 131 } |
| 121 }); | 132 }); |
| 122 mActivityWindowAndroidForTest.lastCallback = null; | 133 mActivityWindowAndroidForTest.lastCallback = null; |
| 123 mActivityWindowAndroidForTest.lastIntent = null; | 134 mActivityWindowAndroidForTest.lastIntent = null; |
| 124 } | 135 } |
| 125 } | 136 } |
| OLD | NEW |