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
c01cbd23
Unverified
Commit
c01cbd23
authored
Mar 26, 2022
by
Chris Yang
Committed by
GitHub
Mar 26, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add `CADisableMinimumFrameDurationOnPhone` migration (#100647)
parent
22a3b4dc
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
138 additions
and
0 deletions
+138
-0
mac.dart
packages/flutter_tools/lib/src/ios/mac.dart
+2
-0
minimum_frame_duration_migration.dart
.../src/ios/migrations/minimum_frame_duration_migration.dart
+53
-0
ios_project_migration_test.dart
...ls/test/general.shard/ios/ios_project_migration_test.dart
+83
-0
No files found.
packages/flutter_tools/lib/src/ios/mac.dart
View file @
c01cbd23
...
@@ -25,6 +25,7 @@ import 'application_package.dart';
...
@@ -25,6 +25,7 @@ import 'application_package.dart';
import
'code_signing.dart'
;
import
'code_signing.dart'
;
import
'iproxy.dart'
;
import
'iproxy.dart'
;
import
'migrations/deployment_target_migration.dart'
;
import
'migrations/deployment_target_migration.dart'
;
import
'migrations/minimum_frame_duration_migration.dart'
;
import
'migrations/project_base_configuration_migration.dart'
;
import
'migrations/project_base_configuration_migration.dart'
;
import
'migrations/project_build_location_migration.dart'
;
import
'migrations/project_build_location_migration.dart'
;
import
'migrations/project_object_version_migration.dart'
;
import
'migrations/project_object_version_migration.dart'
;
...
@@ -123,6 +124,7 @@ Future<XcodeBuildResult> buildXcodeProject({
...
@@ -123,6 +124,7 @@ Future<XcodeBuildResult> buildXcodeProject({
ProjectBuildLocationMigration
(
app
.
project
,
globals
.
logger
),
ProjectBuildLocationMigration
(
app
.
project
,
globals
.
logger
),
DeploymentTargetMigration
(
app
.
project
,
globals
.
logger
),
DeploymentTargetMigration
(
app
.
project
,
globals
.
logger
),
ProjectObjectVersionMigration
(
app
.
project
,
globals
.
logger
),
ProjectObjectVersionMigration
(
app
.
project
,
globals
.
logger
),
MinimumFrameDurationMigration
(
app
.
project
,
globals
.
logger
),
];
];
final
ProjectMigration
migration
=
ProjectMigration
(
migrators
);
final
ProjectMigration
migration
=
ProjectMigration
(
migrators
);
...
...
packages/flutter_tools/lib/src/ios/migrations/minimum_frame_duration_migration.dart
0 → 100644
View file @
c01cbd23
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import
'../../base/file_system.dart'
;
import
'../../base/logger.dart'
;
import
'../../base/project_migrator.dart'
;
import
'../../xcode_project.dart'
;
const
String
_kDisableMinimumFrameDurationKey
=
'CADisableMinimumFrameDurationOnPhone'
;
/// Add "CADisableMinimumFrameDurationOnPhone: true" to the Info.plist.
class
MinimumFrameDurationMigration
extends
ProjectMigrator
{
MinimumFrameDurationMigration
(
IosProject
project
,
Logger
logger
,
)
:
_infoPlist
=
project
.
defaultHostInfoPlist
,
super
(
logger
);
final
File
_infoPlist
;
@override
bool
migrate
()
{
if
(!
_infoPlist
.
existsSync
())
{
logger
.
printTrace
(
'Info.plist not found, skipping minimum frame duration migration.'
);
return
true
;
}
processFileLines
(
_infoPlist
);
return
true
;
}
@override
String
migrateFileContents
(
String
fileContents
)
{
if
(
fileContents
.
contains
(
_kDisableMinimumFrameDurationKey
))
{
// No migration needed if the key already exits.
return
fileContents
;
}
logger
.
printTrace
(
'Adding
$_kDisableMinimumFrameDurationKey
to Info.plist'
);
const
String
plistEnd
=
'''
</dict>
</plist>
'''
;
const
String
plistWithKey
=
'''
<key>
$_kDisableMinimumFrameDurationKey
</key>
<true/>
</dict>
</plist>
'''
;
return
fileContents
.
replaceAll
(
plistEnd
,
plistWithKey
);
}
}
packages/flutter_tools/test/general.shard/ios/ios_project_migration_test.dart
View file @
c01cbd23
...
@@ -7,6 +7,7 @@ import 'package:file/memory.dart';
...
@@ -7,6 +7,7 @@ import 'package:file/memory.dart';
import
'package:flutter_tools/src/base/logger.dart'
;
import
'package:flutter_tools/src/base/logger.dart'
;
import
'package:flutter_tools/src/base/project_migrator.dart'
;
import
'package:flutter_tools/src/base/project_migrator.dart'
;
import
'package:flutter_tools/src/ios/migrations/deployment_target_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/deployment_target_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/minimum_frame_duration_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/project_base_configuration_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/project_base_configuration_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/project_build_location_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/project_build_location_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/project_object_version_migration.dart'
;
import
'package:flutter_tools/src/ios/migrations/project_object_version_migration.dart'
;
...
@@ -708,6 +709,85 @@ keep this 3
...
@@ -708,6 +709,85 @@ keep this 3
expect
(
'Updating project for Xcode compatibility'
.
allMatches
(
testLogger
.
statusText
).
length
,
1
);
expect
(
'Updating project for Xcode compatibility'
.
allMatches
(
testLogger
.
statusText
).
length
,
1
);
});
});
});
});
group
(
'add CADisableMinimumFrameDurationOnPhone key to info.plist migration'
,
()
{
late
MemoryFileSystem
memoryFileSystem
;
late
BufferLogger
testLogger
;
late
FakeIosProject
project
;
late
File
infoPlistFile
;
setUp
(()
{
memoryFileSystem
=
MemoryFileSystem
();
testLogger
=
BufferLogger
.
test
();
project
=
FakeIosProject
();
infoPlistFile
=
memoryFileSystem
.
file
(
'info.plist'
);
project
.
defaultHostInfoPlist
=
infoPlistFile
;
});
testWithoutContext
(
'skipped if files are missing'
,
()
{
final
MinimumFrameDurationMigration
iosProjectMigration
=
MinimumFrameDurationMigration
(
project
,
testLogger
,
);
expect
(
iosProjectMigration
.
migrate
(),
isTrue
);
expect
(
infoPlistFile
.
existsSync
(),
isFalse
);
expect
(
testLogger
.
traceText
,
contains
(
'Info.plist not found, skipping minimum frame duration migration.'
));
expect
(
testLogger
.
statusText
,
isEmpty
);
});
testWithoutContext
(
'skipped if nothing to upgrade'
,
()
{
const
String
infoPlistFileContent
=
'''
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
</dict>
</plist>
'''
;
infoPlistFile
.
writeAsStringSync
(
infoPlistFileContent
);
final
MinimumFrameDurationMigration
iosProjectMigration
=
MinimumFrameDurationMigration
(
project
,
testLogger
,
);
final
DateTime
infoPlistFileLastModified
=
infoPlistFile
.
lastModifiedSync
();
expect
(
iosProjectMigration
.
migrate
(),
isTrue
);
expect
(
infoPlistFile
.
lastModifiedSync
(),
infoPlistFileLastModified
);
expect
(
testLogger
.
statusText
,
isEmpty
);
});
testWithoutContext
(
'info.plist is migrated to use CADisableMinimumFrameDurationOnPhone'
,
()
{
const
String
infoPlistFileContent
=
'''
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>
'''
;
infoPlistFile
.
writeAsStringSync
(
infoPlistFileContent
);
final
MinimumFrameDurationMigration
iosProjectMigration
=
MinimumFrameDurationMigration
(
project
,
testLogger
,
);
expect
(
iosProjectMigration
.
migrate
(),
isTrue
);
expect
(
infoPlistFile
.
readAsStringSync
(),
equals
(
'''
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
</dict>
</plist>
'''
));
});
});
});
});
}
}
...
@@ -726,6 +806,9 @@ class FakeIosProject extends Fake implements IosProject {
...
@@ -726,6 +806,9 @@ class FakeIosProject extends Fake implements IosProject {
@override
@override
File
appFrameworkInfoPlist
=
MemoryFileSystem
.
test
().
file
(
'appFrameworkInfoPlist'
);
File
appFrameworkInfoPlist
=
MemoryFileSystem
.
test
().
file
(
'appFrameworkInfoPlist'
);
@override
File
defaultHostInfoPlist
=
MemoryFileSystem
.
test
().
file
(
'defaultHostInfoPlist'
);
}
}
class
FakeIOSMigrator
extends
ProjectMigrator
{
class
FakeIOSMigrator
extends
ProjectMigrator
{
...
...
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