e1d687cb9e
This CL migrates the `dwds` and `dwds_test_common` packages into the Dart SDK repository. Key Changes: - Migration: Moved source code and tests into `pkg/dwds` & `pkg/dwds_test_common`. - Linting and path resolution were updated in https://github.com/dart-lang/webdev/pull/2797, https://github.com/dart-lang/webdev/pull/2798 & https://github.com/dart-lang/webdev/pull/2799 to support both environments (webdev and sdk). Testing: - All tests passing locally. - CI try bots are green. Design Doc: http://goto.google.com/migrating-webdev and http://goto.google.com/migrating-dwds Fixes https://github.com/dart-lang/sdk/issues/62100 Fixes https://github.com/dart-lang/sdk/issues/62101 Fixes https://github.com/dart-lang/sdk/issues/62102 Fixes https://github.com/dart-lang/sdk/issues/62103 Cq-Include-Trybots: luci.dart.try:pkg-win-release-try,pkg-win-release-arm64-try,pkg-mac-release-try,pkg-mac-release-arm64-try,pkg-linux-release-try,pkg-linux-release-arm64-try,pkg-linux-debug-try Change-Id: Icc2bf9a86efb79d04a67053962a4548fe6e894f7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/494640 Reviewed-by: Nicholas Shahan <nshahan@google.com> Reviewed-by: Nate Biggs <natebiggs@google.com> Reviewed-by: Ivan Inozemtsev <iinozemtsev@google.com> Reviewed-by: Ben Konyi <bkonyi@google.com> Reviewed-by: Mark Zhou <markzipan@google.com>
163 lines
4.4 KiB
Dart
163 lines
4.4 KiB
Dart
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import 'package:dwds/data/utils.dart';
|
|
|
|
/// A request to open DevTools.
|
|
class DevToolsRequest {
|
|
static const type = 'DevToolsRequest';
|
|
|
|
/// Identifies a given application, across tabs/windows.
|
|
final String appId;
|
|
|
|
/// Identifies a given instance of an application, unique per tab/window.
|
|
final String instanceId;
|
|
|
|
/// Identifies the context in which evaluations should occur.
|
|
///
|
|
/// Defines execution context for the debug service that connects
|
|
/// to chrome via the extension debugger.
|
|
/// Can be `null` for local debug service, which gets the execution
|
|
/// context from the Chrome runtime.
|
|
final int? contextId;
|
|
|
|
/// Belongs to the tab that requests the DevTools.
|
|
///
|
|
/// Defines the tab being debugged for the debug service that connects
|
|
/// to chrome via the extension debugger.
|
|
/// Can be `null` for local debug service, which finds the tab with the
|
|
/// correct `dartAppInstanceId` automatically.
|
|
final String? tabUrl;
|
|
|
|
/// Designates this as a request to send back the DevTools URI instead of
|
|
/// opening DevTools in a new tab or window.
|
|
///
|
|
/// Only available on requests coming from the Dart Debug Extension. Is `null`
|
|
/// for local debug service.
|
|
final bool? uriOnly;
|
|
|
|
/// Identifies the client that DWDS is attaching to.
|
|
///
|
|
/// This could be Cider, DevTools (as a standalone app), or DevTools (embedded
|
|
/// in Chrome DevTools).
|
|
final String? client;
|
|
|
|
DevToolsRequest({
|
|
required this.appId,
|
|
required this.instanceId,
|
|
this.contextId,
|
|
this.tabUrl,
|
|
this.uriOnly,
|
|
this.client,
|
|
});
|
|
|
|
factory DevToolsRequest.fromJson(List<dynamic> jsonList) {
|
|
final json = listToMap(jsonList, type: type);
|
|
return DevToolsRequest(
|
|
appId: json['appId'] as String,
|
|
instanceId: json['instanceId'] as String,
|
|
contextId: json['contextId'] as int?,
|
|
tabUrl: json['tabUrl'] as String?,
|
|
uriOnly: json['uriOnly'] as bool?,
|
|
client: json['client'] as String?,
|
|
);
|
|
}
|
|
|
|
List<Object?> toJson() {
|
|
return [
|
|
type,
|
|
'appId',
|
|
appId,
|
|
'instanceId',
|
|
instanceId,
|
|
if (contextId != null) ...['contextId', contextId],
|
|
if (tabUrl != null) ...['tabUrl', tabUrl],
|
|
if (uriOnly != null) ...['uriOnly', uriOnly],
|
|
if (client != null) ...['client', client],
|
|
];
|
|
}
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
return other is DevToolsRequest &&
|
|
other.appId == appId &&
|
|
other.instanceId == instanceId &&
|
|
other.contextId == contextId &&
|
|
other.tabUrl == tabUrl &&
|
|
other.uriOnly == uriOnly &&
|
|
other.client == client;
|
|
}
|
|
|
|
@override
|
|
int get hashCode =>
|
|
Object.hash(appId, instanceId, contextId, tabUrl, uriOnly, client);
|
|
|
|
@override
|
|
String toString() {
|
|
return 'DevToolsRequest { '
|
|
'appId: $appId, '
|
|
'instanceId: $instanceId, '
|
|
'contextId: $contextId, '
|
|
'tabUrl: $tabUrl, '
|
|
'uriOnly: $uriOnly, '
|
|
'client: $client, '
|
|
'}';
|
|
}
|
|
}
|
|
|
|
/// A response to a [DevToolsRequest].
|
|
class DevToolsResponse {
|
|
static const type = 'DevToolsResponse';
|
|
final bool success;
|
|
final bool promptExtension;
|
|
final String? error;
|
|
|
|
DevToolsResponse({
|
|
required this.success,
|
|
required this.promptExtension,
|
|
this.error,
|
|
});
|
|
|
|
factory DevToolsResponse.fromJson(List<dynamic> jsonList) {
|
|
final json = listToMap(jsonList, type: type);
|
|
return DevToolsResponse(
|
|
success: json['success'] as bool,
|
|
promptExtension: json['promptExtension'] as bool,
|
|
error: json['error'] as String?,
|
|
);
|
|
}
|
|
|
|
List<Object?> toJson() {
|
|
return [
|
|
type,
|
|
'success',
|
|
success,
|
|
'promptExtension',
|
|
promptExtension,
|
|
if (error != null) ...['error', error],
|
|
];
|
|
}
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
return other is DevToolsResponse &&
|
|
other.success == success &&
|
|
other.promptExtension == promptExtension &&
|
|
other.error == error;
|
|
}
|
|
|
|
@override
|
|
int get hashCode => Object.hash(success, promptExtension, error);
|
|
|
|
@override
|
|
String toString() {
|
|
return 'DevToolsResponse { '
|
|
'success: $success, '
|
|
'promptExtension: $promptExtension, '
|
|
'error: $error }';
|
|
}
|
|
}
|