Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

@cbracken
Copy link
Member

@cbracken cbracken commented Nov 19, 2024

In many embedder tests, we want to get at the appropriate backend-specific EmbedderTestContext subclass (EmbedderTestContextGL, etc.) in order to make backend-specific setup calls such as SetGLFBOCallback() or others. Formerly, this required casting the returned EmbedderTestContext& to the appropriate subclass in each test.

This templatises the GetEmbedderContext() method to return the appropriate backend-specific subclass directly.

Issue: flutter/flutter#158998

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

TEST_F(EmbedderTest, TextureDestructionCallbackCalledWithoutCustomCompositorMetal) {
EmbedderTestContextMetal& context = reinterpret_cast<EmbedderTestContextMetal&>(
GetEmbedderContext(EmbedderTestContextType::kMetalContext));
auto& context = GetEmbedderContext<EmbedderTestContextMetal>();
Copy link
Member Author

@cbracken cbracken Nov 19, 2024

Choose a reason for hiding this comment

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

Getting rid of the sort of cast in the old code was the goal here.

template <>
EmbedderTestContextVulkan& GetEmbedderContext<EmbedderTestContextVulkan>() {
return reinterpret_cast<EmbedderTestContextVulkan&>(GetVulkanContext());
}
Copy link
Member Author

Choose a reason for hiding this comment

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

Alright we still need some sneaky casts in the template specialisations here... but they're nice and hidden away.

In many embedder tests, we want to get at the appropriate
backend-specific EmbedderTestContext subclass in order to make
backend-specific setup calls such as `SetGLFBOCallback()` or others.
Formerly, this required casting the returned EmbedderTestContext& to the
appropriate subclass in each test.

This templatises the GetEmbedderContext() method to return the
appropriate backend-specific subclass directly.

Issue: flutter/flutter#158998
Copy link
Contributor

@jonahwilliams jonahwilliams left a comment

Choose a reason for hiding this comment

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

RSLGTM

@cbracken cbracken added autosubmit Merge PR when tree becomes green via auto submit App and removed autosubmit Merge PR when tree becomes green via auto submit App labels Nov 19, 2024
Copy link
Member

@loic-sharma loic-sharma left a comment

Choose a reason for hiding this comment

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

LGTM!

@cbracken cbracken added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 19, 2024
@auto-submit auto-submit bot merged commit 7eb8754 into flutter:main Nov 19, 2024
31 checks passed
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Nov 19, 2024
@cbracken cbracken deleted the templatized-getcontext branch November 19, 2024 20:22
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 19, 2024
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Nov 19, 2024
…159168)

flutter/engine@4ff696b...7eb8754

2024-11-19 [email protected] EmbedderTest: templatise GetEmbedderContext
(flutter/engine#56709)
2024-11-19 [email protected] display_list: Extract backend-specific
surface providers (flutter/engine#56711)
2024-11-19 [email protected] Roll Skia from 78ef6b7a574f to
a694b9e85a49 (5 revisions) (flutter/engine#56713)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected] on the revert to ensure
that a human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
nick9822 pushed a commit to nick9822/flutter that referenced this pull request Dec 18, 2024
In many embedder tests, we want to get at the appropriate backend-specific `EmbedderTestContext` subclass (`EmbedderTestContextGL`, etc.) in order to make backend-specific setup calls such as `SetGLFBOCallback()` or others. Formerly, this required casting the returned `EmbedderTestContext&` to the appropriate subclass in each test.

This templatises the `GetEmbedderContext()` method to return the appropriate backend-specific subclass directly.

Issue: flutter#158998

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants