Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Typography] Dynamic Type 2.0 #6733

Merged
merged 36 commits into from Mar 8, 2019
Merged

[Typography] Dynamic Type 2.0 #6733

merged 36 commits into from Mar 8, 2019

Conversation

ianegordon
Copy link
Contributor

@ianegordon ianegordon commented Feb 28, 2019

Next iteration of our Dynamic Type.

Mimics Apple's new APIs. (UIFontMetrics)
Adds MDCFontScalar to attach curves.
Adds UIFont category to expose fontScaledForCategory methods.
Adds new MDCTypographyScheme with scalable fonts.

@ianegordon ianegordon requested a review from a team as a code owner February 28, 2019 19:59
@material-automation
Copy link

This PR affects multiple components.

@ianegordon ianegordon requested review from jverkoey and randallli and removed request for a team February 28, 2019 19:59
@material-automation
Copy link

material-automation commented Feb 28, 2019

bazel detected changes to the following targets:

//catalog:MDCCatalog
//catalog:MDCCatalog.apple_binary
//catalog:MDCCatalog.swift_runtime_linkopts
//catalog:MDCCatalogLib
//catalog:MDCDragons
//catalog:MDCDragons.apple_binary
//catalog:MDCDragons.swift_runtime_linkopts
//catalog:MDCDragonsLib
//catalog:MaterialCatalog
//components/ActionSheet:ActionSheet
//components/ActionSheet:ActionSheetThemer
//components/ActionSheet:ColorThemer
//components/ActionSheet:ObjcExamples
//components/ActionSheet:SwiftExamples
//components/ActionSheet:Theming
//components/ActionSheet:TypographyThemer
//components/ActionSheet:privateHeaders
//components/ActionSheet:unit_test_color_themer_swift_sources
//components/ActionSheet:unit_test_sources
//components/ActionSheet:unit_test_swift_sources
//components/ActionSheet:unit_test_themer_sources
//components/ActionSheet:unit_test_theming_sources
//components/ActionSheet:unit_tests
//components/ActionSheet:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/ActionSheet:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/ActionSheet:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/ActionSheet:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/ActionSheet:unit_tests_IPHONE_5_IN_8_1
//components/ActionSheet:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/ActionSheet:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/ActionSheet:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/ActionSheet:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/ActionSheet:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/ActionSheet:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/ActionSheet:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/ActionSheet:unit_tests_IPHONE_X_IN_11_0
//components/ActionSheet:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/ActionSheet:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/ActionSheet:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/ActivityIndicator:ObjcExamples
//components/AnimationTiming:ObjcExamples
//components/AnimationTiming:SwiftExamples
//components/AppBar:AppBar
//components/AppBar:ColorThemer
//components/AppBar:ObjcExamples
//components/AppBar:SwiftExamples
//components/AppBar:TypographyThemer
//components/AppBar:unit_test_swift_sources
//components/AppBar:unit_tests
//components/AppBar:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/AppBar:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/AppBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/AppBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/AppBar:unit_tests_IPHONE_5_IN_8_1
//components/AppBar:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/AppBar:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/AppBar:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/AppBar:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/AppBar:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/AppBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/AppBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/AppBar:unit_tests_IPHONE_X_IN_11_0
//components/AppBar:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/AppBar:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/AppBar:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Banner:ObjcExamples
//components/BottomAppBar:BottomAppBar
//components/BottomAppBar:ColorThemer
//components/BottomAppBar:ObjcExamples
//components/BottomAppBar:SwiftExamples
//components/BottomAppBar:snapshot_test_lib
//components/BottomAppBar:snapshot_tests
//components/BottomAppBar:snapshot_tests.swift_runtime_linkopts
//components/BottomAppBar:snapshot_tests_test_binary
//components/BottomAppBar:snapshot_tests_test_bundle
//components/BottomAppBar:unit_test_sources
//components/BottomAppBar:unit_tests
//components/BottomAppBar:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/BottomAppBar:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/BottomAppBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/BottomAppBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/BottomAppBar:unit_tests_IPHONE_5_IN_8_1
//components/BottomAppBar:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/BottomAppBar:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/BottomAppBar:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/BottomAppBar:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/BottomAppBar:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/BottomAppBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/BottomAppBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/BottomAppBar:unit_tests_IPHONE_X_IN_11_0
//components/BottomAppBar:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/BottomAppBar:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/BottomAppBar:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/BottomNavigation:BottomNavigation
//components/BottomNavigation:BottomNavigationBeta
//components/BottomNavigation:ColorThemer
//components/BottomNavigation:ObjcExamples
//components/BottomNavigation:SwiftExamples
//components/BottomNavigation:TypographyThemer
//components/BottomNavigation:snapshot_test_lib
//components/BottomNavigation:snapshot_tests
//components/BottomNavigation:snapshot_tests.swift_runtime_linkopts
//components/BottomNavigation:snapshot_tests_test_binary
//components/BottomNavigation:snapshot_tests_test_bundle
//components/BottomNavigation:unit_test_beta_sources
//components/BottomNavigation:unit_test_sources
//components/BottomNavigation:unit_tests
//components/BottomNavigation:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/BottomNavigation:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/BottomNavigation:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/BottomNavigation:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/BottomNavigation:unit_tests_IPHONE_5_IN_8_1
//components/BottomNavigation:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/BottomNavigation:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/BottomNavigation:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/BottomNavigation:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/BottomNavigation:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/BottomNavigation:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/BottomNavigation:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/BottomNavigation:unit_tests_IPHONE_X_IN_11_0
//components/BottomNavigation:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/BottomNavigation:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/BottomNavigation:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/BottomNavigation:unit_tests_beta
//components/BottomNavigation:unit_tests_beta.swift_runtime_linkopts
//components/BottomNavigation:unit_tests_beta_test_binary
//components/BottomNavigation:unit_tests_beta_test_bundle
//components/BottomSheet:ObjcExamples
//components/BottomSheet:SwiftExamples
//components/ButtonBar:ButtonBar
//components/ButtonBar:ColorThemer
//components/ButtonBar:ObjcExamples
//components/ButtonBar:SwiftExamples
//components/ButtonBar:Theming
//components/ButtonBar:TypographyThemer
//components/ButtonBar:snapshot_test_lib
//components/ButtonBar:snapshot_tests
//components/ButtonBar:snapshot_tests.swift_runtime_linkopts
//components/ButtonBar:snapshot_tests_test_binary
//components/ButtonBar:snapshot_tests_test_bundle
//components/ButtonBar:unit_test_sources
//components/ButtonBar:unit_test_swift_sources
//components/ButtonBar:unit_tests
//components/ButtonBar:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/ButtonBar:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/ButtonBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/ButtonBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/ButtonBar:unit_tests_IPHONE_5_IN_8_1
//components/ButtonBar:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/ButtonBar:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/ButtonBar:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/ButtonBar:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/ButtonBar:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/ButtonBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/ButtonBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/ButtonBar:unit_tests_IPHONE_X_IN_11_0
//components/ButtonBar:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/ButtonBar:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/ButtonBar:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Buttons:ButtonThemer
//components/Buttons:Buttons
//components/Buttons:ColorThemer
//components/Buttons:ObjcExamples
//components/Buttons:ShapeThemer
//components/Buttons:SwiftExamples
//components/Buttons:Theming
//components/Buttons:TitleColorAccessibilityMutator
//components/Buttons:TypographyThemer
//components/Buttons:snapshot_test_lib
//components/Buttons:snapshot_tests
//components/Buttons:snapshot_tests.swift_runtime_linkopts
//components/Buttons:snapshot_tests_test_binary
//components/Buttons:snapshot_tests_test_bundle
//components/Buttons:unit_test_sources
//components/Buttons:unit_test_swift_sources
//components/Buttons:unit_tests
//components/Buttons:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Buttons:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Buttons:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Buttons:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Buttons:unit_tests_IPHONE_5_IN_8_1
//components/Buttons:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Buttons:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Buttons:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Buttons:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Buttons:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Buttons:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Buttons:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Buttons:unit_tests_IPHONE_X_IN_11_0
//components/Buttons:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Buttons:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Buttons:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Cards:ObjcExamples
//components/Cards:SwiftExamples
//components/Cards:Theming
//components/Cards:snapshot_test_lib
//components/Cards:snapshot_tests
//components/Cards:snapshot_tests.swift_runtime_linkopts
//components/Cards:snapshot_tests_test_binary
//components/Cards:snapshot_tests_test_bundle
//components/Cards:unit_test_swift_sources
//components/Cards:unit_tests
//components/Cards:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Cards:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Cards:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Cards:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Cards:unit_tests_IPHONE_5_IN_8_1
//components/Cards:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Cards:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Cards:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Cards:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Cards:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Cards:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Cards:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Cards:unit_tests_IPHONE_X_IN_11_0
//components/Cards:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Cards:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Cards:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Chips:ChipThemer
//components/Chips:Chips
//components/Chips:ColorThemer
//components/Chips:FontThemer
//components/Chips:ObjcExamples
//components/Chips:ShapeThemer
//components/Chips:SwiftExamples
//components/Chips:Theming
//components/Chips:TypographyThemer
//components/Chips:privateHeaders
//components/Chips:snapshot_test_lib
//components/Chips:snapshot_tests
//components/Chips:snapshot_tests.swift_runtime_linkopts
//components/Chips:snapshot_tests_test_binary
//components/Chips:snapshot_tests_test_bundle
//components/Chips:unit_test_sources
//components/Chips:unit_test_swift_sources
//components/Chips:unit_tests
//components/Chips:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Chips:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Chips:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Chips:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Chips:unit_tests_IPHONE_5_IN_8_1
//components/Chips:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Chips:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Chips:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Chips:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Chips:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Chips:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Chips:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Chips:unit_tests_IPHONE_X_IN_11_0
//components/Chips:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Chips:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Chips:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/CollectionCells:CollectionCells
//components/CollectionCells:ObjcExamples
//components/CollectionCells:unit_test_sources
//components/CollectionCells:unit_tests
//components/CollectionCells:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/CollectionCells:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/CollectionCells:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/CollectionCells:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/CollectionCells:unit_tests_IPHONE_5_IN_8_1
//components/CollectionCells:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/CollectionCells:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/CollectionCells:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/CollectionCells:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/CollectionCells:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/CollectionCells:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/CollectionCells:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/CollectionCells:unit_tests_IPHONE_X_IN_11_0
//components/CollectionCells:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/CollectionCells:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/CollectionCells:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Collections:Collections
//components/Collections:ObjcExamples
//components/Collections:SwiftExamples
//components/Collections:unit_test_sources
//components/Collections:unit_tests
//components/Collections:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Collections:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Collections:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Collections:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Collections:unit_tests_IPHONE_5_IN_8_1
//components/Collections:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Collections:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Collections:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Collections:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Collections:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Collections:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Collections:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Collections:unit_tests_IPHONE_X_IN_11_0
//components/Collections:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Collections:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Collections:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Dialogs:ColorThemer
//components/Dialogs:DialogThemer
//components/Dialogs:Dialogs
//components/Dialogs:ObjcExamples
//components/Dialogs:SwiftExamples
//components/Dialogs:Theming
//components/Dialogs:TypographyThemer
//components/Dialogs:snapshot_test_lib
//components/Dialogs:snapshot_tests
//components/Dialogs:snapshot_tests.swift_runtime_linkopts
//components/Dialogs:snapshot_tests_test_binary
//components/Dialogs:snapshot_tests_test_bundle
//components/Dialogs:unit_test_sources
//components/Dialogs:unit_test_swift_sources
//components/Dialogs:unit_tests
//components/Dialogs:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Dialogs:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Dialogs:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Dialogs:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Dialogs:unit_tests_IPHONE_5_IN_8_1
//components/Dialogs:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Dialogs:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Dialogs:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Dialogs:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Dialogs:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Dialogs:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Dialogs:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Dialogs:unit_tests_IPHONE_X_IN_11_0
//components/Dialogs:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Dialogs:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Dialogs:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/FeatureHighlight:ColorThemer
//components/FeatureHighlight:FeatureHighlight
//components/FeatureHighlight:FeatureHighlightAccessibilityMutator
//components/FeatureHighlight:FontThemer
//components/FeatureHighlight:ObjcExamples
//components/FeatureHighlight:SwiftExamples
//components/FeatureHighlight:TypographyThemer
//components/FeatureHighlight:unit_test_sources
//components/FeatureHighlight:unit_tests
//components/FeatureHighlight:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/FeatureHighlight:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/FeatureHighlight:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/FeatureHighlight:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/FeatureHighlight:unit_tests_IPHONE_5_IN_8_1
//components/FeatureHighlight:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/FeatureHighlight:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/FeatureHighlight:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/FeatureHighlight:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/FeatureHighlight:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/FeatureHighlight:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/FeatureHighlight:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/FeatureHighlight:unit_tests_IPHONE_X_IN_11_0
//components/FeatureHighlight:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/FeatureHighlight:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/FeatureHighlight:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/FlexibleHeader:ObjcExamples
//components/HeaderStackView:ColorThemer
//components/HeaderStackView:unit_test_sources
//components/HeaderStackView:unit_tests
//components/HeaderStackView:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/HeaderStackView:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/HeaderStackView:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/HeaderStackView:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/HeaderStackView:unit_tests_IPHONE_5_IN_8_1
//components/HeaderStackView:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/HeaderStackView:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/HeaderStackView:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/HeaderStackView:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/HeaderStackView:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/HeaderStackView:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/HeaderStackView:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/HeaderStackView:unit_tests_IPHONE_X_IN_11_0
//components/HeaderStackView:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/HeaderStackView:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/HeaderStackView:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Ink:ColorThemer
//components/Ink:ObjcExamples
//components/Ink:unit_test_sources
//components/Ink:unit_tests
//components/Ink:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Ink:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Ink:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Ink:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Ink:unit_tests_IPHONE_5_IN_8_1
//components/Ink:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Ink:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Ink:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Ink:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Ink:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Ink:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Ink:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Ink:unit_tests_IPHONE_X_IN_11_0
//components/Ink:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Ink:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Ink:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/List:ColorThemer
//components/List:List
//components/List:ListThemer
//components/List:ObjcExamples
//components/List:SwiftExamples
//components/List:TypographyThemer
//components/List:unit_test_sources
//components/List:unit_tests
//components/List:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/List:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/List:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/List:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/List:unit_tests_IPHONE_5_IN_8_1
//components/List:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/List:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/List:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/List:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/List:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/List:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/List:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/List:unit_tests_IPHONE_X_IN_11_0
//components/List:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/List:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/List:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/MaskedTransition:SwiftExamples
//components/NavigationBar:ColorThemer
//components/NavigationBar:NavigationBar
//components/NavigationBar:ObjcExamples
//components/NavigationBar:SwiftExamples
//components/NavigationBar:TypographyThemer
//components/NavigationBar:unit_test_sources
//components/NavigationBar:unit_test_swift_sources
//components/NavigationBar:unit_tests
//components/NavigationBar:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/NavigationBar:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/NavigationBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/NavigationBar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/NavigationBar:unit_tests_IPHONE_5_IN_8_1
//components/NavigationBar:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/NavigationBar:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/NavigationBar:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/NavigationBar:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/NavigationBar:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/NavigationBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/NavigationBar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/NavigationBar:unit_tests_IPHONE_X_IN_11_0
//components/NavigationBar:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/NavigationBar:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/NavigationBar:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/NavigationDrawer:SwiftExamples
//components/PageControl:ColorThemer
//components/PageControl:unit_test_sources
//components/PageControl:unit_tests
//components/PageControl:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/PageControl:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/PageControl:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/PageControl:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/PageControl:unit_tests_IPHONE_5_IN_8_1
//components/PageControl:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/PageControl:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/PageControl:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/PageControl:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/PageControl:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/PageControl:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/PageControl:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/PageControl:unit_tests_IPHONE_X_IN_11_0
//components/PageControl:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/PageControl:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/PageControl:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/ProgressView:ColorThemer
//components/ProgressView:ObjcExamples
//components/ProgressView:unit_test_sources
//components/ProgressView:unit_tests
//components/ProgressView:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/ProgressView:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/ProgressView:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/ProgressView:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/ProgressView:unit_tests_IPHONE_5_IN_8_1
//components/ProgressView:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/ProgressView:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/ProgressView:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/ProgressView:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/ProgressView:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/ProgressView:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/ProgressView:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/ProgressView:unit_tests_IPHONE_X_IN_11_0
//components/ProgressView:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/ProgressView:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/ProgressView:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Ripple:SwiftExamples
//components/ShadowElevations:ObjcExamples
//components/ShadowElevations:SwiftExamples
//components/ShadowLayer:ObjcExamples
//components/Slider:ColorThemer
//components/Slider:ObjcExamples
//components/Slider:Slider
//components/Slider:snapshot_test_lib
//components/Slider:snapshot_tests
//components/Slider:snapshot_tests.swift_runtime_linkopts
//components/Slider:snapshot_tests_test_binary
//components/Slider:snapshot_tests_test_bundle
//components/Slider:unit_test_sources
//components/Slider:unit_tests
//components/Slider:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Slider:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Slider:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Slider:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Slider:unit_tests_IPHONE_5_IN_8_1
//components/Slider:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Slider:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Slider:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Slider:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Slider:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Slider:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Slider:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Slider:unit_tests_IPHONE_X_IN_11_0
//components/Slider:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Slider:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Slider:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Snackbar:ColorThemer
//components/Snackbar:FontThemer
//components/Snackbar:ObjcExamples
//components/Snackbar:Snackbar
//components/Snackbar:TypographyThemer
//components/Snackbar:unit_test_sources
//components/Snackbar:unit_test_swift_sources
//components/Snackbar:unit_tests
//components/Snackbar:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Snackbar:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Snackbar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Snackbar:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Snackbar:unit_tests_IPHONE_5_IN_8_1
//components/Snackbar:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Snackbar:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Snackbar:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Snackbar:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Snackbar:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Snackbar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Snackbar:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Snackbar:unit_tests_IPHONE_X_IN_11_0
//components/Snackbar:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Snackbar:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Snackbar:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Tabs:ColorThemer
//components/Tabs:FontThemer
//components/Tabs:ObjcExamples
//components/Tabs:SwiftExamples
//components/Tabs:Tabs
//components/Tabs:TypographyThemer
//components/Tabs:unit_test_sources
//components/Tabs:unit_tests
//components/Tabs:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Tabs:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Tabs:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Tabs:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Tabs:unit_tests_IPHONE_5_IN_8_1
//components/Tabs:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Tabs:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Tabs:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Tabs:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Tabs:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Tabs:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Tabs:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Tabs:unit_tests_IPHONE_X_IN_11_0
//components/Tabs:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Tabs:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Tabs:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/TextFields:ColorThemer
//components/TextFields:ExperimentalExampleSource
//components/TextFields:ExperimentalExamples
//components/TextFields:FontThemer
//components/TextFields:ObjcExamples
//components/TextFields:SwiftExamples
//components/TextFields:SwiftExperimentalExamples
//components/TextFields:TextFields
//components/TextFields:TypographyThemer
//components/TextFields:snapshot_test_lib
//components/TextFields:snapshot_tests
//components/TextFields:snapshot_tests.swift_runtime_linkopts
//components/TextFields:snapshot_tests_test_binary
//components/TextFields:snapshot_tests_test_bundle
//components/TextFields:unit_test_sources
//components/TextFields:unit_test_swift_sources
//components/TextFields:unit_tests
//components/TextFields:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/TextFields:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/TextFields:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/TextFields:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/TextFields:unit_tests_IPHONE_5_IN_8_1
//components/TextFields:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/TextFields:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/TextFields:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/TextFields:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/TextFields:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/TextFields:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/TextFields:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/TextFields:unit_tests_IPHONE_X_IN_11_0
//components/TextFields:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/TextFields:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/TextFields:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Themes:Themes
//components/Themes:unit_test_sources
//components/Themes:unit_tests
//components/Themes:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Themes:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Themes:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Themes:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Themes:unit_tests_IPHONE_5_IN_8_1
//components/Themes:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Themes:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Themes:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Themes:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Themes:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Themes:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Themes:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Themes:unit_tests_IPHONE_X_IN_11_0
//components/Themes:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Themes:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Themes:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/Typography:ObjcExamples
//components/Typography:SwiftExamples
//components/Typography:Typography
//components/Typography:private
//components/Typography:unit_test_sources
//components/Typography:unit_tests
//components/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Typography:unit_tests_IPHONE_5_IN_8_1
//components/Typography:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/Typography:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/Typography:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Typography:unit_tests_IPHONE_X_IN_11_0
//components/Typography:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/Typography:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/Typography:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/private/ThumbTrack:ThumbTrack
//components/private/ThumbTrack:private_headers
//components/private/ThumbTrack:unit_test_sources
//components/private/ThumbTrack:unit_tests
//components/private/ThumbTrack:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/private/ThumbTrack:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/private/ThumbTrack:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/private/ThumbTrack:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/private/ThumbTrack:unit_tests_IPHONE_5_IN_8_1
//components/private/ThumbTrack:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/private/ThumbTrack:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/private/ThumbTrack:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/private/ThumbTrack:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/private/ThumbTrack:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/private/ThumbTrack:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/private/ThumbTrack:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/private/ThumbTrack:unit_tests_IPHONE_X_IN_11_0
//components/private/ThumbTrack:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/private/ThumbTrack:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/private/ThumbTrack:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/schemes/Container:Container
//components/schemes/Container:unit_test_sources
//components/schemes/Container:unit_tests
//components/schemes/Container:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/schemes/Container:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/schemes/Container:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/schemes/Container:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/schemes/Container:unit_tests_IPHONE_5_IN_8_1
//components/schemes/Container:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/schemes/Container:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/schemes/Container:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/schemes/Container:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/schemes/Container:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/schemes/Container:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/schemes/Container:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/schemes/Container:unit_tests_IPHONE_X_IN_11_0
//components/schemes/Container:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/schemes/Container:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/schemes/Container:unit_tests_IPHONE_X_IN_11_0_test_bundle
//components/schemes/Shape:ObjcExamples
//components/schemes/Typography:ObjcExamples
//components/schemes/Typography:Typography
//components/schemes/Typography:unit_test_sources
//components/schemes/Typography:unit_tests
//components/schemes/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/schemes/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3.swift_runtime_linkopts
//components/schemes/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3_test_binary
//components/schemes/Typography:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/schemes/Typography:unit_tests_IPHONE_5_IN_8_1
//components/schemes/Typography:unit_tests_IPHONE_5_IN_8_1.swift_runtime_linkopts
//components/schemes/Typography:unit_tests_IPHONE_5_IN_8_1_test_binary
//components/schemes/Typography:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/schemes/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/schemes/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3.swift_runtime_linkopts
//components/schemes/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3_test_binary
//components/schemes/Typography:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/schemes/Typography:unit_tests_IPHONE_X_IN_11_0
//components/schemes/Typography:unit_tests_IPHONE_X_IN_11_0.swift_runtime_linkopts
//components/schemes/Typography:unit_tests_IPHONE_X_IN_11_0_test_binary
//components/schemes/Typography:unit_tests_IPHONE_X_IN_11_0_test_bundle

@material-automation
Copy link

This PR affects multiple components.

@ianegordon
Copy link
Contributor Author

ianegordon commented Mar 7, 2019

:/ In this particular case, Kokoro is slightly less than informative.

ci-error

I propose we merge, barring other comments / concerns / questions.
I may be biased :)

@yarneo
Copy link
Contributor

yarneo commented Mar 7, 2019

The reason why it is failing:

Test Case '-[MDCAlertControllerTypographyThemerTests testApplyingTypographyScheme]' started.
components/Dialogs/tests/unit/MDCAlertControllerTypographyThemerTests.m:35: error: -[MDCAlertControllerTypographyThemerTests testApplyingTypographyScheme] : ((view.titleLabel.font) equal to (typographyScheme.headline6)) failed: ("<900644f5 bf7f0000>") is not equal to ("<20f177f5 bf7f0000>")
Test Case '-[MDCAlertControllerTypographyThemerTests testApplyingTypographyScheme]' failed (0.002 seconds).
Test Suite 'MDCAlertControllerTypographyThemerTests' failed at 2019-03-06 19:00:51.566.
	 Executed 1 test, with 1 failure (0 unexpected) in 0.002 (0.002) seconds
Test Suite 'unit_tests_IPHONE_X_IN_11_0.xctest' failed at 2019-03-06 19:00:51.566.
	 Executed 41 tests, with 1 failure (0 unexpected) in 0.217 (0.221) seconds
Test Suite 'All tests' failed at 2019-03-06 19:00:51.566.
	 Executed 41 tests, with 1 failure (0 unexpected) in 0.217 (0.222) seconds

Let me know if I can help with anything

@ianegordon
Copy link
Contributor Author

Strange,... let's take a look tomorrow.

@romoore romoore added the kokoro:force-run Restart the kokoro jobs for this PR. label Mar 7, 2019
@romoore
Copy link
Contributor

romoore commented Mar 7, 2019

Rerunning kokoro jobs since they seemed to be marked passing this morning but @ianegordon and @yarneo saw failures.

@kokoro-team kokoro-team removed the kokoro:force-run Restart the kokoro jobs for this PR. label Mar 7, 2019
@romoore
Copy link
Contributor

romoore commented Mar 7, 2019

Looks like the test failure was a result of a bad test assertion. It was using XCTAssertEqual instead of XCTAssertEqualObjects to compare two UIFont objects.

romoore pushed a commit that referenced this pull request Mar 7, 2019
Several unit tests were using identity comparison operations
(`XCTAssertEqual`) instead of equality comparison (`XCTAssertEqualObjects`).
Because UIFont supports `NSCopying`, assigning a UIFont to a `copy` property
can result in a copied object.

Unit tests seemed to flake sometimes, most recently in a Pull Request for
Dynamic Type (#6733).

QA=Unit tests pass
@material-automation
Copy link

This PR affects multiple components.

@ianegordon
Copy link
Contributor Author

Travis returned one pass and two timeouts.
I'm willing to submit with those numbers if you +1 the PR.

// If you have queried the table for a sizeCategory that doesn't exist, we will return the
// traits for XXXL. This handles the case where the values are requested for one of the
// accessibility size categories beyond XXXL such as
// UIContentSizeCategoryAccessibilityExtraLarge. Accessbility size categories are only
Copy link
Contributor

@jverkoey jverkoey Mar 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment + comment hints at some brittleness here; e.g. what if a custom scaling curve value is missing?

If there is no font size defined for a given scaling curve I'd expect the font not to be adjusted at all; is it possible for us to go with a behavior like that and delete this comment + subsequent code?

  if (fontSizeNumber == nil) {
    fontSizeNumber = self.mdc_scalingCurve[UIContentSizeCategoryExtraExtraExtraLarge];
  }

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A scaling curve should be complete. By complete I mean containing values for all sizes from XXS to XXXL. The accessibility values are optional, which is why there is the fallback behavior of returning XXXL. This matches Apple's previous behavior of only scaling body past XXXL. I'd be happy to change the definition of complete to mean containing values for all sizes from XXS - AXXXL. (Standard Size categories & A11y extensions) This would remove the need for fallback behavior.
I think it is acceptable to throw an exception if a curve is missing a size category.
Thoughts?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we enforce this by creating an object with nonnull properties for each of the expected values, rather than a dictionary? I think this would simultaneously make the code less brittle while also allowing us to encourage good practice when using these APIs.

In other words, instead of using a NSDictionary<NSString *, NSNumber *> as the internal storage, turn that into an object that can be used to store well-typed nonnull values.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be (overly?) specific the key in the dictionary is a UIContentSizeCategory, which admittedly is an NSString * :) But NSDictionary<UIContentSizeCategory, NSNumber *> has a lot more context than a vanilla NSString * key.

At some point we are going to have to convert from a UIContentSizeCategory to a CGFloat. If history indicates we are the only people who will be making these curves. I'm confident that an NSDictionary is as simple as possible and will be easily understood by future devs. We do give up some safety, but I think the balance is right.

components/Typography/src/UIFont+MaterialScalable.m Outdated Show resolved Hide resolved
components/Typography/src/UIFont+MaterialScalable.m Outdated Show resolved Hide resolved
@material-automation
Copy link

This PR affects multiple components.

@material-automation
Copy link

This PR affects multiple components.

@ianegordon
Copy link
Contributor Author

Merging w/o Travis +1 since it has been timing out recently.
All tests pass locally on Xcode 10.1.

@ianegordon ianegordon merged commit 648f249 into develop Mar 8, 2019
@romoore
Copy link
Contributor

romoore commented Mar 9, 2019

@ianegordon You don't need to wait for Travis-CI or any non-Required checks. Some of those are there because they can be helpful or for testing.

ianegordon pushed a commit that referenced this pull request Mar 12, 2019
jverkoey pushed a commit that referenced this pull request Mar 12, 2019
jverkoey pushed a commit that referenced this pull request Mar 12, 2019
jverkoey added a commit that referenced this pull request Mar 13, 2019
Prior to this change, `./scripts/release notes` would consider commits that affected our snapshot goldens (found in `snapshot_test_goldens` as multi-component changes.

After this change, snapshot tests that change our goldens are properly bucketed in the relevant component.

## Before

```
## Changes

### ActionSheet

* [Fixes broken action sheet tests. (#6743)](fbcf524) (Robert Moore)

### BottomNavigation

* [Clean up internal constants (#6834)](585a5f4) (Robert Moore)
* [Examples clean-up. (#6718)](10ed618) (Robert Moore)
* [Prevents the client from setting the navigation items directly when using the bottom navigation bar controller. (#6773)](d049bc8) (Eric Lee)

### Buttons

* [Allow setting `accessibilityTraits`. (#6766)](66c4664) (Robert Moore)

### Collections

* [Clean up interface by removing NS_REQUIRES_SUPER (#6788)](921ad6e) (dmaclach)

### Ripple

* [Added a fix for the ripple sometimes blinking when ending animation (#6792)](6f51d26) (Yarden Eitan)
* [update docs (#6772)](c2e912d) (Yarden Eitan)

### Snackbar

* [Make initialization threadsafe. (#6768)](530c7b9) (Robert Moore)

### Tabs

* [Fix badge text truncation bug in MDCItemBarCell (#6786)](188f05a) (Andrew Overton)

## Multi-component changes

* [Add basic Snapshot tests (#6826)](2e5df05) (Robert Moore)
* [Add basic Snapshot tests. (#6801)](dd363f1) (Robert Moore)
* [Add basic Snapshot tests. (#6821)](b1cab54) (Robert Moore)
* [Add basic Snapshot tests. (#6823)](1d058b1) (Robert Moore)
* [Add basic Snapshot tests. (#6824)](951cc57) (Robert Moore)
* [Add basic Snapshot tests. (#6825)](018e72e) (Robert Moore)
* [Add basic Snapshot tests. (#6828)](3290460) (Robert Moore)
* [Add basic snapshot tests. (#6822)](9e8fdc2) (Robert Moore)
* [Dynamic Type 2.0 (#6733)](648f249) (ianegordon)
* [Enable -Wunguarded-availability. (#6776)](f17b01c) (featherless)
* [Revert "[Typography] Dynamic Type 2.0 (#6733)" (#6848)](7f52f35) (ianegordon)
* [{Tests} Fix font comparison in Objective-C. (#6789)](3447c7b) (Robert Moore)
```

## After

```
## Changes

### ActionSheet

* [Fixes broken action sheet tests. (#6743)](fbcf524) (Robert Moore)

### ActivityIndicator

* [Add basic Snapshot tests (#6826)](2e5df05) (Robert Moore)

### BottomNavigation

* [Clean up internal constants (#6834)](585a5f4) (Robert Moore)
* [Examples clean-up. (#6718)](10ed618) (Robert Moore)
* [Prevents the client from setting the navigation items directly when using the bottom navigation bar controller. (#6773)](d049bc8) (Eric Lee)

### Buttons

* [Allow setting `accessibilityTraits`. (#6766)](66c4664) (Robert Moore)

### Collections

* [Clean up interface by removing NS_REQUIRES_SUPER (#6788)](921ad6e) (dmaclach)

### List

* [Add basic snapshot tests. (#6822)](9e8fdc2) (Robert Moore)

### NavigationBar

* [Add basic Snapshot tests. (#6821)](b1cab54) (Robert Moore)

### PageControl

* [Add basic Snapshot tests. (#6823)](1d058b1) (Robert Moore)

### ProgressView

* [Add basic Snapshot tests. (#6825)](018e72e) (Robert Moore)

### Ripple

* [Added a fix for the ripple sometimes blinking when ending animation (#6792)](6f51d26) (Yarden Eitan)
* [update docs (#6772)](c2e912d) (Yarden Eitan)

### Snackbar

* [Add basic Snapshot tests. (#6824)](951cc57) (Robert Moore)
* [Make initialization threadsafe. (#6768)](530c7b9) (Robert Moore)

### Tabs

* [Add basic Snapshot tests. (#6801)](dd363f1) (Robert Moore)
* [Fix badge text truncation bug in MDCItemBarCell (#6786)](188f05a) (Andrew Overton)

### Typography

* [Add basic Snapshot tests. (#6828)](3290460) (Robert Moore)

## Multi-component changes

* [Dynamic Type 2.0 (#6733)](648f249) (ianegordon)
* [Enable -Wunguarded-availability. (#6776)](f17b01c) (featherless)
* [Revert "[Typography] Dynamic Type 2.0 (#6733)" (#6848)](7f52f35) (ianegordon)
* [{Tests} Fix font comparison in Objective-C. (#6789)](3447c7b) (Robert Moore)
```
jverkoey added a commit that referenced this pull request Mar 13, 2019
Prior to this change, `./scripts/release notes` would consider commits that affected our snapshot goldens (found in `snapshot_test_goldens` as multi-component changes.

After this change, snapshot tests that change our goldens are properly bucketed in the relevant component.

## Before

```
## Changes

### ActionSheet

* [Fixes broken action sheet tests. (#6743)](fbcf524) (Robert Moore)

### BottomNavigation

* [Clean up internal constants (#6834)](585a5f4) (Robert Moore)
* [Examples clean-up. (#6718)](10ed618) (Robert Moore)
* [Prevents the client from setting the navigation items directly when using the bottom navigation bar controller. (#6773)](d049bc8) (Eric Lee)

### Buttons

* [Allow setting `accessibilityTraits`. (#6766)](66c4664) (Robert Moore)

### Collections

* [Clean up interface by removing NS_REQUIRES_SUPER (#6788)](921ad6e) (dmaclach)

### Ripple

* [Added a fix for the ripple sometimes blinking when ending animation (#6792)](6f51d26) (Yarden Eitan)
* [update docs (#6772)](c2e912d) (Yarden Eitan)

### Snackbar

* [Make initialization threadsafe. (#6768)](530c7b9) (Robert Moore)

### Tabs

* [Fix badge text truncation bug in MDCItemBarCell (#6786)](188f05a) (Andrew Overton)

## Multi-component changes

* [Add basic Snapshot tests (#6826)](2e5df05) (Robert Moore)
* [Add basic Snapshot tests. (#6801)](dd363f1) (Robert Moore)
* [Add basic Snapshot tests. (#6821)](b1cab54) (Robert Moore)
* [Add basic Snapshot tests. (#6823)](1d058b1) (Robert Moore)
* [Add basic Snapshot tests. (#6824)](951cc57) (Robert Moore)
* [Add basic Snapshot tests. (#6825)](018e72e) (Robert Moore)
* [Add basic Snapshot tests. (#6828)](3290460) (Robert Moore)
* [Add basic snapshot tests. (#6822)](9e8fdc2) (Robert Moore)
* [Dynamic Type 2.0 (#6733)](648f249) (ianegordon)
* [Enable -Wunguarded-availability. (#6776)](f17b01c) (featherless)
* [Revert "[Typography] Dynamic Type 2.0 (#6733)" (#6848)](7f52f35) (ianegordon)
* [{Tests} Fix font comparison in Objective-C. (#6789)](3447c7b) (Robert Moore)
```

## After

```
## Changes

### ActionSheet

* [Fixes broken action sheet tests. (#6743)](fbcf524) (Robert Moore)

### ActivityIndicator

* [Add basic Snapshot tests (#6826)](2e5df05) (Robert Moore)

### BottomNavigation

* [Clean up internal constants (#6834)](585a5f4) (Robert Moore)
* [Examples clean-up. (#6718)](10ed618) (Robert Moore)
* [Prevents the client from setting the navigation items directly when using the bottom navigation bar controller. (#6773)](d049bc8) (Eric Lee)

### Buttons

* [Allow setting `accessibilityTraits`. (#6766)](66c4664) (Robert Moore)

### Collections

* [Clean up interface by removing NS_REQUIRES_SUPER (#6788)](921ad6e) (dmaclach)

### List

* [Add basic snapshot tests. (#6822)](9e8fdc2) (Robert Moore)

### NavigationBar

* [Add basic Snapshot tests. (#6821)](b1cab54) (Robert Moore)

### PageControl

* [Add basic Snapshot tests. (#6823)](1d058b1) (Robert Moore)

### ProgressView

* [Add basic Snapshot tests. (#6825)](018e72e) (Robert Moore)

### Ripple

* [Added a fix for the ripple sometimes blinking when ending animation (#6792)](6f51d26) (Yarden Eitan)
* [update docs (#6772)](c2e912d) (Yarden Eitan)

### Snackbar

* [Add basic Snapshot tests. (#6824)](951cc57) (Robert Moore)
* [Make initialization threadsafe. (#6768)](530c7b9) (Robert Moore)

### Tabs

* [Add basic Snapshot tests. (#6801)](dd363f1) (Robert Moore)
* [Fix badge text truncation bug in MDCItemBarCell (#6786)](188f05a) (Andrew Overton)

### Typography

* [Add basic Snapshot tests. (#6828)](3290460) (Robert Moore)

## Multi-component changes

* [Dynamic Type 2.0 (#6733)](648f249) (ianegordon)
* [Enable -Wunguarded-availability. (#6776)](f17b01c) (featherless)
* [Revert "[Typography] Dynamic Type 2.0 (#6733)" (#6848)](7f52f35) (ianegordon)
* [{Tests} Fix font comparison in Objective-C. (#6789)](3447c7b) (Robert Moore)
```
@romoore romoore deleted the feature-dt2 branch April 18, 2019 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
10 participants