Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
1371b8dc
Unverified
Commit
1371b8dc
authored
Jul 18, 2022
by
Christopher Fujino
Committed by
GitHub
Jul 18, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[flutter_tools] Fix null check errors in attach command (#107864)
parent
8dfad230
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
197 additions
and
87 deletions
+197
-87
attach.dart
packages/flutter_tools/lib/src/commands/attach.dart
+12
-8
mdns_discovery.dart
packages/flutter_tools/lib/src/mdns_discovery.dart
+1
-1
attach_test.dart
...utter_tools/test/commands.shard/hermetic/attach_test.dart
+184
-78
No files found.
packages/flutter_tools/lib/src/commands/attach.dart
View file @
1371b8dc
...
@@ -215,7 +215,11 @@ known, it can be explicitly provided to attach via the command-line, e.g.
...
@@ -215,7 +215,11 @@ known, it can be explicitly provided to attach via the command-line, e.g.
Future
<
FlutterCommandResult
>
runCommand
()
async
{
Future
<
FlutterCommandResult
>
runCommand
()
async
{
await
_validateArguments
();
await
_validateArguments
();
final
Device
device
=
await
(
findTargetDevice
()
as
FutureOr
<
Device
>);
final
Device
?
device
=
await
findTargetDevice
();
if
(
device
==
null
)
{
throwToolExit
(
'Did not find any valid target devices.'
);
}
final
Artifacts
?
overrideArtifacts
=
device
.
artifactOverrides
??
globals
.
artifacts
;
final
Artifacts
?
overrideArtifacts
=
device
.
artifactOverrides
??
globals
.
artifacts
;
await
context
.
run
<
void
>(
await
context
.
run
<
void
>(
...
@@ -272,7 +276,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
...
@@ -272,7 +276,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
}
else
if
((
device
is
IOSDevice
)
||
(
device
is
IOSSimulator
)
||
(
device
is
MacOSDesignedForIPadDevice
))
{
}
else
if
((
device
is
IOSDevice
)
||
(
device
is
IOSSimulator
)
||
(
device
is
MacOSDesignedForIPadDevice
))
{
final
Uri
?
uriFromMdns
=
final
Uri
?
uriFromMdns
=
await
MDnsObservatoryDiscovery
.
instance
!.
getObservatoryUri
(
await
MDnsObservatoryDiscovery
.
instance
!.
getObservatoryUri
(
appId
!
,
appId
,
device
,
device
,
usesIpv6:
usesIpv6
,
usesIpv6:
usesIpv6
,
deviceVmservicePort:
deviceVmservicePort
,
deviceVmservicePort:
deviceVmservicePort
,
...
@@ -317,12 +321,12 @@ known, it can be explicitly provided to attach via the command-line, e.g.
...
@@ -317,12 +321,12 @@ known, it can be explicitly provided to attach via the command-line, e.g.
try
{
try
{
int
?
result
;
int
?
result
;
if
(
daemon
!=
null
)
{
if
(
daemon
!=
null
)
{
final
ResidentRunner
runner
=
await
(
createResidentRunner
(
final
ResidentRunner
runner
=
await
createResidentRunner
(
observatoryUris:
observatoryUri
,
observatoryUris:
observatoryUri
,
device:
device
,
device:
device
,
flutterProject:
flutterProject
,
flutterProject:
flutterProject
,
usesIpv6:
usesIpv6
,
usesIpv6:
usesIpv6
,
)
as
FutureOr
<
ResidentRunner
>)
;
);
late
AppInstance
app
;
late
AppInstance
app
;
try
{
try
{
app
=
await
daemon
.
appDomain
.
launch
(
app
=
await
daemon
.
appDomain
.
launch
(
...
@@ -351,12 +355,12 @@ known, it can be explicitly provided to attach via the command-line, e.g.
...
@@ -351,12 +355,12 @@ known, it can be explicitly provided to attach via the command-line, e.g.
return
;
return
;
}
}
while
(
true
)
{
while
(
true
)
{
final
ResidentRunner
runner
=
await
(
createResidentRunner
(
final
ResidentRunner
runner
=
await
createResidentRunner
(
observatoryUris:
observatoryUri
,
observatoryUris:
observatoryUri
,
device:
device
,
device:
device
,
flutterProject:
flutterProject
,
flutterProject:
flutterProject
,
usesIpv6:
usesIpv6
,
usesIpv6:
usesIpv6
,
)
as
FutureOr
<
ResidentRunner
>)
;
);
final
Completer
<
void
>
onAppStart
=
Completer
<
void
>.
sync
();
final
Completer
<
void
>
onAppStart
=
Completer
<
void
>.
sync
();
TerminalHandler
?
terminalHandler
;
TerminalHandler
?
terminalHandler
;
unawaited
(
onAppStart
.
future
.
whenComplete
(()
{
unawaited
(
onAppStart
.
future
.
whenComplete
(()
{
...
@@ -400,7 +404,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
...
@@ -400,7 +404,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
}
}
}
}
Future
<
ResidentRunner
?
>
createResidentRunner
({
Future
<
ResidentRunner
>
createResidentRunner
({
required
Stream
<
Uri
>
observatoryUris
,
required
Stream
<
Uri
>
observatoryUris
,
required
Device
device
,
required
Device
device
,
required
FlutterProject
flutterProject
,
required
FlutterProject
flutterProject
,
...
@@ -452,7 +456,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
...
@@ -452,7 +456,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
}
}
class
HotRunnerFactory
{
class
HotRunnerFactory
{
HotRunner
?
build
(
HotRunner
build
(
List
<
FlutterDevice
>
devices
,
{
List
<
FlutterDevice
>
devices
,
{
required
String
target
,
required
String
target
,
required
DebuggingOptions
debuggingOptions
,
required
DebuggingOptions
debuggingOptions
,
...
...
packages/flutter_tools/lib/src/mdns_discovery.dart
View file @
1371b8dc
...
@@ -145,7 +145,7 @@ class MDnsObservatoryDiscovery {
...
@@ -145,7 +145,7 @@ class MDnsObservatoryDiscovery {
}
}
}
}
Future
<
Uri
?>
getObservatoryUri
(
String
applicationId
,
Device
device
,
{
Future
<
Uri
?>
getObservatoryUri
(
String
?
applicationId
,
Device
device
,
{
bool
usesIpv6
=
false
,
bool
usesIpv6
=
false
,
int
?
hostVmservicePort
,
int
?
hostVmservicePort
,
int
?
deviceVmservicePort
,
int
?
deviceVmservicePort
,
...
...
packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart
View file @
1371b8dc
...
@@ -2,8 +2,6 @@
...
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// found in the LICENSE file.
// @dart = 2.8
import
'dart:async'
;
import
'dart:async'
;
import
'package:file/memory.dart'
;
import
'package:file/memory.dart'
;
...
@@ -13,6 +11,7 @@ import 'package:flutter_tools/src/artifacts.dart';
...
@@ -13,6 +11,7 @@ import 'package:flutter_tools/src/artifacts.dart';
import
'package:flutter_tools/src/base/common.dart'
;
import
'package:flutter_tools/src/base/common.dart'
;
import
'package:flutter_tools/src/base/dds.dart'
;
import
'package:flutter_tools/src/base/dds.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/base/io.dart'
;
import
'package:flutter_tools/src/base/logger.dart'
;
import
'package:flutter_tools/src/base/logger.dart'
;
import
'package:flutter_tools/src/base/terminal.dart'
;
import
'package:flutter_tools/src/base/terminal.dart'
;
import
'package:flutter_tools/src/build_info.dart'
;
import
'package:flutter_tools/src/build_info.dart'
;
...
@@ -24,11 +23,13 @@ import 'package:flutter_tools/src/globals.dart' as globals;
...
@@ -24,11 +23,13 @@ import 'package:flutter_tools/src/globals.dart' as globals;
import
'package:flutter_tools/src/ios/application_package.dart'
;
import
'package:flutter_tools/src/ios/application_package.dart'
;
import
'package:flutter_tools/src/ios/devices.dart'
;
import
'package:flutter_tools/src/ios/devices.dart'
;
import
'package:flutter_tools/src/macos/macos_ipad_device.dart'
;
import
'package:flutter_tools/src/macos/macos_ipad_device.dart'
;
import
'package:flutter_tools/src/mdns_discovery.dart'
;
import
'package:flutter_tools/src/project.dart'
;
import
'package:flutter_tools/src/project.dart'
;
import
'package:flutter_tools/src/reporting/reporting.dart'
;
import
'package:flutter_tools/src/resident_runner.dart'
;
import
'package:flutter_tools/src/resident_runner.dart'
;
import
'package:flutter_tools/src/run_hot.dart'
;
import
'package:flutter_tools/src/run_hot.dart'
;
import
'package:flutter_tools/src/vmservice.dart'
;
import
'package:flutter_tools/src/vmservice.dart'
;
import
'package:m
eta/meta
.dart'
;
import
'package:m
ulticast_dns/multicast_dns
.dart'
;
import
'package:test/fake.dart'
;
import
'package:test/fake.dart'
;
import
'package:vm_service/vm_service.dart'
as
vm_service
;
import
'package:vm_service/vm_service.dart'
as
vm_service
;
...
@@ -43,8 +44,8 @@ void main() {
...
@@ -43,8 +44,8 @@ void main() {
});
});
group
(
'attach'
,
()
{
group
(
'attach'
,
()
{
StreamLogger
logger
;
late
StreamLogger
logger
;
FileSystem
testFileSystem
;
late
FileSystem
testFileSystem
;
setUp
(()
{
setUp
(()
{
Cache
.
disableLocking
();
Cache
.
disableLocking
();
...
@@ -62,10 +63,10 @@ void main() {
...
@@ -62,10 +63,10 @@ void main() {
const
int
devicePort
=
499
;
const
int
devicePort
=
499
;
const
int
hostPort
=
42
;
const
int
hostPort
=
42
;
FakeDeviceLogReader
fakeLogReader
;
late
FakeDeviceLogReader
fakeLogReader
;
RecordingPortForwarder
portForwarder
;
late
RecordingPortForwarder
portForwarder
;
FakeDartDevelopmentService
fakeDds
;
late
FakeDartDevelopmentService
fakeDds
;
FakeAndroidDevice
device
;
late
FakeAndroidDevice
device
;
setUp
(()
{
setUp
(()
{
fakeLogReader
=
FakeDeviceLogReader
();
fakeLogReader
=
FakeDeviceLogReader
();
...
@@ -80,6 +81,45 @@ void main() {
...
@@ -80,6 +81,45 @@ void main() {
fakeLogReader
.
dispose
();
fakeLogReader
.
dispose
();
});
});
testUsingContext
(
'succeeds with iOS device'
,
()
async
{
final
FakeIOSDevice
device
=
FakeIOSDevice
(
logReader:
fakeLogReader
,
portForwarder:
portForwarder
,
onGetLogReader:
()
{
fakeLogReader
.
addLine
(
'Foo'
);
fakeLogReader
.
addLine
(
'The Dart VM service is listening on http://127.0.0.1:
$devicePort
'
);
return
fakeLogReader
;
},
);
testDeviceManager
.
addDevice
(
device
);
final
Completer
<
void
>
completer
=
Completer
<
void
>();
final
StreamSubscription
<
String
>
loggerSubscription
=
logger
.
stream
.
listen
((
String
message
)
{
if
(
message
==
'[verbose] Observatory URL on device: http://127.0.0.1:
$devicePort
'
)
{
// The "Observatory URL on device" message is output by the ProtocolDiscovery when it found the observatory.
completer
.
complete
();
}
});
final
Future
<
void
>
task
=
createTestCommandRunner
(
AttachCommand
()).
run
(<
String
>[
'attach'
]);
await
completer
.
future
;
expect
(
portForwarder
.
devicePort
,
devicePort
);
expect
(
portForwarder
.
hostPort
,
hostPort
);
await
fakeLogReader
.
dispose
();
await
expectLoggerInterruptEndsTask
(
task
,
logger
);
await
loggerSubscription
.
cancel
();
},
overrides:
<
Type
,
Generator
>{
FileSystem:
()
=>
testFileSystem
,
ProcessManager:
()
=>
FakeProcessManager
.
any
(),
Logger:
()
=>
logger
,
MDnsObservatoryDiscovery:
()
=>
MDnsObservatoryDiscovery
(
mdnsClient:
FakeMDnsClient
(<
PtrResourceRecord
>[],
<
String
,
List
<
SrvResourceRecord
>>{}),
logger:
logger
,
flutterUsage:
TestUsage
(),
),
});
testUsingContext
(
'finds observatory port and forwards'
,
()
async
{
testUsingContext
(
'finds observatory port and forwards'
,
()
async
{
device
.
onGetLogReader
=
()
{
device
.
onGetLogReader
=
()
{
fakeLogReader
.
addLine
(
'Foo'
);
fakeLogReader
.
addLine
(
'Foo'
);
...
@@ -139,8 +179,8 @@ void main() {
...
@@ -139,8 +179,8 @@ void main() {
final
FakeHotRunner
hotRunner
=
FakeHotRunner
();
final
FakeHotRunner
hotRunner
=
FakeHotRunner
();
hotRunner
.
onAttach
=
(
hotRunner
.
onAttach
=
(
Completer
<
DebugConnectionInfo
>
connectionInfoCompleter
,
Completer
<
DebugConnectionInfo
>
?
connectionInfoCompleter
,
Completer
<
void
>
appStartedCompleter
,
Completer
<
void
>
?
appStartedCompleter
,
bool
allowExistingDdsInstance
,
bool
allowExistingDdsInstance
,
bool
enableDevTools
,
bool
enableDevTools
,
)
async
=>
0
;
)
async
=>
0
;
...
@@ -224,8 +264,8 @@ void main() {
...
@@ -224,8 +264,8 @@ void main() {
group
(
'forwarding to given port'
,
()
{
group
(
'forwarding to given port'
,
()
{
const
int
devicePort
=
499
;
const
int
devicePort
=
499
;
const
int
hostPort
=
42
;
const
int
hostPort
=
42
;
RecordingPortForwarder
portForwarder
;
late
RecordingPortForwarder
portForwarder
;
FakeAndroidDevice
device
;
late
FakeAndroidDevice
device
;
setUp
(()
{
setUp
(()
{
final
FakeDartDevelopmentService
fakeDds
=
FakeDartDevelopmentService
();
final
FakeDartDevelopmentService
fakeDds
=
FakeDartDevelopmentService
();
...
@@ -408,8 +448,8 @@ void main() {
...
@@ -408,8 +448,8 @@ void main() {
final
FakeHotRunnerFactory
hotRunnerFactory
=
FakeHotRunnerFactory
()
final
FakeHotRunnerFactory
hotRunnerFactory
=
FakeHotRunnerFactory
()
..
hotRunner
=
hotRunner
;
..
hotRunner
=
hotRunner
;
hotRunner
.
onAttach
=
(
hotRunner
.
onAttach
=
(
Completer
<
DebugConnectionInfo
>
connectionInfoCompleter
,
Completer
<
DebugConnectionInfo
>
?
connectionInfoCompleter
,
Completer
<
void
>
appStartedCompleter
,
Completer
<
void
>
?
appStartedCompleter
,
bool
allowExistingDdsInstance
,
bool
allowExistingDdsInstance
,
bool
enableDevTools
,
bool
enableDevTools
,
)
async
{
)
async
{
...
@@ -438,8 +478,8 @@ void main() {
...
@@ -438,8 +478,8 @@ void main() {
..
hotRunner
=
hotRunner
;
..
hotRunner
=
hotRunner
;
hotRunner
.
onAttach
=
(
hotRunner
.
onAttach
=
(
Completer
<
DebugConnectionInfo
>
connectionInfoCompleter
,
Completer
<
DebugConnectionInfo
>
?
connectionInfoCompleter
,
Completer
<
void
>
appStartedCompleter
,
Completer
<
void
>
?
appStartedCompleter
,
bool
allowExistingDdsInstance
,
bool
allowExistingDdsInstance
,
bool
enableDevTools
,
bool
enableDevTools
,
)
async
{
)
async
{
...
@@ -447,7 +487,6 @@ void main() {
...
@@ -447,7 +487,6 @@ void main() {
throw
vm_service
.
RPCError
(
'flutter._listViews'
,
RPCErrorCodes
.
kInvalidParams
,
''
);
throw
vm_service
.
RPCError
(
'flutter._listViews'
,
RPCErrorCodes
.
kInvalidParams
,
''
);
};
};
testDeviceManager
.
addDevice
(
device
);
testDeviceManager
.
addDevice
(
device
);
testFileSystem
.
file
(
'lib/main.dart'
).
createSync
();
testFileSystem
.
file
(
'lib/main.dart'
).
createSync
();
...
@@ -463,7 +502,7 @@ void main() {
...
@@ -463,7 +502,7 @@ void main() {
}
}
class
FakeHotRunner
extends
Fake
implements
HotRunner
{
class
FakeHotRunner
extends
Fake
implements
HotRunner
{
Future
<
int
>
Function
(
Completer
<
DebugConnectionInfo
>,
Completer
<
void
>
,
bool
,
bool
)
onAttach
;
late
Future
<
int
>
Function
(
Completer
<
DebugConnectionInfo
>?,
Completer
<
void
>?
,
bool
,
bool
)
onAttach
;
@override
@override
bool
exited
=
false
;
bool
exited
=
false
;
...
@@ -473,8 +512,8 @@ class FakeHotRunner extends Fake implements HotRunner {
...
@@ -473,8 +512,8 @@ class FakeHotRunner extends Fake implements HotRunner {
@override
@override
Future
<
int
>
attach
({
Future
<
int
>
attach
({
Completer
<
DebugConnectionInfo
>
connectionInfoCompleter
,
Completer
<
DebugConnectionInfo
>
?
connectionInfoCompleter
,
Completer
<
void
>
appStartedCompleter
,
Completer
<
void
>
?
appStartedCompleter
,
bool
allowExistingDdsInstance
=
false
,
bool
allowExistingDdsInstance
=
false
,
bool
enableDevTools
=
false
,
bool
enableDevTools
=
false
,
bool
needsFullRestart
=
true
,
bool
needsFullRestart
=
true
,
...
@@ -484,25 +523,25 @@ class FakeHotRunner extends Fake implements HotRunner {
...
@@ -484,25 +523,25 @@ class FakeHotRunner extends Fake implements HotRunner {
}
}
class
FakeHotRunnerFactory
extends
Fake
implements
HotRunnerFactory
{
class
FakeHotRunnerFactory
extends
Fake
implements
HotRunnerFactory
{
HotRunner
hotRunner
;
late
HotRunner
hotRunner
;
String
dillOutputPath
;
String
?
dillOutputPath
;
String
projectRootPath
;
String
?
projectRootPath
;
List
<
FlutterDevice
>
devices
;
late
List
<
FlutterDevice
>
devices
;
@override
@override
HotRunner
build
(
HotRunner
build
(
List
<
FlutterDevice
>
devices
,
{
List
<
FlutterDevice
>
devices
,
{
String
target
,
required
String
target
,
DebuggingOptions
debuggingOptions
,
required
DebuggingOptions
debuggingOptions
,
bool
benchmarkMode
=
false
,
bool
benchmarkMode
=
false
,
File
applicationBinary
,
File
?
applicationBinary
,
bool
hostIsIde
=
false
,
bool
hostIsIde
=
false
,
String
projectRootPath
,
String
?
projectRootPath
,
String
packagesFilePath
,
String
?
packagesFilePath
,
String
dillOutputPath
,
String
?
dillOutputPath
,
bool
stayResident
=
true
,
bool
stayResident
=
true
,
bool
ipv6
=
false
,
bool
ipv6
=
false
,
FlutterProject
flutterProject
,
FlutterProject
?
flutterProject
,
})
{
})
{
this
.
devices
=
devices
;
this
.
devices
=
devices
;
this
.
dillOutputPath
=
dillOutputPath
;
this
.
dillOutputPath
=
dillOutputPath
;
...
@@ -514,17 +553,17 @@ class FakeHotRunnerFactory extends Fake implements HotRunnerFactory {
...
@@ -514,17 +553,17 @@ class FakeHotRunnerFactory extends Fake implements HotRunnerFactory {
class
RecordingPortForwarder
implements
DevicePortForwarder
{
class
RecordingPortForwarder
implements
DevicePortForwarder
{
RecordingPortForwarder
([
this
.
hostPort
]);
RecordingPortForwarder
([
this
.
hostPort
]);
int
devicePort
;
int
?
devicePort
;
int
hostPort
;
int
?
hostPort
;
@override
@override
Future
<
void
>
dispose
()
async
{
}
Future
<
void
>
dispose
()
async
{
}
@override
@override
Future
<
int
>
forward
(
int
devicePort
,
{
int
hostPort
})
async
{
Future
<
int
>
forward
(
int
devicePort
,
{
int
?
hostPort
})
async
{
this
.
devicePort
=
devicePort
;
this
.
devicePort
=
devicePort
;
this
.
hostPort
??=
hostPort
;
this
.
hostPort
??=
hostPort
;
return
this
.
hostPort
;
return
this
.
hostPort
!
;
}
}
@override
@override
...
@@ -541,12 +580,12 @@ class StreamLogger extends Logger {
...
@@ -541,12 +580,12 @@ class StreamLogger extends Logger {
@override
@override
void
printError
(
void
printError
(
String
message
,
{
String
message
,
{
StackTrace
stackTrace
,
StackTrace
?
stackTrace
,
bool
emphasis
,
bool
?
emphasis
,
TerminalColor
color
,
TerminalColor
?
color
,
int
indent
,
int
?
indent
,
int
hangingIndent
,
int
?
hangingIndent
,
bool
wrap
,
bool
?
wrap
,
})
{
})
{
hadErrorOutput
=
true
;
hadErrorOutput
=
true
;
_log
(
'[stderr]
$message
'
);
_log
(
'[stderr]
$message
'
);
...
@@ -555,11 +594,11 @@ class StreamLogger extends Logger {
...
@@ -555,11 +594,11 @@ class StreamLogger extends Logger {
@override
@override
void
printWarning
(
void
printWarning
(
String
message
,
{
String
message
,
{
bool
emphasis
,
bool
?
emphasis
,
TerminalColor
color
,
TerminalColor
?
color
,
int
indent
,
int
?
indent
,
int
hangingIndent
,
int
?
hangingIndent
,
bool
wrap
,
bool
?
wrap
,
})
{
})
{
hadWarningOutput
=
true
;
hadWarningOutput
=
true
;
_log
(
'[stderr]
$message
'
);
_log
(
'[stderr]
$message
'
);
...
@@ -568,12 +607,12 @@ class StreamLogger extends Logger {
...
@@ -568,12 +607,12 @@ class StreamLogger extends Logger {
@override
@override
void
printStatus
(
void
printStatus
(
String
message
,
{
String
message
,
{
bool
emphasis
,
bool
?
emphasis
,
TerminalColor
color
,
TerminalColor
?
color
,
bool
newline
,
bool
?
newline
,
int
indent
,
int
?
indent
,
int
hangingIndent
,
int
?
hangingIndent
,
bool
wrap
,
bool
?
wrap
,
})
{
})
{
_log
(
'[stdout]
$message
'
);
_log
(
'[stdout]
$message
'
);
}
}
...
@@ -581,7 +620,7 @@ class StreamLogger extends Logger {
...
@@ -581,7 +620,7 @@ class StreamLogger extends Logger {
@override
@override
void
printBox
(
void
printBox
(
String
message
,
{
String
message
,
{
String
title
,
String
?
title
,
})
{
})
{
if
(
title
==
null
)
{
if
(
title
==
null
)
{
_log
(
'[stdout]
$message
'
);
_log
(
'[stdout]
$message
'
);
...
@@ -598,8 +637,8 @@ class StreamLogger extends Logger {
...
@@ -598,8 +637,8 @@ class StreamLogger extends Logger {
@override
@override
Status
startProgress
(
Status
startProgress
(
String
message
,
{
String
message
,
{
@required
Duration
timeout
,
Duration
?
timeout
,
String
progressId
,
String
?
progressId
,
bool
multilineOutput
=
false
,
bool
multilineOutput
=
false
,
bool
includeTiming
=
true
,
bool
includeTiming
=
true
,
int
progressIndicatorPadding
=
kDefaultStatusPadding
,
int
progressIndicatorPadding
=
kDefaultStatusPadding
,
...
@@ -612,9 +651,9 @@ class StreamLogger extends Logger {
...
@@ -612,9 +651,9 @@ class StreamLogger extends Logger {
@override
@override
Status
startSpinner
({
Status
startSpinner
({
VoidCallback
onFinish
,
VoidCallback
?
onFinish
,
Duration
timeout
,
Duration
?
timeout
,
SlowWarningCallback
slowWarningCallback
,
SlowWarningCallback
?
slowWarningCallback
,
})
{
})
{
return
SilentStatus
(
return
SilentStatus
(
stopwatch:
Stopwatch
(),
stopwatch:
Stopwatch
(),
...
@@ -641,7 +680,7 @@ class StreamLogger extends Logger {
...
@@ -641,7 +680,7 @@ class StreamLogger extends Logger {
Stream
<
String
>
get
stream
=>
_controller
.
stream
;
Stream
<
String
>
get
stream
=>
_controller
.
stream
;
@override
@override
void
sendEvent
(
String
name
,
[
Map
<
String
,
dynamic
>
args
])
{
}
void
sendEvent
(
String
name
,
[
Map
<
String
,
dynamic
>
?
args
])
{
}
@override
@override
bool
get
supportsColor
=>
throw
UnimplementedError
();
bool
get
supportsColor
=>
throw
UnimplementedError
();
...
@@ -676,10 +715,10 @@ class FakeDartDevelopmentService extends Fake implements DartDevelopmentService
...
@@ -676,10 +715,10 @@ class FakeDartDevelopmentService extends Fake implements DartDevelopmentService
@override
@override
Future
<
void
>
startDartDevelopmentService
(
Future
<
void
>
startDartDevelopmentService
(
Uri
observatoryUri
,
{
Uri
observatoryUri
,
{
@
required
Logger
logger
,
required
Logger
logger
,
int
hostPort
,
int
?
hostPort
,
bool
ipv6
,
bool
?
ipv6
,
bool
disableServiceAuthCodes
,
bool
?
disableServiceAuthCodes
,
bool
cacheStartupProfile
=
false
,
bool
cacheStartupProfile
=
false
,
})
async
{}
})
async
{}
...
@@ -691,10 +730,10 @@ class FakeDartDevelopmentService extends Fake implements DartDevelopmentService
...
@@ -691,10 +730,10 @@ class FakeDartDevelopmentService extends Fake implements DartDevelopmentService
// Until we fix that, we have to also ignore related lints here.
// Until we fix that, we have to also ignore related lints here.
// ignore: avoid_implementing_value_types
// ignore: avoid_implementing_value_types
class
FakeAndroidDevice
extends
Fake
implements
AndroidDevice
{
class
FakeAndroidDevice
extends
Fake
implements
AndroidDevice
{
FakeAndroidDevice
({
@
required
this
.
id
});
FakeAndroidDevice
({
required
this
.
id
});
@override
@override
DartDevelopmentService
dds
;
late
DartDevelopmentService
dds
;
@override
@override
final
String
id
;
final
String
id
;
...
@@ -727,20 +766,25 @@ class FakeAndroidDevice extends Fake implements AndroidDevice {
...
@@ -727,20 +766,25 @@ class FakeAndroidDevice extends Fake implements AndroidDevice {
bool
isSupportedForProject
(
FlutterProject
flutterProject
)
=>
true
;
bool
isSupportedForProject
(
FlutterProject
flutterProject
)
=>
true
;
@override
@override
DevicePortForwarder
portForwarder
;
DevicePortForwarder
?
portForwarder
;
DeviceLogReader
Function
()
onGetLogReader
;
DeviceLogReader
Function
()
?
onGetLogReader
;
@override
@override
FutureOr
<
DeviceLogReader
>
getLogReader
({
FutureOr
<
DeviceLogReader
>
getLogReader
({
AndroidApk
app
,
AndroidApk
?
app
,
bool
includePastLogs
=
false
,
bool
includePastLogs
=
false
,
})
{
})
{
return
onGetLogReader
();
if
(
onGetLogReader
==
null
)
{
throw
UnimplementedError
(
'Called getLogReader but no onGetLogReader callback was supplied in the constructor to FakeAndroidDevice.'
,
);
}
return
onGetLogReader
!();
}
}
@override
@override
OverrideArtifacts
get
artifactOverrides
=>
null
;
OverrideArtifacts
?
get
artifactOverrides
=>
null
;
@override
@override
final
PlatformType
platformType
=
PlatformType
.
android
;
final
PlatformType
platformType
=
PlatformType
.
android
;
...
@@ -753,24 +797,40 @@ class FakeAndroidDevice extends Fake implements AndroidDevice {
...
@@ -753,24 +797,40 @@ class FakeAndroidDevice extends Fake implements AndroidDevice {
// Until we fix that, we have to also ignore related lints here.
// Until we fix that, we have to also ignore related lints here.
// ignore: avoid_implementing_value_types
// ignore: avoid_implementing_value_types
class
FakeIOSDevice
extends
Fake
implements
IOSDevice
{
class
FakeIOSDevice
extends
Fake
implements
IOSDevice
{
FakeIOSDevice
({
this
.
dds
,
this
.
portForwarder
,
this
.
logReader
});
FakeIOSDevice
({
DevicePortForwarder
?
portForwarder
,
DeviceLogReader
?
logReader
,
this
.
onGetLogReader
,
})
:
_portForwarder
=
portForwarder
,
_logReader
=
logReader
;
final
DevicePortForwarder
?
_portForwarder
;
@override
@override
final
DevicePortForwarder
portForwarder
;
DevicePortForwarder
get
portForwarder
=>
_portForwarder
!
;
@override
@override
final
DartDevelopmentService
dds
;
DartDevelopmentService
get
dds
=>
throw
UnimplementedError
(
'getter dds not implemented'
);
final
DeviceLogReader
?
_logReader
;
DeviceLogReader
get
logReader
=>
_logReader
!;
final
DeviceLogReader
l
ogReader
;
final
DeviceLogReader
Function
()?
onGetL
ogReader
;
@override
@override
DeviceLogReader
getLogReader
({
DeviceLogReader
getLogReader
({
IOSApp
app
,
IOSApp
?
app
,
bool
includePastLogs
=
false
,
bool
includePastLogs
=
false
,
})
=>
logReader
;
})
{
if
(
onGetLogReader
==
null
)
{
throw
UnimplementedError
(
'Called getLogReader but no onGetLogReader callback was supplied in the constructor to FakeIOSDevice'
,
);
}
return
onGetLogReader
!();
}
@override
@override
OverrideArtifacts
get
artifactOverrides
=>
null
;
OverrideArtifacts
?
get
artifactOverrides
=>
null
;
@override
@override
final
String
name
=
'name'
;
final
String
name
=
'name'
;
...
@@ -781,3 +841,49 @@ class FakeIOSDevice extends Fake implements IOSDevice {
...
@@ -781,3 +841,49 @@ class FakeIOSDevice extends Fake implements IOSDevice {
@override
@override
final
PlatformType
platformType
=
PlatformType
.
ios
;
final
PlatformType
platformType
=
PlatformType
.
ios
;
}
}
class
FakeMDnsClient
extends
Fake
implements
MDnsClient
{
FakeMDnsClient
(
this
.
ptrRecords
,
this
.
srvResponse
,
{
this
.
txtResponse
=
const
<
String
,
List
<
TxtResourceRecord
>>{},
this
.
osErrorOnStart
=
false
,
});
final
List
<
PtrResourceRecord
>
ptrRecords
;
final
Map
<
String
,
List
<
SrvResourceRecord
>>
srvResponse
;
final
Map
<
String
,
List
<
TxtResourceRecord
>>
txtResponse
;
final
bool
osErrorOnStart
;
@override
Future
<
void
>
start
({
InternetAddress
?
listenAddress
,
NetworkInterfacesFactory
?
interfacesFactory
,
int
mDnsPort
=
5353
,
InternetAddress
?
mDnsAddress
,
})
async
{
if
(
osErrorOnStart
)
{
throw
const
OSError
(
'Operation not supported on socket'
,
102
);
}
}
@override
Stream
<
T
>
lookup
<
T
extends
ResourceRecord
>(
ResourceRecordQuery
query
,
{
Duration
timeout
=
const
Duration
(
seconds:
5
),
})
{
if
(
T
==
PtrResourceRecord
&&
query
.
fullyQualifiedName
==
MDnsObservatoryDiscovery
.
dartObservatoryName
)
{
return
Stream
<
PtrResourceRecord
>.
fromIterable
(
ptrRecords
)
as
Stream
<
T
>;
}
if
(
T
==
SrvResourceRecord
)
{
final
String
key
=
query
.
fullyQualifiedName
;
return
Stream
<
SrvResourceRecord
>.
fromIterable
(
srvResponse
[
key
]
??
<
SrvResourceRecord
>[])
as
Stream
<
T
>;
}
if
(
T
==
TxtResourceRecord
)
{
final
String
key
=
query
.
fullyQualifiedName
;
return
Stream
<
TxtResourceRecord
>.
fromIterable
(
txtResponse
[
key
]
??
<
TxtResourceRecord
>[])
as
Stream
<
T
>;
}
throw
UnsupportedError
(
'Unsupported query type
$T
'
);
}
@override
void
stop
()
{}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment