blob: 5b51382b2c52d76d150849ad6d1537e304be9375 [file] [log] [blame]
// Copyright 2018 Google. All rights reserved. Use of this source code is
// governed by a BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import '../webkit_inspection_protocol.dart';
class WipTarget extends WipDomain {
WipTarget(WipConnection connection) : super(connection);
/// Creates a new page.
///
/// [url] The initial URL the page will be navigated to.
///
/// Returns the targetId of the page opened.
Future<String> createTarget(String url) async {
WipResponse response =
await sendCommand('Target.createTarget', params: {'url': url});
return response.result['targetId'] as String;
}
/// Activates (focuses) the target.
Future<WipResponse> activateTarget(String targetId) =>
sendCommand('Target.activateTarget', params: {'targetId': targetId});
/// Closes the target. If the target is a page that gets closed too.
///
/// Returns `true` on success.
Future<bool> closeTarget(String targetId) async {
WipResponse response =
await sendCommand('Target.closeTarget', params: {'targetId': targetId});
return response.result['success'] as bool;
}
/// Inject object to the target's main frame that provides a communication
/// channel with browser target. Injected object will be available as
/// `window[bindingName]`. The object has the following API:
///
/// - binding.send(json) - a method to send messages over the remote
/// debugging protocol
/// - binding.onmessage = json => handleMessage(json) - a callback that will
/// be called for the protocol notifications and command responses.
@experimental
Future<WipResponse> exposeDevToolsProtocol(
String targetId, {
String bindingName,
}) {
final Map<String, dynamic> params = {'targetId': targetId};
if (bindingName != null) {
params['bindingName'] = bindingName;
}
return sendCommand(
'Target.exposeDevToolsProtocol',
params: params,
);
}
}