diff --git a/dart/async/lib/html.dart b/dart/async/lib/html.dart
index 6f5e17c0..3337d6d1 100644
--- a/dart/async/lib/html.dart
+++ b/dart/async/lib/html.dart
@@ -72,22 +72,25 @@ class _HtmlMouse implements PageLoaderMouse {
@override
Future down(MouseButton button,
- {_ElementPageLoaderElement eventTarget, bool sync: true}) =>
+ {PageLoaderElement eventTarget, bool sync: true}) =>
loader.executeSynced(
() => dispatchEvent('mousedown', eventTarget, button), sync);
@override
- Future moveTo(_ElementPageLoaderElement element, int xOffset, int yOffset,
- {_ElementPageLoaderElement eventTarget, bool sync: true}) =>
+ Future moveTo(PageLoaderElement element, int xOffset, int yOffset,
+ {PageLoaderElement eventTarget, bool sync: true}) =>
loader.executeSynced(() {
- clientX = (element.node.getBoundingClientRect().left + xOffset).ceil();
- clientY = (element.node.getBoundingClientRect().top + yOffset).ceil();
+ if (element is _ElementPageLoaderElement) {
+ clientX =
+ (element.node.getBoundingClientRect().left + xOffset).ceil();
+ clientY = (element.node.getBoundingClientRect().top + yOffset).ceil();
+ }
return dispatchEvent('mousemove', eventTarget);
}, sync);
@override
Future up(MouseButton button,
- {_ElementPageLoaderElement eventTarget, bool sync: true}) =>
+ {PageLoaderElement eventTarget, bool sync: true}) =>
loader.executeSynced(() => dispatchEvent('mouseup', eventTarget), sync);
int get pageX => window.pageXOffset + clientX;
diff --git a/dart/async/lib/src/core.dart b/dart/async/lib/src/core.dart
index 1b4ade26..34b964c9 100644
--- a/dart/async/lib/src/core.dart
+++ b/dart/async/lib/src/core.dart
@@ -377,7 +377,7 @@ class _ListFieldInfo extends _FieldInfo {
: super._(fieldName);
@override
- Future calculateFieldValue(PageLoaderElement context,
+ Future calculateFieldValue(PageLoaderElement context,
BasePageLoader loader, bool displayCheck) async {
if (!_displayCheck) {
displayCheck = false;
@@ -405,10 +405,10 @@ class _LazyFieldInfo extends _FieldInfo {
super._(impl._fieldName);
@override
- calculateFieldValue(
+ Future calculateFieldValue(
PageLoaderElement context, BasePageLoader loader, bool displayCheck) {
- return new _Lazy(
- () => _impl.calculateFieldValue(context, loader, displayCheck));
+ return new Future.value(new _Lazy(
+ () => _impl.calculateFieldValue(context, loader, displayCheck)));
}
}
@@ -416,9 +416,8 @@ class _InjectedPageLoaderFieldInfo extends _FieldInfo {
_InjectedPageLoaderFieldInfo(Symbol fieldName) : super._(fieldName);
@override
- calculateFieldValue(PageLoaderElement context, BasePageLoader loader,
- bool displayCheck) =>
- loader;
+ Future calculateFieldValue(PageLoaderElement context, BasePageLoader loader,
+ bool displayCheck) => new Future.value(loader);
}
Stream _getElements(PageLoaderElement context, Finder finder,
diff --git a/dart/async/lib/webdriver.dart b/dart/async/lib/webdriver.dart
index 6bde912d..b402d822 100644
--- a/dart/async/lib/webdriver.dart
+++ b/dart/async/lib/webdriver.dart
@@ -65,7 +65,7 @@ class _WebDriverMouse implements PageLoaderMouse {
@override
Future down(MouseButton button,
- {_WebElementPageLoaderElement eventTarget, bool sync: true}) =>
+ {PageLoaderElement eventTarget, bool sync: true}) =>
loader.executeSynced(() {
if (eventTarget == null) {
return driver.mouse.down(button);
@@ -74,10 +74,10 @@ class _WebDriverMouse implements PageLoaderMouse {
}, sync);
@override
- Future moveTo(_WebElementPageLoaderElement element, int xOffset, int yOffset,
- {_WebElementPageLoaderElement eventTarget, bool sync: true}) =>
+ Future moveTo(PageLoaderElement element, int xOffset, int yOffset,
+ {PageLoaderElement eventTarget, bool sync: true}) =>
loader.executeSynced(() {
- if (eventTarget == null) {
+ if (eventTarget == null && element is _WebElementPageLoaderElement) {
return driver.mouse.moveTo(
element: element.context, xOffset: xOffset, yOffset: yOffset);
}
@@ -86,7 +86,7 @@ class _WebDriverMouse implements PageLoaderMouse {
@override
Future up(MouseButton button,
- {_WebElementPageLoaderElement eventTarget, bool sync: true}) =>
+ {PageLoaderElement eventTarget, bool sync: true}) =>
loader.executeSynced(() {
if (eventTarget == null) {
return driver.mouse.up(button);
@@ -94,12 +94,16 @@ class _WebDriverMouse implements PageLoaderMouse {
return _fireEvent(eventTarget, 'mouseup', button);
}, sync);
- Future _fireEvent(_WebElementPageLoaderElement eventTarget, String type,
+ Future _fireEvent(PageLoaderElement eventTarget, String type,
[MouseButton button]) =>
driver.execute(
"arguments[0].dispatchEvent(new MouseEvent(arguments[1], "
"{'button' : arguments[2]}));",
- [eventTarget.context, type, button?.value]);
+ [
+ (eventTarget as _WebElementPageLoaderElement).context,
+ type,
+ button?.value
+ ]);
}
abstract class WebDriverPageLoaderElement implements PageLoaderElement {