forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add browsertests for VibrationManager java impl on android.
On android VibrationManager mojo service is implemented directly with Java, this CL adds browsertests to confirm VibrationManagerImpl behaviors. BUG= TEST=ContentShellTest instrumentation test PASS on android device. Review URL: https://codereview.chromium.org/1324853004 Cr-Commit-Position: refs/heads/master@{#358286}
- Loading branch information
leon.han
authored and
Commit bot
committed
Nov 6, 2015
1 parent
5fcf9a3
commit ce83630
Showing
3 changed files
with
145 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
114 changes: 114 additions & 0 deletions
114
...t/public/android/javatests/src/org/chromium/content/browser/VibrationManagerImplTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
// Copyright 2015 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.content.browser; | ||
|
||
import android.os.Vibrator; | ||
import android.test.suitebuilder.annotation.MediumTest; | ||
|
||
import org.chromium.base.test.util.Feature; | ||
import org.chromium.base.test.util.UrlUtils; | ||
import org.chromium.content.browser.test.util.Criteria; | ||
import org.chromium.content.browser.test.util.CriteriaHelper; | ||
import org.chromium.content_shell_apk.ContentShellTestBase; | ||
import org.chromium.device.vibration.VibrationManagerImpl; | ||
|
||
/** | ||
* Tests java implementation of VibrationManager mojo service on android. | ||
*/ | ||
public class VibrationManagerImplTest extends ContentShellTestBase { | ||
private static final String URL_VIBRATOR_VIBRATE = UrlUtils.encodeHtmlDataUri("<html><body>" | ||
+ " <script type=\"text/javascript\">" | ||
+ " navigator.vibrate(3000);" | ||
+ " </script>" | ||
+ "</body></html>"); | ||
private static final String URL_VIBRATOR_CANCEL = UrlUtils.encodeHtmlDataUri("<html><body>" | ||
+ " <script type=\"text/javascript\">" | ||
+ " navigator.vibrate(10000);" | ||
+ " navigator.vibrate(0);" | ||
+ " </script>" | ||
+ "</body></html>"); | ||
|
||
private FakeAndroidVibratorWrapper mFakeWrapper; | ||
|
||
// Override AndroidVibratorWrapper API to record the calling. | ||
private static class FakeAndroidVibratorWrapper | ||
extends VibrationManagerImpl.AndroidVibratorWrapper { | ||
// Record the parameters of vibrate() and cancel(). | ||
public long mMilliSeconds; | ||
public boolean mCancelled; | ||
|
||
protected FakeAndroidVibratorWrapper() { | ||
super(); | ||
mMilliSeconds = -1; | ||
mCancelled = false; | ||
} | ||
|
||
@Override | ||
public void vibrate(Vibrator vibrator, long milliseconds) { | ||
mMilliSeconds = milliseconds; | ||
} | ||
|
||
@Override | ||
public void cancel(Vibrator vibrator) { | ||
mCancelled = true; | ||
} | ||
} | ||
|
||
@Override | ||
protected void setUp() throws Exception { | ||
super.setUp(); | ||
launchContentShellWithUrl("about:blank"); | ||
assertTrue("Page failed to load", waitForActiveShellToBeDoneLoading()); | ||
|
||
mFakeWrapper = new FakeAndroidVibratorWrapper(); | ||
VibrationManagerImpl.setVibratorWrapperForTesting(mFakeWrapper); | ||
assertEquals(-1, mFakeWrapper.mMilliSeconds); | ||
assertFalse(mFakeWrapper.mCancelled); | ||
} | ||
|
||
/** | ||
* Inject our fake wrapper into VibrationManagerImpl, | ||
* load the webpage which will request vibrate for 3000 milliseconds, | ||
* the fake wrapper vibrate() should be called and 3000 milliseconds should be recorded | ||
* correctly. | ||
*/ | ||
@MediumTest | ||
@Feature({"Vibration"}) | ||
public void testVibrate() throws Throwable { | ||
loadNewShell(URL_VIBRATOR_VIBRATE); | ||
|
||
// Waits until VibrationManagerImpl.Vibrate() got called. | ||
assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { | ||
@Override | ||
public boolean isSatisfied() { | ||
return mFakeWrapper.mMilliSeconds != -1; | ||
} | ||
})); | ||
|
||
assertEquals( | ||
"Did not get vibrate mMilliSeconds correctly", 3000, mFakeWrapper.mMilliSeconds); | ||
} | ||
|
||
/** | ||
* Inject our fake wrapper into VibrationManagerImpl, | ||
* load the webpage which will request vibrate and then request cancel, | ||
* the fake wrapper cancel() should be called. | ||
*/ | ||
@MediumTest | ||
@Feature({"Vibration"}) | ||
public void testCancel() throws Throwable { | ||
loadNewShell(URL_VIBRATOR_CANCEL); | ||
|
||
// Waits until VibrationManagerImpl.Cancel() got called. | ||
assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { | ||
@Override | ||
public boolean isSatisfied() { | ||
return mFakeWrapper.mCancelled; | ||
} | ||
})); | ||
|
||
assertTrue("Did not get cancelled", mFakeWrapper.mCancelled); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters