blob: 20c83faf2fcaf693f0f65659c2eea5776f1c749d [file] [log] [blame]
import 'package:webdriver/src/common/exception.dart';
import 'package:webdriver/src/common/mouse.dart';
import 'package:webdriver/src/common/request.dart';
import 'package:webdriver/src/common/webdriver_handler.dart';
import 'package:webdriver/src/handler/json_wire/utils.dart';
class JsonWireMouseHandler extends MouseHandler {
@override
WebDriverRequest buildClickRequest(
[MouseButton button = MouseButton.primary]) =>
WebDriverRequest.postRequest('click', {'button': button.value});
@override
void parseClickResponse(WebDriverResponse response) {
parseJsonWireResponse(response);
}
@override
WebDriverRequest buildDownRequest(
[MouseButton button = MouseButton.primary]) =>
WebDriverRequest.postRequest('buttondown', {'button': button.value});
@override
void parseDownResponse(WebDriverResponse response) {
parseJsonWireResponse(response);
}
@override
WebDriverRequest buildUpRequest([MouseButton button = MouseButton.primary]) =>
WebDriverRequest.postRequest('buttonup', {'button': button.value});
@override
void parseUpResponse(WebDriverResponse response) {
parseJsonWireResponse(response);
}
@override
WebDriverRequest buildDoubleClickRequest() =>
WebDriverRequest.postRequest('doubleclick');
@override
void parseDoubleClickResponse(WebDriverResponse response) {
parseJsonWireResponse(response);
}
@override
WebDriverRequest buildMoveToRequest(
{String? elementId, int? xOffset, int? yOffset, bool absolute = false}) {
if (absolute) {
throw const InvalidArgumentException(
0, 'Move to an absolute location is only supported in W3C spec.');
}
final body = {};
if (elementId != null) {
body['element'] = elementId;
}
if (xOffset != null && yOffset != null) {
body['xoffset'] = xOffset.floor();
body['yoffset'] = yOffset.floor();
}
return WebDriverRequest.postRequest('moveto', body);
}
@override
void parseMoveToResponse(WebDriverResponse response) {
parseJsonWireResponse(response);
}
}