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
1f173184
Unverified
Commit
1f173184
authored
Mar 18, 2020
by
Emmanuel Garcia
Committed by
GitHub
Mar 18, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add benchmark for platform views (#52717)
parent
e8778da1
Changes
32
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
1312 additions
and
0 deletions
+1312
-0
README.md
dev/benchmarks/platform_views_layout/README.md
+26
-0
build.gradle
...benchmarks/platform_views_layout/android/app/build.gradle
+54
-0
AndroidManifest.xml
...orm_views_layout/android/app/src/main/AndroidManifest.xml
+23
-0
DummyPlatformView.java
...ev/bechmarks/platform_views_layout/DummyPlatformView.java
+31
-0
DummyPlatformViewActivity.java
...arks/platform_views_layout/DummyPlatformViewActivity.java
+19
-0
DummyPlatformViewFactory.java
...marks/platform_views_layout/DummyPlatformViewFactory.java
+42
-0
build.gradle
dev/benchmarks/platform_views_layout/android/build.gradle
+33
-0
gradle.properties
...enchmarks/platform_views_layout/android/gradle.properties
+4
-0
gradle-wrapper.properties
...s_layout/android/gradle/wrapper/gradle-wrapper.properties
+6
-0
settings.gradle
dev/benchmarks/platform_views_layout/android/settings.gradle
+5
-0
AppFrameworkInfo.plist
.../platform_views_layout/ios/Flutter/AppFrameworkInfo.plist
+26
-0
Flutter.xcconfig
...hmarks/platform_views_layout/ios/Flutter/Flutter.xcconfig
+1
-0
project.pbxproj
...latform_views_layout/ios/Runner.xcodeproj/project.pbxproj
+448
-0
contents.xcworkspacedata
...er.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+7
-0
IDEWorkspaceChecks.plist
...project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+8
-0
AppDelegate.h
...benchmarks/platform_views_layout/ios/Runner/AppDelegate.h
+10
-0
AppDelegate.m
...benchmarks/platform_views_layout/ios/Runner/AppDelegate.m
+27
-0
Icon-App-76x76@3x.png
.../Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png
+0
-0
LaunchScreen.storyboard
...iews_layout/ios/Runner/Base.lproj/LaunchScreen.storyboard
+27
-0
Main.storyboard
...atform_views_layout/ios/Runner/Base.lproj/Main.storyboard
+26
-0
DummyPlatformView.h
...arks/platform_views_layout/ios/Runner/DummyPlatformView.h
+23
-0
DummyPlatformView.m
...arks/platform_views_layout/ios/Runner/DummyPlatformView.m
+57
-0
Info.plist
dev/benchmarks/platform_views_layout/ios/Runner/Info.plist
+47
-0
main.m
dev/benchmarks/platform_views_layout/ios/Runner/main.m
+14
-0
main.dart
dev/benchmarks/platform_views_layout/lib/main.dart
+129
-0
pubspec.yaml
dev/benchmarks/platform_views_layout/pubspec.yaml
+96
-0
scroll_perf.dart
...hmarks/platform_views_layout/test_driver/scroll_perf.dart
+11
-0
scroll_perf_test.dart
...s/platform_views_layout/test_driver/scroll_perf_test.dart
+64
-0
platform_views_scroll_perf__timeline_summary.dart
...n/tasks/platform_views_scroll_perf__timeline_summary.dart
+14
-0
platform_views_scroll_perf_ios__timeline_summary.dart
...sks/platform_views_scroll_perf_ios__timeline_summary.dart
+14
-0
perf_tests.dart
dev/devicelab/lib/tasks/perf_tests.dart
+8
-0
manifest.yaml
dev/devicelab/manifest.yaml
+12
-0
No files found.
dev/benchmarks/platform_views_layout/README.md
0 → 100644
View file @
1f173184
# platform_views_layout
## Scrolling benchmark
To run the scrolling benchmark on a device:
```
flutter drive --profile test_driver/scroll_perf.dart
```
Results should be in the file
`build/platform_views_scroll_perf.timeline_summary.json`
.
More detailed logs should be in
`build/platform_views_scroll_perf.timeline.json`
.
## Startup benchmark
To measure startup time on a device:
```
flutter run --profile --trace-startup
```
Results should be in the logs.
Additional results should be in the file
`build/start_up_info.json`
.
dev/benchmarks/platform_views_layout/android/app/build.gradle
0 → 100644
View file @
1f173184
// 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.
def
localProperties
=
new
Properties
()
def
localPropertiesFile
=
rootProject
.
file
(
'local.properties'
)
if
(
localPropertiesFile
.
exists
())
{
localPropertiesFile
.
withInputStream
{
stream
->
localProperties
.
load
(
stream
)
}
}
def
flutterRoot
=
localProperties
.
getProperty
(
'flutter.sdk'
)
if
(
flutterRoot
==
null
)
{
throw
new
GradleException
(
"Flutter SDK not found. Define location with flutter.sdk in the local.properties file."
)
}
apply
plugin:
'com.android.application'
apply
from:
"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android
{
compileSdkVersion
28
lintOptions
{
disable
'InvalidPackage'
}
defaultConfig
{
minSdkVersion
16
targetSdkVersion
28
versionCode
1
versionName
"0.0.1"
}
buildTypes
{
release
{
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig
signingConfigs
.
debug
}
}
aaptOptions
{
// TODO(goderbauer): remove when https://github.com/flutter/flutter/issues/8986 is resolved.
if
(
System
.
getenv
(
"FLUTTER_CI_WIN"
))
{
println
"AAPT cruncher disabled when running on CI, see https://github.com/flutter/flutter/issues/8986"
cruncherEnabled
false
}
}
}
flutter
{
source
'../..'
}
dev/benchmarks/platform_views_layout/android/app/src/main/AndroidManifest.xml
0 → 100644
View file @
1f173184
<!-- 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. -->
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"dev.benchmarks.platform_views_layout"
>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<application
android:name=
"io.flutter.app.FlutterApplication"
android:label=
"platform_view_layout"
>
<activity
android:name=
".DummyPlatformViewActivity"
android:launchMode=
"singleTop"
android:theme=
"@android:style/Theme.Black.NoTitleBar"
android:configChanges=
"orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated=
"true"
android:windowSoftInputMode=
"adjustResize"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
dev/benchmarks/platform_views_layout/android/app/src/main/java/dev/bechmarks/platform_views_layout/DummyPlatformView.java
0 → 100644
View file @
1f173184
// 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.
package
dev
.
benchmarks
.
platform_views
;
import
android.content.Context
;
import
android.graphics.Color
;
import
android.view.View
;
import
android.widget.TextView
;
import
io.flutter.plugin.platform.PlatformView
;
public
class
DummyPlatformView
implements
PlatformView
{
private
final
TextView
textView
;
@SuppressWarnings
(
"unchecked"
)
DummyPlatformView
(
final
Context
context
,
int
id
)
{
textView
=
new
TextView
(
context
);
textView
.
setTextSize
(
72
);
textView
.
setBackgroundColor
(
Color
.
rgb
(
255
,
255
,
255
));
textView
.
setText
(
"DummyPlatformView"
);
}
@Override
public
View
getView
()
{
return
textView
;
}
@Override
public
void
dispose
()
{}
}
dev/benchmarks/platform_views_layout/android/app/src/main/java/dev/bechmarks/platform_views_layout/DummyPlatformViewActivity.java
0 → 100644
View file @
1f173184
// 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.
package
dev
.
benchmarks
.
platform_views
;
import
androidx.annotation.NonNull
;
import
io.flutter.embedding.android.FlutterActivity
;
import
io.flutter.embedding.engine.FlutterEngine
;
public
class
DummyPlatformViewActivity
extends
FlutterActivity
{
@Override
public
void
configureFlutterEngine
(
@NonNull
FlutterEngine
flutterEngine
)
{
flutterEngine
.
getPlatformViewsController
()
.
getRegistry
()
.
registerViewFactory
(
"benchmarks/platform_views_layout/DummyPlatformView"
,
new
DummyPlatformViewFactory
());
}
}
dev/benchmarks/platform_views_layout/android/app/src/main/java/dev/bechmarks/platform_views_layout/DummyPlatformViewFactory.java
0 → 100644
View file @
1f173184
// 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.
package
dev
.
benchmarks
.
platform_views
;
import
android.content.Context
;
import
androidx.annotation.Nullable
;
import
io.flutter.plugin.common.MessageCodec
;
import
io.flutter.plugin.common.StringCodec
;
import
io.flutter.plugin.platform.PlatformView
;
import
io.flutter.plugin.platform.PlatformViewFactory
;
import
java.nio.ByteBuffer
;
public
final
class
DummyPlatformViewFactory
extends
PlatformViewFactory
{
DummyPlatformViewFactory
()
{
super
(
new
MessageCodec
<
Object
>()
{
@Nullable
@Override
public
ByteBuffer
encodeMessage
(
@Nullable
Object
o
)
{
if
(
o
instanceof
String
)
{
return
StringCodec
.
INSTANCE
.
encodeMessage
((
String
)
o
);
}
return
null
;
}
@Nullable
@Override
public
Object
decodeMessage
(
@Nullable
ByteBuffer
byteBuffer
)
{
return
StringCodec
.
INSTANCE
.
decodeMessage
(
byteBuffer
);
}
}
);
}
@SuppressWarnings
(
"unchecked"
)
@Override
public
PlatformView
create
(
Context
context
,
int
id
,
Object
args
)
{
return
new
DummyPlatformView
(
context
,
id
);
}
}
dev/benchmarks/platform_views_layout/android/build.gradle
0 → 100644
View file @
1f173184
// 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.
buildscript
{
repositories
{
google
()
jcenter
()
}
dependencies
{
classpath
'com.android.tools.build:gradle:3.5.0'
}
}
allprojects
{
repositories
{
google
()
jcenter
()
}
}
rootProject
.
buildDir
=
'../build'
subprojects
{
project
.
buildDir
=
"${rootProject.buildDir}/${project.name}"
}
subprojects
{
project
.
evaluationDependsOn
(
':app'
)
}
task
clean
(
type:
Delete
)
{
delete
rootProject
.
buildDir
}
dev/benchmarks/platform_views_layout/android/gradle.properties
0 → 100644
View file @
1f173184
org.gradle.jvmargs
=
-Xmx1536M
android.useAndroidX
=
true
android.enableJetifier
=
true
android.enableR8
=
true
dev/benchmarks/platform_views_layout/android/gradle/wrapper/gradle-wrapper.properties
0 → 100644
View file @
1f173184
#Fri Jun 23 08:50:38 CEST 2017
distributionBase
=
GRADLE_USER_HOME
distributionPath
=
wrapper/dists
zipStoreBase
=
GRADLE_USER_HOME
zipStorePath
=
wrapper/dists
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-5.6.2-all.zip
dev/benchmarks/platform_views_layout/android/settings.gradle
0 → 100644
View file @
1f173184
// 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.
include
':app'
dev/benchmarks/platform_views_layout/ios/Flutter/AppFrameworkInfo.plist
0 → 100644
View file @
1f173184
<
?xml
v
e
rsion="
1
.
0
"
e
n
c
o
d
ing="UT
F
-
8
"?
>
<
!
D
O
C
TYP
E
plist
PU
B
LI
C
"-//
A
ppl
e
//
D
T
D
PLIST
1
.
0
//
E
N"
"http://www.
a
ppl
e
.
c
om/
D
T
D
s/Prop
e
rtyList-
1
.
0
.
d
t
d
"
>
<
plist
v
e
rsion="
1
.
0
"
>
<
d
i
c
t
>
<
k
e
y
>
CFBundleDevelopmentRegion
<
/k
e
y
>
<
string
>
$
(
DEVELOPMENT_LANGUAGE
)<
/string
>
<
k
e
y
>
CFBundleExecutable
<
/k
e
y
>
<
string
>
App
<
/string
>
<
k
e
y
>
CFBundleIdentifier
<
/k
e
y
>
<
string
>
io.flutter.flutter.app
<
/string
>
<
k
e
y
>
CFBundleInfoDictionaryVersion
<
/k
e
y
>
<
string
>
6.0
<
/string
>
<
k
e
y
>
CFBundleName
<
/k
e
y
>
<
string
>
App
<
/string
>
<
k
e
y
>
CFBundlePackageType
<
/k
e
y
>
<
string
>
FMWK
<
/string
>
<
k
e
y
>
CFBundleShortVersionString
<
/k
e
y
>
<
string
>
1.0
<
/string
>
<
k
e
y
>
CFBundleSignature
<
/k
e
y
>
<
string
>
????
<
/string
>
<
k
e
y
>
CFBundleVersion
<
/k
e
y
>
<
string
>
1.0
<
/string
>
<
k
e
y
>
MinimumOSVersion
<
/k
e
y
>
<
string
>
8.0
<
/string
>
<
/
d
i
c
t
>
<
/plist
>
dev/benchmarks/platform_views_layout/ios/Flutter/Flutter.xcconfig
0 → 100644
View file @
1f173184
#include "Generated.xcconfig"
dev/benchmarks/platform_views_layout/ios/Runner.xcodeproj/project.pbxproj
0 → 100644
View file @
1f173184
This diff is collapsed.
Click to expand it.
dev/benchmarks/platform_views_layout/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
0 → 100644
View file @
1f173184
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version =
"1.0"
>
<FileRef
location =
"self:Runner.xcodeproj"
>
</FileRef>
</Workspace>
dev/benchmarks/platform_views_layout/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
0 → 100644
View file @
1f173184
<
?xml
v
e
rsion="
1
.
0
"
e
n
c
o
d
ing="UT
F
-
8
"?
>
<
!
D
O
C
TYP
E
plist
PU
B
LI
C
"-//
A
ppl
e
//
D
T
D
PLIST
1
.
0
//
E
N"
"http://www.
a
ppl
e
.
c
om/
D
T
D
s/Prop
e
rtyList-
1
.
0
.
d
t
d
"
>
<
plist
v
e
rsion="
1
.
0
"
>
<
d
i
c
t
>
<
k
e
y
>
IDEDidComputeMac32BitWarning
<
/k
e
y
>
<
tru
e
/
>
<
/
d
i
c
t
>
<
/plist
>
dev/benchmarks/platform_views_layout/ios/Runner/AppDelegate.h
0 → 100644
View file @
1f173184
// 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 <Flutter/Flutter.h>
#import <UIKit/UIKit.h>
@interface
AppDelegate
:
FlutterAppDelegate
@end
dev/benchmarks/platform_views_layout/ios/Runner/AppDelegate.m
0 → 100644
View file @
1f173184
// 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.
#include "AppDelegate.h"
#include "DummyPlatformView.h"
#include "GeneratedPluginRegistrant.h"
@implementation
AppDelegate
-
(
BOOL
)
application
:(
UIApplication
*
)
application
didFinishLaunchingWithOptions
:(
NSDictionary
*
)
launchOptions
{
[
GeneratedPluginRegistrant
registerWithRegistry
:
self
];
NSObject
<
FlutterPluginRegistrar
>*
registrar
=
[
self
registrarForPlugin
:
@"benchmarks/platform_views_layout/DummyPlatformViewPlugin"
];
DummyPlatformViewFactory
*
dummyPlatformViewFactory
=
[[
DummyPlatformViewFactory
alloc
]
init
];
[
registrar
registerViewFactory
:
dummyPlatformViewFactory
withId
:
@"benchmarks/platform_views_layout/DummyPlatformView"
gestureRecognizersBlockingPolicy:
FlutterPlatformViewGestureRecognizersBlockingPolicyEager
];
// Override point for customization after application launch.
return
[
super
application
:
application
didFinishLaunchingWithOptions
:
launchOptions
];
}
@end
dev/benchmarks/platform_views_layout/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png
0 → 100644
View file @
1f173184
This diff was suppressed by a .gitattributes entry.
dev/benchmarks/platform_views_layout/ios/Runner/Base.lproj/LaunchScreen.storyboard
0 → 100644
View file @
1f173184
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document
type=
"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB"
version=
"3.0"
toolsVersion=
"10117"
systemVersion=
"15F34"
targetRuntime=
"iOS.CocoaTouch"
propertyAccessControl=
"none"
useAutolayout=
"YES"
launchScreen=
"YES"
useTraitCollections=
"YES"
initialViewController=
"01J-lp-oVM"
>
<dependencies>
<deployment
identifier=
"iOS"
/>
<plugIn
identifier=
"com.apple.InterfaceBuilder.IBCocoaTouchPlugin"
version=
"10085"
/>
</dependencies>
<scenes>
<!--View Controller-->
<scene
sceneID=
"EHf-IW-A2E"
>
<objects>
<viewController
id=
"01J-lp-oVM"
sceneMemberID=
"viewController"
>
<layoutGuides>
<viewControllerLayoutGuide
type=
"top"
id=
"Llm-lL-Icb"
/>
<viewControllerLayoutGuide
type=
"bottom"
id=
"xb3-aO-Qok"
/>
</layoutGuides>
<view
key=
"view"
contentMode=
"scaleToFill"
id=
"Ze5-6b-2t3"
>
<rect
key=
"frame"
x=
"0.0"
y=
"0.0"
width=
"600"
height=
"600"
/>
<autoresizingMask
key=
"autoresizingMask"
widthSizable=
"YES"
heightSizable=
"YES"
/>
<color
key=
"backgroundColor"
white=
"1"
alpha=
"1"
colorSpace=
"custom"
customColorSpace=
"calibratedWhite"
/>
</view>
</viewController>
<placeholder
placeholderIdentifier=
"IBFirstResponder"
id=
"iYj-Kq-Ea1"
userLabel=
"First Responder"
sceneMemberID=
"firstResponder"
/>
</objects>
<point
key=
"canvasLocation"
x=
"53"
y=
"375"
/>
</scene>
</scenes>
</document>
dev/benchmarks/platform_views_layout/ios/Runner/Base.lproj/Main.storyboard
0 → 100644
View file @
1f173184
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document
type=
"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB"
version=
"3.0"
toolsVersion=
"10117"
systemVersion=
"15F34"
targetRuntime=
"iOS.CocoaTouch"
propertyAccessControl=
"none"
useAutolayout=
"YES"
useTraitCollections=
"YES"
initialViewController=
"BYZ-38-t0r"
>
<dependencies>
<deployment
identifier=
"iOS"
/>
<plugIn
identifier=
"com.apple.InterfaceBuilder.IBCocoaTouchPlugin"
version=
"10085"
/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene
sceneID=
"tne-QT-ifu"
>
<objects>
<viewController
id=
"BYZ-38-t0r"
customClass=
"FlutterViewController"
sceneMemberID=
"viewController"
>
<layoutGuides>
<viewControllerLayoutGuide
type=
"top"
id=
"y3c-jy-aDJ"
/>
<viewControllerLayoutGuide
type=
"bottom"
id=
"wfy-db-euE"
/>
</layoutGuides>
<view
key=
"view"
contentMode=
"scaleToFill"
id=
"8bC-Xf-vdC"
>
<rect
key=
"frame"
x=
"0.0"
y=
"0.0"
width=
"600"
height=
"600"
/>
<autoresizingMask
key=
"autoresizingMask"
widthSizable=
"YES"
heightSizable=
"YES"
/>
<color
key=
"backgroundColor"
white=
"1"
alpha=
"1"
colorSpace=
"custom"
customColorSpace=
"calibratedWhite"
/>
</view>
</viewController>
<placeholder
placeholderIdentifier=
"IBFirstResponder"
id=
"dkx-z0-nzr"
sceneMemberID=
"firstResponder"
/>
</objects>
</scene>
</scenes>
</document>
dev/benchmarks/platform_views_layout/ios/Runner/DummyPlatformView.h
0 → 100644
View file @
1f173184
// 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 <Flutter/Flutter.h>
NS_ASSUME_NONNULL_BEGIN
@interface
DummyPlatformView
:
NSObject
<
FlutterPlatformView
>
-
(
instancetype
)
initWithFrame
:
(
CGRect
)
frame
viewIdentifier
:
(
int64_t
)
viewId
arguments
:
(
id
_Nullable
)
args
binaryMessenger
:
(
NSObject
<
FlutterBinaryMessenger
>*
)
messenger
;
-
(
UIView
*
)
view
;
@end
@interface
DummyPlatformViewFactory
:
NSObject
<
FlutterPlatformViewFactory
>
-
(
instancetype
)
initWithMessenger
:
(
NSObject
<
FlutterBinaryMessenger
>*
)
messenger
;
@end
NS_ASSUME_NONNULL_END
dev/benchmarks/platform_views_layout/ios/Runner/DummyPlatformView.m
0 → 100644
View file @
1f173184
// 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 "DummyPlatformView.h"
@implementation
DummyPlatformViewFactory
{
NSObject
<
FlutterBinaryMessenger
>*
_messenger
;
}
-
(
instancetype
)
initWithMessenger
:
(
NSObject
<
FlutterBinaryMessenger
>*
)
messenger
{
self
=
[
super
init
];
if
(
self
)
{
_messenger
=
messenger
;
}
return
self
;
}
-
(
NSObject
<
FlutterPlatformView
>*
)
createWithFrame
:
(
CGRect
)
frame
viewIdentifier
:
(
int64_t
)
viewId
arguments
:
(
id
_Nullable
)
args
{
return
[[
DummyPlatformView
alloc
]
initWithFrame
:
frame
viewIdentifier
:
viewId
arguments
:
args
binaryMessenger
:
_messenger
];
}
-
(
NSObject
<
FlutterMessageCodec
>*
)
createArgsCodec
{
return
[
FlutterStringCodec
sharedInstance
];
}
@end
@implementation
DummyPlatformView
{
UITextView
*
_view
;
FlutterMethodChannel
*
_channel
;
}
-
(
instancetype
)
initWithFrame
:
(
CGRect
)
frame
viewIdentifier
:
(
int64_t
)
viewId
arguments
:
(
id
_Nullable
)
args
binaryMessenger
:
(
NSObject
<
FlutterBinaryMessenger
>*
)
messenger
{
if
([
super
init
])
{
_view
=
[[
UITextView
alloc
]
initWithFrame
:
CGRectMake
(
0
.
0
,
0
.
0
,
250
.
0
,
100
.
0
)];
_view
.
textColor
=
UIColor
.
blueColor
;
_view
.
backgroundColor
=
UIColor
.
lightGrayColor
;
[
_view
setFont
:[
UIFont
systemFontOfSize
:
52
]];
_view
.
text
=
@"DummyPlatformView"
;
}
return
self
;
}
-
(
UIView
*
)
view
{
return
_view
;
}
@end
dev/benchmarks/platform_views_layout/ios/Runner/Info.plist
0 → 100644
View file @
1f173184
<
?xml
v
e
rsion="
1
.
0
"
e
n
c
o
d
ing="UT
F
-
8
"?
>
<
!
D
O
C
TYP
E
plist
PU
B
LI
C
"-//
A
ppl
e
//
D
T
D
PLIST
1
.
0
//
E
N"
"http://www.
a
ppl
e
.
c
om/
D
T
D
s/Prop
e
rtyList-
1
.
0
.
d
t
d
"
>
<
plist
v
e
rsion="
1
.
0
"
>
<
d
i
c
t
>
<
k
e
y
>
CFBundleDevelopmentRegion
<
/k
e
y
>
<
string
>
$
(
DEVELOPMENT_LANGUAGE
)<
/string
>
<
k
e
y
>
CFBundleExecutable
<
/k
e
y
>
<
string
>
$
(
EXECUTABLE_NAME
)<
/string
>
<
k
e
y
>
CFBundleIdentifier
<
/k
e
y
>
<
string
>
com.yourcompany.complexLayout
<
/string
>
<
k
e
y
>
CFBundleInfoDictionaryVersion
<
/k
e
y
>
<
string
>
6.0
<
/string
>
<
k
e
y
>
CFBundleName
<
/k
e
y
>
<
string
>
complex_layout
<
/string
>
<
k
e
y
>
CFBundlePackageType
<
/k
e
y
>
<
string
>
APPL
<
/string
>
<
k
e
y
>
CFBundleShortVersionString
<
/k
e
y
>
<
string
>
1.0
<
/string
>
<
k
e
y
>
CFBundleSignature
<
/k
e
y
>
<
string
>
????
<
/string
>
<
k
e
y
>
CFBundleVersion
<
/k
e
y
>
<
string
>
1
<
/string
>
<
k
e
y
>
LSRequiresIPhoneOS
<
/k
e
y
>
<
tru
e
/
>
<
k
e
y
>
UILaunchStoryboardName
<
/k
e
y
>
<
string
>
LaunchScreen
<
/string
>
<
k
e
y
>
UIMainStoryboardFile
<
/k
e
y
>
<
string
>
Main
<
/string
>
<
k
e
y
>
UISupportedInterfaceOrientations
<
/k
e
y
>
<
a
rr
a
y
>
<
string
>
UIInterfaceOrientationPortrait
<
/string
>
<
string
>
UIInterfaceOrientationLandscapeLeft
<
/string
>
<
string
>
UIInterfaceOrientationLandscapeRight
<
/string
>
<
/
a
rr
a
y
>
<
k
e
y
>
UISupportedInterfaceOrientations
~
ipad
<
/k
e
y
>
<
a
rr
a
y
>
<
string
>
UIInterfaceOrientationPortrait
<
/string
>
<
string
>
UIInterfaceOrientationPortraitUpsideDown
<
/string
>
<
string
>
UIInterfaceOrientationLandscapeLeft
<
/string
>
<
string
>
UIInterfaceOrientationLandscapeRight
<
/string
>
<
/
a
rr
a
y
>
<
k
e
y
>
UIViewControllerBasedStatusBarAppearance
<
/k
e
y
>
<
fa
ls
e
/
>
<
k
e
y
>
io.flutter.embedded_views_preview
<
/k
e
y
>
<
tru
e
/
>
<
/
d
i
c
t
>
<
/plist
>
dev/benchmarks/platform_views_layout/ios/Runner/main.m
0 → 100644
View file @
1f173184
//
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
<
UIKit
/
UIKit
.
h
>
#import
<
Flutter
/
Flutter
.
h
>
#import
"AppDelegate.h"
int
main
(
int
argc
,
char
*
argv
[])
{
@
autoreleasepool
{
return
UIApplicationMain
(
argc
,
argv
,
nil
,
NSStringFromClass
([
AppDelegate
class
]))
;
}
}
dev/benchmarks/platform_views_layout/lib/main.dart
0 → 100644
View file @
1f173184
// 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
'dart:io'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/scheduler.dart'
show
timeDilation
;
void
main
(
)
{
runApp
(
PlatformViewApp
()
);
}
class
PlatformViewApp
extends
StatefulWidget
{
@override
PlatformViewAppState
createState
()
=>
PlatformViewAppState
();
static
PlatformViewAppState
of
(
BuildContext
context
)
=>
context
.
findAncestorStateOfType
<
PlatformViewAppState
>();
}
class
PlatformViewAppState
extends
State
<
PlatformViewApp
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
theme:
ThemeData
.
light
(),
title:
'Advanced Layout'
,
home:
const
PlatformViewLayout
(),
);
}
void
toggleAnimationSpeed
()
{
setState
(()
{
timeDilation
=
(
timeDilation
!=
1.0
)
?
1.0
:
5.0
;
});
}
}
class
PlatformViewLayout
extends
StatelessWidget
{
const
PlatformViewLayout
({
Key
key
})
:
super
(
key:
key
);
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
'Platform View Scrolling Layout'
)),
body:
ListView
.
builder
(
key:
const
Key
(
'platform-views-scroll'
),
// This key is used by the driver test.
itemCount:
200
,
itemBuilder:
(
BuildContext
context
,
int
index
)
{
return
Padding
(
padding:
const
EdgeInsets
.
all
(
5.0
),
child:
Material
(
elevation:
(
index
%
5
+
1
).
toDouble
(),
color:
Colors
.
white
,
child:
Stack
(
children:
const
<
Widget
>
[
DummyPlatformView
(),
RotationContainer
(),
],
),
),
);
},
),
);
}
}
class
DummyPlatformView
extends
StatelessWidget
{
const
DummyPlatformView
({
Key
key
})
:
super
(
key:
key
);
@override
Widget
build
(
BuildContext
context
)
{
const
String
viewType
=
'benchmarks/platform_views_layout/DummyPlatformView'
;
StatefulWidget
nativeView
;
if
(
Platform
.
isIOS
)
{
nativeView
=
const
UiKitView
(
viewType:
viewType
,
);
}
else
if
(
Platform
.
isAndroid
)
{
nativeView
=
const
AndroidView
(
viewType:
viewType
,
);
}
else
{
assert
(
false
,
'Invalid platform'
);
}
return
Container
(
color:
Colors
.
purple
,
height:
200.0
,
child:
nativeView
,
);
}
}
class
RotationContainer
extends
StatefulWidget
{
const
RotationContainer
({
Key
key
})
:
super
(
key:
key
);
@override
_RotationContainerState
createState
()
=>
_RotationContainerState
();
}
class
_RotationContainerState
extends
State
<
RotationContainer
>
with
SingleTickerProviderStateMixin
{
AnimationController
_rotationController
;
@override
void
initState
()
{
super
.
initState
();
_rotationController
=
AnimationController
(
vsync:
this
,
duration:
const
Duration
(
seconds:
1
),
value:
1
,
);
_rotationController
.
repeat
();
}
@override
Widget
build
(
BuildContext
context
)
{
return
RotationTransition
(
turns:
Tween
<
double
>(
begin:
0.0
,
end:
1.0
).
animate
(
_rotationController
),
child:
Container
(
color:
Colors
.
purple
,
width:
50.0
,
height:
50.0
,
),
);
}
}
dev/benchmarks/platform_views_layout/pubspec.yaml
0 → 100644
View file @
1f173184
name
:
platform_views_layout
description
:
A benchmark for platform views.
environment
:
# The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite.
sdk
:
"
>=2.0.0-dev.68.0
<3.0.0"
dependencies
:
flutter
:
sdk
:
flutter
flutter_driver
:
sdk
:
flutter
# To change the version of the gallery assets, edit
# //packages/flutter_tools/lib/src/commands/update_packages.dart
# and run
# flutter update-packages --force-upgrade
flutter_gallery_assets
:
0.1.9+2
archive
:
2.0.11
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.5.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.4.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
collection
:
1.14.11
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
5.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
intl
:
0.16.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.6
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.1.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.6.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.5.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.1.6
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.0.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
flutter_test
:
sdk
:
flutter
test
:
1.14.2
_fe_analyzer_shared
:
1.0.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
1.0.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
coverage
:
0.13.9
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
csslib
:
0.16.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
glob
:
1.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
html
:
0.14.0+3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
http
:
0.12.0+4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
http_multi_server
:
2.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
http_parser
:
3.1.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
image
:
2.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.1+1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.6+3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
multi_server_socket
:
1.0.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
node_interop
:
1.0.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
node_io
:
1.0.1+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
node_preamble
:
1.4.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
package_config
:
1.9.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
package_resolver
:
1.0.10
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.9.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
petitparser
:
2.4.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.4.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
quiver
:
2.0.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
1.0.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.9
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.0.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
1.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+14
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.5.0+1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
xml
:
3.5.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
flutter
:
uses-material-design
:
true
assets
:
-
packages/flutter_gallery_assets/people/square/ali.png
-
packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
# PUBSPEC CHECKSUM: 2d9e
dev/benchmarks/platform_views_layout/test_driver/scroll_perf.dart
0 → 100644
View file @
1f173184
// 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
'package:flutter_driver/driver_extension.dart'
;
import
'package:platform_views_layout/main.dart'
as
app
;
void
main
(
)
{
enableFlutterDriverExtension
();
app
.
main
();
}
dev/benchmarks/platform_views_layout/test_driver/scroll_perf_test.dart
0 → 100644
View file @
1f173184
// 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
'dart:async'
;
import
'package:flutter_driver/flutter_driver.dart'
;
import
'package:test/test.dart'
hide
TypeMatcher
,
isInstanceOf
;
void
main
(
)
{
group
(
'scrolling performance test'
,
()
{
FlutterDriver
driver
;
setUpAll
(()
async
{
driver
=
await
FlutterDriver
.
connect
();
await
driver
.
waitUntilFirstFrameRasterized
();
});
tearDownAll
(()
async
{
if
(
driver
!=
null
)
driver
.
close
();
});
Future
<
void
>
testScrollPerf
(
String
listKey
,
String
summaryName
)
async
{
// The slight initial delay avoids starting the timing during a
// period of increased load on the device. Without this delay, the
// benchmark has greater noise.
// See: https://github.com/flutter/flutter/issues/19434
await
Future
<
void
>.
delayed
(
const
Duration
(
milliseconds:
250
));
await
driver
.
forceGC
();
final
Timeline
timeline
=
await
driver
.
traceAction
(()
async
{
// Find the scrollable stock list
final
SerializableFinder
list
=
find
.
byValueKey
(
listKey
);
expect
(
list
,
isNotNull
);
// Scroll down
for
(
int
i
=
0
;
i
<
5
;
i
+=
1
)
{
await
driver
.
scroll
(
list
,
0.0
,
-
300.0
,
const
Duration
(
milliseconds:
300
));
await
Future
<
void
>.
delayed
(
const
Duration
(
milliseconds:
500
));
}
// Scroll up
for
(
int
i
=
0
;
i
<
5
;
i
+=
1
)
{
await
driver
.
scroll
(
list
,
0.0
,
300.0
,
const
Duration
(
milliseconds:
300
));
await
Future
<
void
>.
delayed
(
const
Duration
(
milliseconds:
500
));
}
});
final
TimelineSummary
summary
=
TimelineSummary
.
summarize
(
timeline
);
summary
.
writeSummaryToFile
(
summaryName
,
pretty:
true
);
summary
.
writeTimelineToFile
(
summaryName
,
pretty:
true
);
}
test
(
'platform_views_scroll_perf'
,
()
async
{
// Disable frame sync, since there are ongoing animations.
await
driver
.
runUnsynchronized
(()
async
{
await
testScrollPerf
(
'platform-views-scroll'
,
'platform_views_scroll_perf'
);
});
});
});
}
dev/devicelab/bin/tasks/platform_views_scroll_perf__timeline_summary.dart
0 → 100644
View file @
1f173184
// 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
'dart:async'
;
import
'package:flutter_devicelab/tasks/perf_tests.dart'
;
import
'package:flutter_devicelab/framework/adb.dart'
;
import
'package:flutter_devicelab/framework/framework.dart'
;
Future
<
void
>
main
()
async
{
deviceOperatingSystem
=
DeviceOperatingSystem
.
android
;
await
task
(
createPlatformViewsScrollPerfTest
());
}
dev/devicelab/bin/tasks/platform_views_scroll_perf_ios__timeline_summary.dart
0 → 100644
View file @
1f173184
// 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
'dart:async'
;
import
'package:flutter_devicelab/tasks/perf_tests.dart'
;
import
'package:flutter_devicelab/framework/adb.dart'
;
import
'package:flutter_devicelab/framework/framework.dart'
;
Future
<
void
>
main
()
async
{
deviceOperatingSystem
=
DeviceOperatingSystem
.
android
;
await
task
(
createPlatformViewsScrollPerfTest
());
}
dev/devicelab/lib/tasks/perf_tests.dart
View file @
1f173184
...
...
@@ -30,6 +30,14 @@ TaskFunction createTilesScrollPerfTest() {
).
run
;
}
TaskFunction
createPlatformViewsScrollPerfTest
(
)
{
return
PerfTest
(
'
${flutterDirectory.path}
/dev/benchmarks/platform_views_layout'
,
'test_driver/scroll_perf.dart'
,
'platform_views_scroll_perf'
,
).
run
;
}
TaskFunction
createHomeScrollPerfTest
(
)
{
return
PerfTest
(
'
${flutterDirectory.path}
/dev/integration_tests/flutter_gallery'
,
...
...
dev/devicelab/manifest.yaml
View file @
1f173184
...
...
@@ -147,6 +147,12 @@ tasks:
stage
:
devicelab
required_agent_capabilities
:
[
"
mac/android"
]
platform_views_scroll_perf__timeline_summary
:
description
:
>
Measures the runtime performance of platform views in the Complex Layout sample app on Android.
stage
:
devicelab_ios
required_agent_capabilities
:
[
"
linux/android"
]
home_scroll_perf__timeline_summary
:
description
:
>
Measures the runtime performance of scrolling the material page in the
...
...
@@ -439,6 +445,12 @@ tasks:
# TODO(keyonghan): change with https://github.com/flutter/flutter/issues/50383
required_agent_capabilities
:
[
"
mac/ios"
]
platform_views_scroll_perf_ios__timeline_summary
:
description
:
>
Measures the runtime performance of platform views in the Complex Layout sample app on iPhone 6.
stage
:
devicelab_ios
required_agent_capabilities
:
[
"
mac/ios"
]
flutter_gallery_ios32__start_up
:
description
:
>
Measures the startup time of the Flutter Gallery app on 32-bit iOS (iPhone 4S).
...
...
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