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.annotation.TargetApi; |
7 import android.app.Activity; | 8 import android.app.Activity; |
8 import android.content.Intent; | 9 import android.content.Intent; |
| 10 import android.os.Build; |
9 import android.provider.MediaStore; | 11 import android.provider.MediaStore; |
10 import android.test.suitebuilder.annotation.MediumTest; | 12 import android.test.suitebuilder.annotation.MediumTest; |
11 | 13 |
12 import org.chromium.base.test.util.Feature; | 14 import org.chromium.base.test.util.Feature; |
13 import org.chromium.base.test.util.UrlUtils; | 15 import org.chromium.base.test.util.UrlUtils; |
14 import org.chromium.chrome.shell.ChromeShellActivity; | 16 import org.chromium.chrome.shell.ChromeShellActivity; |
15 import org.chromium.chrome.shell.ChromeShellActivity.ActivityWindowAndroidFactor
y; | 17 import org.chromium.chrome.shell.ChromeShellActivity.ActivityWindowAndroidFactor
y; |
16 import org.chromium.chrome.shell.ChromeShellTestBase; | 18 import org.chromium.chrome.shell.ChromeShellTestBase; |
17 import org.chromium.content.browser.ContentViewCore; | 19 import org.chromium.content.browser.ContentViewCore; |
18 import org.chromium.content.browser.test.util.Criteria; | 20 import org.chromium.content.browser.test.util.Criteria; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 mContentViewCore = getActivity().getActiveContentViewCore(); | 83 mContentViewCore = getActivity().getActiveContentViewCore(); |
82 // TODO(aurimas) remove this wait once crbug.com/179511 is fixed. | 84 // TODO(aurimas) remove this wait once crbug.com/179511 is fixed. |
83 assertWaitForPageScaleFactorMatch(2); | 85 assertWaitForPageScaleFactorMatch(2); |
84 assertTrue( | 86 assertTrue( |
85 DOMUtils.waitForNonZeroNodeBounds(mContentViewCore, "input_file"
)); | 87 DOMUtils.waitForNonZeroNodeBounds(mContentViewCore, "input_file"
)); |
86 } | 88 } |
87 | 89 |
88 /** | 90 /** |
89 * Tests that clicks on <input type="file" /> trigger intent calls to Activi
tyWindowAndroid. | 91 * Tests that clicks on <input type="file" /> trigger intent calls to Activi
tyWindowAndroid. |
90 */ | 92 */ |
| 93 @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) |
91 @MediumTest | 94 @MediumTest |
92 @Feature({"TextInput", "Main"}) | 95 @Feature({"TextInput", "Main"}) |
93 public void testSelectFileAndCancelRequest() throws Throwable { | 96 public void testSelectFileAndCancelRequest() throws Throwable { |
94 DOMUtils.clickNode(this, mContentViewCore, "input_file"); | 97 DOMUtils.clickNode(this, mContentViewCore, "input_file"); |
95 assertTrue("SelectFileDialog never sent an intent.", | 98 assertTrue("SelectFileDialog never sent an intent.", |
96 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); | 99 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
97 assertEquals(Intent.ACTION_CHOOSER, mActivityWindowAndroidForTest.lastIn
tent.getAction()); | 100 assertEquals(Intent.ACTION_CHOOSER, mActivityWindowAndroidForTest.lastIn
tent.getAction()); |
98 resetActivityWindowAndroidForTest(); | 101 resetActivityWindowAndroidForTest(); |
99 | 102 |
100 DOMUtils.clickNode(this, mContentViewCore, "input_file_multiple"); | 103 DOMUtils.clickNode(this, mContentViewCore, "input_file_multiple"); |
101 assertTrue("SelectFileDialog never sent an intent.", | 104 assertTrue("SelectFileDialog never sent an intent.", |
102 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); | 105 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
103 assertEquals(Intent.ACTION_CHOOSER, mActivityWindowAndroidForTest.lastIn
tent.getAction()); | 106 assertEquals(Intent.ACTION_CHOOSER, mActivityWindowAndroidForTest.lastIn
tent.getAction()); |
104 Intent contentIntent = (Intent) | 107 Intent contentIntent = (Intent) |
105 mActivityWindowAndroidForTest.lastIntent.getParcelableExtra(Inte
nt.EXTRA_INTENT); | 108 mActivityWindowAndroidForTest.lastIntent.getParcelableExtra(Inte
nt.EXTRA_INTENT); |
106 assertNotNull(contentIntent); | 109 assertNotNull(contentIntent); |
107 assertTrue(contentIntent.hasExtra(Intent.EXTRA_ALLOW_MULTIPLE)); | 110 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { |
| 111 assertTrue(contentIntent.hasExtra(Intent.EXTRA_ALLOW_MULTIPLE)); |
| 112 } |
108 resetActivityWindowAndroidForTest(); | 113 resetActivityWindowAndroidForTest(); |
109 | 114 |
110 DOMUtils.clickNode(this, mContentViewCore, "input_image"); | 115 DOMUtils.clickNode(this, mContentViewCore, "input_image"); |
111 assertTrue("SelectFileDialog never sent an intent.", | 116 assertTrue("SelectFileDialog never sent an intent.", |
112 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); | 117 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
113 assertEquals(MediaStore.ACTION_IMAGE_CAPTURE, | 118 assertEquals(MediaStore.ACTION_IMAGE_CAPTURE, |
114 mActivityWindowAndroidForTest.lastIntent.getAction()); | 119 mActivityWindowAndroidForTest.lastIntent.getAction()); |
115 resetActivityWindowAndroidForTest(); | 120 resetActivityWindowAndroidForTest(); |
116 | 121 |
117 DOMUtils.clickNode(this, mContentViewCore, "input_audio"); | 122 DOMUtils.clickNode(this, mContentViewCore, "input_audio"); |
118 assertTrue("SelectFileDialog never sent an intent.", | 123 assertTrue("SelectFileDialog never sent an intent.", |
119 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); | 124 CriteriaHelper.pollForCriteria(new IntentSentCriteria())); |
120 assertEquals(MediaStore.Audio.Media.RECORD_SOUND_ACTION, | 125 assertEquals(MediaStore.Audio.Media.RECORD_SOUND_ACTION, |
121 mActivityWindowAndroidForTest.lastIntent.getAction()); | 126 mActivityWindowAndroidForTest.lastIntent.getAction()); |
122 resetActivityWindowAndroidForTest(); | 127 resetActivityWindowAndroidForTest(); |
123 } | 128 } |
124 | 129 |
125 private void resetActivityWindowAndroidForTest() { | 130 private void resetActivityWindowAndroidForTest() { |
126 UiUtils.runOnUiThread(getActivity(), new Runnable() { | 131 UiUtils.runOnUiThread(getActivity(), new Runnable() { |
127 @Override | 132 @Override |
128 public void run() { | 133 public void run() { |
129 mActivityWindowAndroidForTest.lastCallback.onIntentCompleted( | 134 mActivityWindowAndroidForTest.lastCallback.onIntentCompleted( |
130 mActivityWindowAndroidForTest, Activity.RESULT_CANCELED,
null, null); | 135 mActivityWindowAndroidForTest, Activity.RESULT_CANCELED,
null, null); |
131 } | 136 } |
132 }); | 137 }); |
133 mActivityWindowAndroidForTest.lastCallback = null; | 138 mActivityWindowAndroidForTest.lastCallback = null; |
134 mActivityWindowAndroidForTest.lastIntent = null; | 139 mActivityWindowAndroidForTest.lastIntent = null; |
135 } | 140 } |
136 } | 141 } |
OLD | NEW |