mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[flutter_tools] Remove web specific vm_service handlers, move handler tests to single location (#80440)
This commit is contained in:
parent
bccacfed36
commit
c09ace2724
@ -29,7 +29,6 @@ import '../cache.dart';
|
||||
import '../dart/language_version.dart';
|
||||
import '../devfs.dart';
|
||||
import '../device.dart';
|
||||
import '../features.dart';
|
||||
import '../flutter_plugins.dart';
|
||||
import '../platform_plugins.dart';
|
||||
import '../plugins.dart';
|
||||
@ -60,7 +59,6 @@ class DwdsWebRunnerFactory extends WebRunnerFactory {
|
||||
@required FileSystem fileSystem,
|
||||
@required SystemClock systemClock,
|
||||
@required Usage usage,
|
||||
@required FeatureFlags featureFlags,
|
||||
bool machine = false,
|
||||
}) {
|
||||
return ResidentWebRunner(
|
||||
@ -120,6 +118,12 @@ class ResidentWebRunner extends ResidentRunner {
|
||||
final Usage _usage;
|
||||
final UrlTunneller _urlTunneller;
|
||||
|
||||
@override
|
||||
Logger get logger => _logger;
|
||||
|
||||
@override
|
||||
FileSystem get fileSystem => _fileSystem;
|
||||
|
||||
FlutterDevice get device => flutterDevices.first;
|
||||
final FlutterProject flutterProject;
|
||||
DateTime firstBuildTime;
|
||||
@ -162,9 +166,6 @@ class ResidentWebRunner extends ResidentRunner {
|
||||
}
|
||||
FlutterVmService _instance;
|
||||
|
||||
@override
|
||||
bool get supportsRestart => true;
|
||||
|
||||
@override
|
||||
Future<void> cleanupAfterSignal() async {
|
||||
await _cleanup();
|
||||
@ -219,242 +220,12 @@ class ResidentWebRunner extends ResidentRunner {
|
||||
printDebuggerList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugDumpApp() async {
|
||||
if (!supportsServiceProtocol || _vmService == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
final String data = await _vmService
|
||||
.flutterDebugDumpApp(
|
||||
isolateId: null,
|
||||
);
|
||||
_logger.printStatus(data);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugDumpRenderTree() async {
|
||||
if (!supportsServiceProtocol || _vmService == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
final String data = await _vmService
|
||||
.flutterDebugDumpRenderTree(
|
||||
isolateId: null,
|
||||
);
|
||||
_logger.printStatus(data);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugDumpLayerTree() async {
|
||||
if (!supportsServiceProtocol || _vmService == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
final String data = await _vmService
|
||||
.flutterDebugDumpLayerTree(
|
||||
isolateId: null,
|
||||
);
|
||||
_logger.printStatus(data);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugDumpSemanticsTreeInTraversalOrder() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterDebugDumpSemanticsTreeInTraversalOrder(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugTogglePlatform() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
final String currentPlatform = await _vmService
|
||||
?.flutterPlatformOverride(
|
||||
isolateId: null,
|
||||
);
|
||||
final String platform = nextPlatform(currentPlatform);
|
||||
await _vmService
|
||||
?.flutterPlatformOverride(
|
||||
platform: platform,
|
||||
isolateId: null,
|
||||
);
|
||||
_logger.printStatus('Switched operating system to $platform');
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugToggleBrightness() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
final Brightness currentBrightness = await _vmService
|
||||
?.flutterBrightnessOverride(
|
||||
isolateId: null,
|
||||
);
|
||||
Brightness next;
|
||||
if (currentBrightness == Brightness.light) {
|
||||
next = Brightness.dark;
|
||||
} else if (currentBrightness == Brightness.dark) {
|
||||
next = Brightness.light;
|
||||
}
|
||||
next = await _vmService
|
||||
?.flutterBrightnessOverride(
|
||||
brightness: next,
|
||||
isolateId: null,
|
||||
);
|
||||
_logger.printStatus('Changed brightness to $next.');
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> stopEchoingDeviceLog() async {
|
||||
// Do nothing for ResidentWebRunner
|
||||
await device.stopEchoingDeviceLog();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugDumpSemanticsTreeInInverseHitTestOrder() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterDebugDumpSemanticsTreeInInverseHitTestOrder(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugToggleDebugPaintSizeEnabled() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterToggleDebugPaintSizeEnabled(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugToggleDebugCheckElevationsEnabled() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterToggleDebugCheckElevationsEnabled(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugTogglePerformanceOverlayOverride() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterTogglePerformanceOverlayOverride(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugToggleWidgetInspector() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterToggleWidgetInspector(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugToggleInvertOversizedImages() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterToggleInvertOversizedImages(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> debugToggleProfileWidgetBuilds() async {
|
||||
if (!supportsServiceProtocol) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
await _vmService
|
||||
?.flutterToggleProfileWidgetBuilds(
|
||||
isolateId: null,
|
||||
);
|
||||
} on vmservice.RPCError {
|
||||
// do nothing.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<int> run({
|
||||
Completer<DebugConnectionInfo> connectionInfoCompleter,
|
||||
|
@ -172,175 +172,6 @@ void main() {
|
||||
fileSystem = MemoryFileSystem.test();
|
||||
});
|
||||
|
||||
testUsingContext('Does not hot restart when device does not support it', () async {
|
||||
fileSystem.file('.packages')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('\n');
|
||||
// Setup mocks
|
||||
final MockDevice mockDevice = MockDevice();
|
||||
when(mockDevice.supportsHotReload).thenReturn(true);
|
||||
when(mockDevice.supportsHotRestart).thenReturn(false);
|
||||
when(mockDevice.targetPlatform).thenAnswer((Invocation _) async => TargetPlatform.tester);
|
||||
// Trigger hot restart.
|
||||
final List<FlutterDevice> devices = <FlutterDevice>[
|
||||
FlutterDevice(mockDevice, generator: residentCompiler, buildInfo: BuildInfo.debug)..devFS = mockDevFs,
|
||||
];
|
||||
final OperationResult result = await HotRunner(
|
||||
devices,
|
||||
debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug),
|
||||
target: 'main.dart',
|
||||
devtoolsHandler: createNoOpHandler,
|
||||
).restart(fullRestart: true);
|
||||
// Expect hot restart failed.
|
||||
expect(result.isOk, false);
|
||||
expect(result.message, 'hotRestart not supported');
|
||||
}, overrides: <Type, Generator>{
|
||||
HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: true),
|
||||
Artifacts: () => Artifacts.test(),
|
||||
FileSystem: () => fileSystem,
|
||||
Platform: () => FakePlatform(operatingSystem: 'linux'),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
|
||||
testUsingContext('Does not hot restart when one of many devices does not support it', () async {
|
||||
fileSystem.file('.packages')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('\n');
|
||||
// Setup mocks
|
||||
final MockDevice mockDevice = MockDevice();
|
||||
final MockDevice mockHotDevice = MockDevice();
|
||||
when(mockDevice.supportsHotReload).thenReturn(true);
|
||||
when(mockDevice.supportsHotRestart).thenReturn(false);
|
||||
when(mockHotDevice.supportsHotReload).thenReturn(true);
|
||||
when(mockHotDevice.supportsHotRestart).thenReturn(true);
|
||||
// Trigger hot restart.
|
||||
final List<FlutterDevice> devices = <FlutterDevice>[
|
||||
FlutterDevice(mockDevice, generator: residentCompiler, buildInfo: BuildInfo.debug)..devFS = mockDevFs,
|
||||
FlutterDevice(mockHotDevice, generator: residentCompiler, buildInfo: BuildInfo.debug)..devFS = mockDevFs,
|
||||
];
|
||||
final OperationResult result = await HotRunner(
|
||||
devices,
|
||||
debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug),
|
||||
target: 'main.dart',
|
||||
devtoolsHandler: createNoOpHandler,
|
||||
).restart(fullRestart: true);
|
||||
// Expect hot restart failed.
|
||||
expect(result.isOk, false);
|
||||
expect(result.message, 'hotRestart not supported');
|
||||
}, overrides: <Type, Generator>{
|
||||
HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: true),
|
||||
Artifacts: () => Artifacts.test(),
|
||||
FileSystem: () => fileSystem,
|
||||
Platform: () => FakePlatform(operatingSystem: 'linux'),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
|
||||
testUsingContext('Does hot restarts when all devices support it', () async {
|
||||
final FakeVmServiceHost fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
listViews,
|
||||
FakeVmServiceRequest(
|
||||
method: 'getIsolate',
|
||||
args: <String, Object>{
|
||||
'isolateId': fakeUnpausedIsolate.id,
|
||||
},
|
||||
jsonResponse: fakeUnpausedIsolate.toJson(),
|
||||
),
|
||||
FakeVmServiceRequest(
|
||||
method: 'getVM',
|
||||
jsonResponse: vm_service.VM.parse(<String, Object>{}).toJson()
|
||||
),
|
||||
listViews,
|
||||
FakeVmServiceRequest(
|
||||
method: 'getIsolate',
|
||||
args: <String, Object>{
|
||||
'isolateId': fakeUnpausedIsolate.id,
|
||||
},
|
||||
jsonResponse: fakeUnpausedIsolate.toJson(),
|
||||
),
|
||||
FakeVmServiceRequest(
|
||||
method: 'getVM',
|
||||
jsonResponse: vm_service.VM.parse(<String, Object>{}).toJson()
|
||||
),
|
||||
listViews,
|
||||
listViews,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'streamListen',
|
||||
args: <String, Object>{
|
||||
'streamId': 'Isolate',
|
||||
}
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'streamListen',
|
||||
args: <String, Object>{
|
||||
'streamId': 'Isolate',
|
||||
}
|
||||
),
|
||||
FakeVmServiceStreamResponse(
|
||||
streamId: 'Isolate',
|
||||
event: vm_service.Event(
|
||||
timestamp: 0,
|
||||
kind: vm_service.EventKind.kIsolateRunnable,
|
||||
)
|
||||
),
|
||||
FakeVmServiceStreamResponse(
|
||||
streamId: 'Isolate',
|
||||
event: vm_service.Event(
|
||||
timestamp: 0,
|
||||
kind: vm_service.EventKind.kIsolateRunnable,
|
||||
)
|
||||
),
|
||||
FakeVmServiceRequest(
|
||||
method: kRunInViewMethod,
|
||||
args: <String, Object>{
|
||||
'viewId': fakeFlutterView.id,
|
||||
'mainScript': 'main.dart.dill',
|
||||
'assetDirectory': 'build/flutter_assets',
|
||||
}
|
||||
),
|
||||
FakeVmServiceRequest(
|
||||
method: kRunInViewMethod,
|
||||
args: <String, Object>{
|
||||
'viewId': fakeFlutterView.id,
|
||||
'mainScript': 'main.dart.dill',
|
||||
'assetDirectory': 'build/flutter_assets',
|
||||
}
|
||||
),
|
||||
]);
|
||||
// Setup mocks
|
||||
final MockDevice mockDevice = MockDevice();
|
||||
final MockDevice mockHotDevice = MockDevice();
|
||||
when(mockDevice.supportsHotReload).thenReturn(true);
|
||||
when(mockDevice.supportsHotRestart).thenReturn(true);
|
||||
when(mockHotDevice.supportsHotReload).thenReturn(true);
|
||||
when(mockHotDevice.supportsHotRestart).thenReturn(true);
|
||||
// Trigger a restart.
|
||||
final List<FlutterDevice> devices = <FlutterDevice>[
|
||||
FlutterDevice(mockDevice, generator: residentCompiler, buildInfo: BuildInfo.debug)
|
||||
..vmService = fakeVmServiceHost.vmService
|
||||
..devFS = mockDevFs,
|
||||
FlutterDevice(mockHotDevice, generator: residentCompiler, buildInfo: BuildInfo.debug)
|
||||
..vmService = fakeVmServiceHost.vmService
|
||||
..devFS = mockDevFs,
|
||||
];
|
||||
final HotRunner hotRunner = HotRunner(
|
||||
devices,
|
||||
debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug),
|
||||
target: 'main.dart',
|
||||
devtoolsHandler: createNoOpHandler,
|
||||
);
|
||||
final OperationResult result = await hotRunner.restart(fullRestart: true);
|
||||
// Expect hot restart was successful.
|
||||
expect(hotRunner.uri, mockDevFs.baseUri);
|
||||
expect(result.isOk, true);
|
||||
expect(result.message, isNot('hotRestart not supported'));
|
||||
}, overrides: <Type, Generator>{
|
||||
HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: true),
|
||||
Artifacts: () => Artifacts.test(),
|
||||
FileSystem: () => fileSystem,
|
||||
Platform: () => FakePlatform(operatingSystem: 'linux'),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
|
||||
testUsingContext('setup function fails', () async {
|
||||
fileSystem.file('.packages')
|
||||
..createSync(recursive: true)
|
||||
@ -368,76 +199,6 @@ void main() {
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
|
||||
testUsingContext('hot restart supported', () async {
|
||||
fileSystem.file('.packages')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('\n');
|
||||
// Setup mocks
|
||||
final FakeVmServiceHost fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
listViews,
|
||||
FakeVmServiceRequest(
|
||||
method: 'getIsolate',
|
||||
args: <String, Object>{
|
||||
'isolateId': fakeUnpausedIsolate.id,
|
||||
},
|
||||
jsonResponse: fakeUnpausedIsolate.toJson(),
|
||||
),
|
||||
FakeVmServiceRequest(
|
||||
method: 'getVM',
|
||||
jsonResponse: vm_service.VM.parse(<String, Object>{}).toJson(),
|
||||
),
|
||||
listViews,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'streamListen',
|
||||
args: <String, Object>{
|
||||
'streamId': 'Isolate',
|
||||
}
|
||||
),
|
||||
FakeVmServiceRequest(
|
||||
method: kRunInViewMethod,
|
||||
args: <String, Object>{
|
||||
'viewId': fakeFlutterView.id,
|
||||
'mainScript': 'main.dart.dill',
|
||||
'assetDirectory': 'build/flutter_assets',
|
||||
}
|
||||
),
|
||||
FakeVmServiceStreamResponse(
|
||||
streamId: 'Isolate',
|
||||
event: vm_service.Event(
|
||||
timestamp: 0,
|
||||
kind: vm_service.EventKind.kIsolateRunnable,
|
||||
)
|
||||
),
|
||||
]);
|
||||
final MockDevice mockDevice = MockDevice();
|
||||
when(mockDevice.supportsHotReload).thenReturn(true);
|
||||
when(mockDevice.supportsHotRestart).thenReturn(true);
|
||||
when(mockDevice.targetPlatform).thenAnswer((Invocation _) async => TargetPlatform.tester);
|
||||
// Trigger hot restart.
|
||||
final List<FlutterDevice> devices = <FlutterDevice>[
|
||||
FlutterDevice(mockDevice, generator: residentCompiler, buildInfo: BuildInfo.debug)
|
||||
..vmService = fakeVmServiceHost.vmService
|
||||
..devFS = mockDevFs,
|
||||
];
|
||||
final HotRunner hotRunner = HotRunner(
|
||||
devices,
|
||||
debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug),
|
||||
target: 'main.dart',
|
||||
devtoolsHandler: createNoOpHandler,
|
||||
);
|
||||
final OperationResult result = await hotRunner.restart(fullRestart: true);
|
||||
// Expect hot restart successful.
|
||||
expect(hotRunner.uri, mockDevFs.baseUri);
|
||||
expect(result.isOk, true);
|
||||
expect(result.message, isNot('setupHotRestart failed'));
|
||||
}, overrides: <Type, Generator>{
|
||||
HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: true),
|
||||
Artifacts: () => Artifacts.test(),
|
||||
FileSystem: () => fileSystem,
|
||||
Platform: () => FakePlatform(operatingSystem: 'linux'),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
|
||||
group('shutdown hook tests', () {
|
||||
TestHotRunnerConfig shutdownTestingConfig;
|
||||
|
||||
|
@ -228,7 +228,6 @@ void main() {
|
||||
fileSystem: fileSystem,
|
||||
logger: BufferLogger.test(),
|
||||
usage: globals.flutterUsage,
|
||||
|
||||
systemClock: globals.systemClock,
|
||||
);
|
||||
|
||||
@ -908,412 +907,6 @@ void main() {
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugDumpApp', () async {
|
||||
final BufferLogger logger = BufferLogger.test();
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice, logger: logger);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.debugDumpApp',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
),
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
await residentWebRunner.debugDumpApp();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugDumpLayerTree', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.debugDumpLayerTree',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
),
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
await residentWebRunner.debugDumpLayerTree();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugDumpRenderTree', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.debugDumpRenderTree',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
),
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
await residentWebRunner.debugDumpRenderTree();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugDumpSemanticsTreeInTraversalOrder', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.debugDumpSemanticsTreeInTraversalOrder',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
),
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
await residentWebRunner.debugDumpSemanticsTreeInTraversalOrder();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugDumpSemanticsTreeInInverseHitTestOrder', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.debugDumpSemanticsTreeInInverseHitTestOrder',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
),
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
|
||||
await connectionInfoCompleter.future;
|
||||
await residentWebRunner.debugDumpSemanticsTreeInInverseHitTestOrder();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugToggleDebugPaintSizeEnabled', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.debugPaint',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'false'
|
||||
},
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.debugPaint',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
'enabled': 'true',
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'value': 'true'
|
||||
},
|
||||
)
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
|
||||
await residentWebRunner.debugToggleDebugPaintSizeEnabled();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugTogglePerformanceOverlayOverride', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.showPerformanceOverlay',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'false'
|
||||
},
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.showPerformanceOverlay',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
'enabled': 'true',
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'true'
|
||||
},
|
||||
)
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
|
||||
await residentWebRunner.debugTogglePerformanceOverlayOverride();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugToggleInvertOversizedImagesOverride', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.invertOversizedImages',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'false'
|
||||
},
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.invertOversizedImages',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
'enabled': 'true',
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'true'
|
||||
},
|
||||
)
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
|
||||
await residentWebRunner.debugToggleInvertOversizedImages();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugToggleWidgetInspector', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.inspector.show',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'false'
|
||||
},
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.inspector.show',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
'enabled': 'true',
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'true'
|
||||
},
|
||||
)
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
|
||||
await residentWebRunner.debugToggleWidgetInspector();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugToggleProfileWidgetBuilds', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.profileWidgetBuilds',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'false'
|
||||
},
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.profileWidgetBuilds',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
'enabled': 'true',
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'enabled': 'true'
|
||||
},
|
||||
)
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
|
||||
await residentWebRunner.debugToggleProfileWidgetBuilds();
|
||||
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugTogglePlatform', () async {
|
||||
final BufferLogger logger = BufferLogger.test();
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice, logger: logger);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.platformOverride',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'value': 'iOS'
|
||||
},
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.platformOverride',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
'value': 'fuchsia',
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'value': 'fuchsia'
|
||||
},
|
||||
),
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
|
||||
await residentWebRunner.debugTogglePlatform();
|
||||
|
||||
expect(logger.statusText,
|
||||
contains('Switched operating system to fuchsia'));
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('debugToggleBrightness', () async {
|
||||
final BufferLogger logger = BufferLogger.test();
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice, logger: logger);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
...kAttachExpectations,
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.brightnessOverride',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'value': 'Brightness.light'
|
||||
},
|
||||
),
|
||||
const FakeVmServiceRequest(
|
||||
method: 'ext.flutter.brightnessOverride',
|
||||
args: <String, Object>{
|
||||
'isolateId': null,
|
||||
'value': 'Brightness.dark',
|
||||
},
|
||||
jsonResponse: <String, Object>{
|
||||
'value': 'Brightness.dark'
|
||||
},
|
||||
),
|
||||
]);
|
||||
_setupMocks();
|
||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||
unawaited(residentWebRunner.run(
|
||||
connectionInfoCompleter: connectionInfoCompleter,
|
||||
));
|
||||
await connectionInfoCompleter.future;
|
||||
|
||||
await residentWebRunner.debugToggleBrightness();
|
||||
|
||||
expect(logger.statusText,
|
||||
contains('Changed brightness to Brightness.dark.'));
|
||||
expect(fakeVmServiceHost.hasRemainingExpectations, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => processManager,
|
||||
});
|
||||
|
||||
testUsingContext('cleanup of resources is safe to call multiple times', () async {
|
||||
final ResidentRunner residentWebRunner = setUpResidentRunner(mockFlutterDevice);
|
||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user