Skip to content

Commit cc949a8

Browse files
authored
V1.9.1 hotfixes (flutter#41504)
* [flutter_tools] Report iOS mDNS lookup failures to analytics (flutter#41384) * [flutter_tools] Adds tests of mdns analytics events (flutter#41410) * [flutter_tool] Add analytics events for ios-mdns fallback success/failure (flutter#41482) * roll ideviceinstaller, libimobiledevice, libplist, openssl & usbmuxd to signed versions (flutter#41411)
1 parent a72edc2 commit cc949a8

File tree

7 files changed

+24
-8
lines changed

7 files changed

+24
-8
lines changed

bin/internal/ideviceinstaller.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ab9352110092cf651b5602301371cd00691c7e13
1+
73b9c81e02f83060aa44bece963a62827908de68

bin/internal/libimobiledevice.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
398c1208731cb887c64a31c2ae111048b079f80d
1+
6150fcd888a0ee8a69dd47328509ee608c2e02dc

bin/internal/libplist.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
17546f53ac1377b0d4f45a800aaec7366ba5b6a0
1+
28812e5bed8621bd637b4129ab15a9c1abb9f57d

bin/internal/openssl.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
03da376ff7504c63a1d00d57cf41bd7b7e93ff65
1+
2ef3f4c83bce209247479e707eebd5a84f606e28

bin/internal/usbmuxd.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
60109fdef47dfe0badfb558a6a2105e8fb23660a
1+
eb45fd21469fa35e9bbc3b0a15a962460b8d23a2

packages/flutter_tools/lib/src/ios/devices.dart

+7-3
Original file line numberDiff line numberDiff line change
@@ -393,25 +393,29 @@ class IOSDevice extends Device {
393393
debuggingOptions.observatoryPort,
394394
);
395395
if (localUri != null) {
396+
UsageEvent('ios-mdns', 'success').send();
396397
return LaunchResult.succeeded(observatoryUri: localUri);
397398
}
398399
} catch (error) {
399-
printError('Failed to establish a debug connection with $id: $error');
400+
printError('Failed to establish a debug connection with $id using mdns: $error');
400401
}
401402

402-
// Fallback to manual protocol discovery
403+
// Fallback to manual protocol discovery.
404+
UsageEvent('ios-mdns', 'failure').send();
403405
printTrace('mDNS lookup failed, attempting fallback to reading device log.');
404406
try {
405407
printTrace('Waiting for observatory port.');
406408
localUri = await observatoryDiscovery.uri;
407409
if (localUri != null) {
410+
UsageEvent('ios-mdns', 'fallback-success').send();
408411
return LaunchResult.succeeded(observatoryUri: localUri);
409412
}
410413
} catch (error) {
411-
printError('Failed to establish a debug connection with $id: $error');
414+
printError('Failed to establish a debug connection with $id using logs: $error');
412415
} finally {
413416
await observatoryDiscovery?.cancel();
414417
}
418+
UsageEvent('ios-mdns', 'fallback-failure').send();
415419
return LaunchResult.failed();
416420
} finally {
417421
installStatus.stop();

packages/flutter_tools/test/general.shard/ios/devices_test.dart

+12
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import 'package:flutter_tools/src/ios/mac.dart';
1818
import 'package:flutter_tools/src/macos/xcode.dart';
1919
import 'package:flutter_tools/src/mdns_discovery.dart';
2020
import 'package:flutter_tools/src/project.dart';
21+
import 'package:flutter_tools/src/reporting/reporting.dart';
2122
import 'package:mockito/mockito.dart';
2223
import 'package:platform/platform.dart';
2324
import 'package:process/process.dart';
@@ -36,6 +37,7 @@ class MockMDnsObservatoryDiscovery extends Mock implements MDnsObservatoryDiscov
3637
class MockXcode extends Mock implements Xcode {}
3738
class MockFile extends Mock implements File {}
3839
class MockPortForwarder extends Mock implements DevicePortForwarder {}
40+
class MockUsage extends Mock implements Usage {}
3941

4042
void main() {
4143
final FakePlatform macPlatform = FakePlatform.fromPlatform(const LocalPlatform());
@@ -74,6 +76,7 @@ void main() {
7476
MockDeviceLogReader mockLogReader;
7577
MockMDnsObservatoryDiscovery mockMDnsObservatoryDiscovery;
7678
MockPortForwarder mockPortForwarder;
79+
MockUsage mockUsage;
7780

7881
const int devicePort = 499;
7982
const int hostPort = 42;
@@ -98,6 +101,7 @@ void main() {
98101
mockProcessManager = MockProcessManager();
99102
mockLogReader = MockDeviceLogReader();
100103
mockPortForwarder = MockPortForwarder();
104+
mockUsage = MockUsage();
101105

102106
when(
103107
mockArtifacts.getArtifactPath(
@@ -154,6 +158,7 @@ void main() {
154158
debuggingOptions: DebuggingOptions.enabled(const BuildInfo(BuildMode.debug, null)),
155159
platformArgs: <String, dynamic>{},
156160
);
161+
verify(mockUsage.sendEvent('ios-mdns', 'success')).called(1);
157162
expect(launchResult.started, isTrue);
158163
expect(launchResult.hasObservatory, isTrue);
159164
expect(await device.stopApp(mockApp), isFalse);
@@ -164,6 +169,7 @@ void main() {
164169
MDnsObservatoryDiscovery: () => mockMDnsObservatoryDiscovery,
165170
Platform: () => macPlatform,
166171
ProcessManager: () => mockProcessManager,
172+
Usage: () => mockUsage,
167173
});
168174

169175
testUsingContext(' succeeds in debug mode when mDNS fails by falling back to manual protocol discovery', () async {
@@ -183,6 +189,8 @@ void main() {
183189
debuggingOptions: DebuggingOptions.enabled(const BuildInfo(BuildMode.debug, null)),
184190
platformArgs: <String, dynamic>{},
185191
);
192+
verify(mockUsage.sendEvent('ios-mdns', 'failure')).called(1);
193+
verify(mockUsage.sendEvent('ios-mdns', 'fallback-success')).called(1);
186194
expect(launchResult.started, isTrue);
187195
expect(launchResult.hasObservatory, isTrue);
188196
expect(await device.stopApp(mockApp), isFalse);
@@ -193,6 +201,7 @@ void main() {
193201
MDnsObservatoryDiscovery: () => mockMDnsObservatoryDiscovery,
194202
Platform: () => macPlatform,
195203
ProcessManager: () => mockProcessManager,
204+
Usage: () => mockUsage,
196205
});
197206

198207
testUsingContext(' fails in debug mode when mDNS fails and when Observatory URI is malformed', () async {
@@ -213,6 +222,8 @@ void main() {
213222
debuggingOptions: DebuggingOptions.enabled(const BuildInfo(BuildMode.debug, null)),
214223
platformArgs: <String, dynamic>{},
215224
);
225+
verify(mockUsage.sendEvent('ios-mdns', 'failure')).called(1);
226+
verify(mockUsage.sendEvent('ios-mdns', 'fallback-failure')).called(1);
216227
expect(launchResult.started, isFalse);
217228
expect(launchResult.hasObservatory, isFalse);
218229
}, overrides: <Type, Generator>{
@@ -222,6 +233,7 @@ void main() {
222233
MDnsObservatoryDiscovery: () => mockMDnsObservatoryDiscovery,
223234
Platform: () => macPlatform,
224235
ProcessManager: () => mockProcessManager,
236+
Usage: () => mockUsage,
225237
});
226238

227239
testUsingContext(' succeeds in release mode', () async {

0 commit comments

Comments
 (0)