mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
Bug 855146 - Part 2: Extract runOnUiThreadSync() test method. r=gbrown
--HG-- extra : rebase_source : 8014e5438596d8981e074ad847a675bacb18eb2c
This commit is contained in:
parent
0030db5412
commit
aeecff5b62
@ -40,9 +40,8 @@ public class FennecNativeElement implements Element {
|
|||||||
private boolean mClickSuccess;
|
private boolean mClickSuccess;
|
||||||
|
|
||||||
public boolean click() {
|
public boolean click() {
|
||||||
final SynchronousQueue syncQueue = new SynchronousQueue();
|
|
||||||
mClickSuccess = false;
|
mClickSuccess = false;
|
||||||
mActivity.runOnUiThread(
|
RobocopUtils.runOnUiThreadSync(mActivity,
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
View view = (View)mActivity.findViewById(mId);
|
View view = (View)mActivity.findViewById(mId);
|
||||||
@ -57,32 +56,16 @@ public class FennecNativeElement implements Element {
|
|||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
||||||
"click: unable to find view "+mId);
|
"click: unable to find view "+mId);
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
syncQueue.put(new Object());
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
try {
|
|
||||||
// Wait for the UiThread code to finish running
|
|
||||||
if (syncQueue.poll(MAX_WAIT_MS, TimeUnit.MILLISECONDS) == null) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
|
||||||
"click: time-out waiting for UI thread");
|
|
||||||
FennecNativeDriver.logAllStackTraces(FennecNativeDriver.LogLevel.ERROR);
|
|
||||||
}
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
|
||||||
}
|
|
||||||
return mClickSuccess;
|
return mClickSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object mText;
|
private Object mText;
|
||||||
|
|
||||||
public String getText() {
|
public String getText() {
|
||||||
final SynchronousQueue syncQueue = new SynchronousQueue();
|
|
||||||
mText = null;
|
mText = null;
|
||||||
mActivity.runOnUiThread(
|
RobocopUtils.runOnUiThreadSync(mActivity,
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
View v = mActivity.findViewById(mId);
|
View v = mActivity.findViewById(mId);
|
||||||
@ -109,24 +92,9 @@ public class FennecNativeElement implements Element {
|
|||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
||||||
"getText: unhandled type for view "+mId);
|
"getText: unhandled type for view "+mId);
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
syncQueue.put(new Object());
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
|
||||||
}
|
|
||||||
} // end of run() method definition
|
} // end of run() method definition
|
||||||
} // end of anonymous Runnable object instantiation
|
} // end of anonymous Runnable object instantiation
|
||||||
);
|
);
|
||||||
try {
|
|
||||||
// Wait for the UiThread code to finish running
|
|
||||||
if (syncQueue.poll(MAX_WAIT_MS, TimeUnit.MILLISECONDS) == null) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
|
||||||
"getText: time-out waiting for UI thread");
|
|
||||||
FennecNativeDriver.logAllStackTraces(FennecNativeDriver.LogLevel.ERROR);
|
|
||||||
}
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
|
||||||
}
|
|
||||||
if (mText == null) {
|
if (mText == null) {
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.WARN,
|
FennecNativeDriver.log(FennecNativeDriver.LogLevel.WARN,
|
||||||
"getText: Text is null for view "+mId);
|
"getText: Text is null for view "+mId);
|
||||||
@ -138,33 +106,16 @@ public class FennecNativeElement implements Element {
|
|||||||
private boolean mDisplayed;
|
private boolean mDisplayed;
|
||||||
|
|
||||||
public boolean isDisplayed() {
|
public boolean isDisplayed() {
|
||||||
final SynchronousQueue syncQueue = new SynchronousQueue();
|
|
||||||
mDisplayed = false;
|
mDisplayed = false;
|
||||||
mActivity.runOnUiThread(
|
RobocopUtils.runOnUiThreadSync(mActivity,
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
View view = (View)mActivity.findViewById(mId);
|
View view = (View)mActivity.findViewById(mId);
|
||||||
if (view != null) {
|
if (view != null) {
|
||||||
mDisplayed = true;
|
mDisplayed = true;
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
syncQueue.put(new Object());
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
try {
|
|
||||||
// Wait for the UiThread code to finish running
|
|
||||||
if (syncQueue.poll(MAX_WAIT_MS, TimeUnit.MILLISECONDS) == null) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
|
||||||
"isDisplayed: time-out waiting for UI thread");
|
|
||||||
FennecNativeDriver.logAllStackTraces(FennecNativeDriver.LogLevel.ERROR);
|
|
||||||
}
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
|
||||||
}
|
|
||||||
return mDisplayed;
|
return mDisplayed;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ _JAVA_HARNESS = \
|
|||||||
FennecNativeDriver.java \
|
FennecNativeDriver.java \
|
||||||
FennecNativeElement.java \
|
FennecNativeElement.java \
|
||||||
RoboCopException.java \
|
RoboCopException.java \
|
||||||
|
RobocopUtils.java \
|
||||||
PaintedSurface.java \
|
PaintedSurface.java \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
43
build/mobile/robocop/RobocopUtils.java.in
Normal file
43
build/mobile/robocop/RobocopUtils.java.in
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#filter substitution
|
||||||
|
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
package @ANDROID_PACKAGE_NAME@;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
|
||||||
|
import java.util.concurrent.SynchronousQueue;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public final class RobocopUtils {
|
||||||
|
private static final int MAX_WAIT_MS = 3000;
|
||||||
|
|
||||||
|
private RobocopUtils() {}
|
||||||
|
|
||||||
|
public static void runOnUiThreadSync(Activity activity, final Runnable runnable) {
|
||||||
|
final SynchronousQueue syncQueue = new SynchronousQueue();
|
||||||
|
activity.runOnUiThread(
|
||||||
|
new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
runnable.run();
|
||||||
|
try {
|
||||||
|
syncQueue.put(new Object());
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
// Wait for the UiThread code to finish running
|
||||||
|
if (syncQueue.poll(MAX_WAIT_MS, TimeUnit.MILLISECONDS) == null) {
|
||||||
|
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR,
|
||||||
|
"time-out waiting for UI thread");
|
||||||
|
FennecNativeDriver.logAllStackTraces(FennecNativeDriver.LogLevel.ERROR);
|
||||||
|
}
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
FennecNativeDriver.log(FennecNativeDriver.LogLevel.ERROR, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4
mobile/android/base/tests/BaseTest.java.in
Executable file → Normal file
4
mobile/android/base/tests/BaseTest.java.in
Executable file → Normal file
@ -566,6 +566,10 @@ abstract class BaseTest extends ActivityInstrumentationTestCase2<Activity> {
|
|||||||
hitEnterAndWait();
|
hitEnterAndWait();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final void runOnUiThreadSync(Runnable runnable) {
|
||||||
|
RobocopUtils.runOnUiThreadSync(mActivity, runnable);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will edit the bookmark with index = bookmarkIndex from the list of bookmarks
|
* This method will edit the bookmark with index = bookmarkIndex from the list of bookmarks
|
||||||
* For the field index:
|
* For the field index:
|
||||||
|
Loading…
Reference in New Issue
Block a user