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

Commit a6adf29

Browse files
author
Emmanuel Garcia
committed
Use gmock
1 parent 424426c commit a6adf29

File tree

13 files changed

+277
-310
lines changed

13 files changed

+277
-310
lines changed

shell/gpu/gpu_surface_gl_delegate.cc

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -29,62 +29,62 @@ GPUSurfaceGLDelegate::GLProcResolver GPUSurfaceGLDelegate::GetGLProcResolver()
2929
return nullptr;
3030
}
3131

32-
static bool IsProcResolverOpenGLES(
33-
GPUSurfaceGLDelegate::GLProcResolver proc_resolver) {
34-
// Version string prefix that identifies an OpenGL ES implementation.
35-
#define GPU_GL_VERSION 0x1F02
36-
constexpr char kGLESVersionPrefix[] = "OpenGL ES";
32+
// static bool IsProcResolverOpenGLES(
33+
// GPUSurfaceGLDelegate::GLProcResolver proc_resolver) {
34+
// // Version string prefix that identifies an OpenGL ES implementation.
35+
// #define GPU_GL_VERSION 0x1F02
36+
// constexpr char kGLESVersionPrefix[] = "OpenGL ES";
3737

38-
using GLGetStringProc = const char* (*)(uint32_t);
38+
// using GLGetStringProc = const char* (*)(uint32_t);
3939

40-
GLGetStringProc gl_get_string =
41-
reinterpret_cast<GLGetStringProc>(proc_resolver("glGetString"));
40+
// GLGetStringProc gl_get_string =
41+
// reinterpret_cast<GLGetStringProc>(proc_resolver("glGetString"));
4242

43-
FML_CHECK(gl_get_string)
44-
<< "The GL proc resolver could not resolve glGetString";
43+
// FML_CHECK(gl_get_string)
44+
// << "The GL proc resolver could not resolve glGetString";
4545

46-
const char* gl_version_string = gl_get_string(GPU_GL_VERSION);
46+
// const char* gl_version_string = gl_get_string(GPU_GL_VERSION);
4747

48-
FML_CHECK(gl_version_string)
49-
<< "The GL proc resolver's glGetString(GL_VERSION) failed";
48+
// FML_CHECK(gl_version_string)
49+
// << "The GL proc resolver's glGetString(GL_VERSION) failed";
5050

51-
return strncmp(gl_version_string, kGLESVersionPrefix,
52-
strlen(kGLESVersionPrefix)) == 0;
53-
}
51+
// return strncmp(gl_version_string, kGLESVersionPrefix,
52+
// strlen(kGLESVersionPrefix)) == 0;
53+
// }
5454

5555
static sk_sp<const GrGLInterface> CreateGLInterface(
5656
GPUSurfaceGLDelegate::GLProcResolver proc_resolver) {
57-
if (proc_resolver == nullptr) {
58-
// If there is no custom proc resolver, ask Skia to guess the native
59-
// interface. This often leads to interesting results on most platforms.
60-
return GrGLMakeNativeInterface();
61-
}
62-
63-
struct ProcResolverContext {
64-
GPUSurfaceGLDelegate::GLProcResolver resolver;
65-
};
66-
67-
ProcResolverContext context = {proc_resolver};
68-
69-
GrGLGetProc gl_get_proc = [](void* context,
70-
const char gl_proc_name[]) -> GrGLFuncPtr {
71-
auto proc_resolver_context =
72-
reinterpret_cast<ProcResolverContext*>(context);
73-
return reinterpret_cast<GrGLFuncPtr>(
74-
proc_resolver_context->resolver(gl_proc_name));
75-
};
76-
77-
// glGetString indicates an OpenGL ES interface.
78-
if (IsProcResolverOpenGLES(proc_resolver)) {
79-
return GrGLMakeAssembledGLESInterface(&context, gl_get_proc);
80-
}
81-
82-
// Fallback to OpenGL.
83-
if (auto interface = GrGLMakeAssembledGLInterface(&context, gl_get_proc)) {
84-
return interface;
85-
}
86-
87-
FML_LOG(ERROR) << "Could not create a valid GL interface.";
57+
// if (proc_resolver == nullptr) {
58+
// // If there is no custom proc resolver, ask Skia to guess the native
59+
// // interface. This often leads to interesting results on most platforms.
60+
// return GrGLMakeNativeInterface();
61+
// }
62+
63+
// struct ProcResolverContext {
64+
// GPUSurfaceGLDelegate::GLProcResolver resolver;
65+
// };
66+
67+
// ProcResolverContext context = {proc_resolver};
68+
69+
// GrGLGetProc gl_get_proc = [](void* context,
70+
// const char gl_proc_name[]) -> GrGLFuncPtr {
71+
// auto proc_resolver_context =
72+
// reinterpret_cast<ProcResolverContext*>(context);
73+
// return reinterpret_cast<GrGLFuncPtr>(
74+
// proc_resolver_context->resolver(gl_proc_name));
75+
// };
76+
77+
// // glGetString indicates an OpenGL ES interface.
78+
// if (IsProcResolverOpenGLES(proc_resolver)) {
79+
// return GrGLMakeAssembledGLESInterface(&context, gl_get_proc);
80+
// }
81+
82+
// // Fallback to OpenGL.
83+
// if (auto interface = GrGLMakeAssembledGLInterface(&context, gl_get_proc)) {
84+
// return interface;
85+
// }
86+
87+
// FML_LOG(ERROR) << "Could not create a valid GL interface.";
8888
return nullptr;
8989
}
9090

shell/platform/android/external_view_embedder/BUILD.gn

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,12 @@ executable("android_external_view_embedder_unittests") {
4141
deps = [
4242
":external_view_embedder",
4343
":external_view_embedder_fixtures",
44+
"//flutter/shell/gpu:gpu_surface_gl",
4445
"//flutter/shell/platform/android/jni:mock_jni",
4546
"//flutter/shell/platform/android/surface:mock_surface",
4647
"//flutter/testing",
4748
"//flutter/testing:dart",
4849
"//flutter/testing:skia",
50+
"//third_party/googletest:gmock",
4951
]
5052
}

shell/platform/android/external_view_embedder/external_view_embedder.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ void AndroidExternalViewEmbedder::BeginFrame(SkISize frame_size,
240240
Reset();
241241
frame_size_ = frame_size;
242242
device_pixel_ratio_ = device_pixel_ratio;
243+
jni_facade_->FlutterViewBeginFrame();
243244
}
244245

245246
// |ExternalViewEmbedder|
@@ -254,6 +255,7 @@ void AndroidExternalViewEmbedder::EndFrame(
254255
raster_thread_merger->MergeWithLease(kDefaultMergedLeaseDuration);
255256
should_run_rasterizer_on_platform_thread_ = false;
256257
}
258+
jni_facade_->FlutterViewEndFrame();
257259
}
258260

259261
} // namespace flutter

shell/platform/android/external_view_embedder/external_view_embedder_unittests.cc

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,22 @@
55
#include "flutter/fml/raster_thread_merger.h"
66
#include "flutter/fml/thread.h"
77
#include "flutter/shell/platform/android/external_view_embedder/external_view_embedder.h"
8+
#include "flutter/shell/platform/android/jni/mock_jni.h"
9+
#include "gmock/gmock.h"
810
#include "gtest/gtest.h"
911

1012
namespace flutter {
1113
namespace testing {
1214

15+
using ::testing::Mock;
16+
1317
TEST(AndroidExternalViewEmbedder, GetCurrentCanvases) {
14-
auto embedder = new AndroidExternalViewEmbedder(nullptr, nullptr, nullptr);
18+
auto mock_jni = std::make_shared<MockJNI>();
19+
20+
EXPECT_CALL(*mock_jni, FlutterViewBeginFrame());
1521

22+
auto embedder =
23+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, mock_jni, nullptr);
1624
embedder->BeginFrame(SkISize::Make(10, 20), nullptr, 1.0);
1725

1826
embedder->PrerollCompositeEmbeddedView(
@@ -26,8 +34,28 @@ TEST(AndroidExternalViewEmbedder, GetCurrentCanvases) {
2634
ASSERT_EQ(SkISize::Make(10, 20), canvases[1]->getBaseLayerSize());
2735
}
2836

37+
TEST(AndroidExternalViewEmbedder, GetCurrentCanvases__CompositeOrder) {
38+
auto mock_jni = std::make_shared<MockJNI>();
39+
EXPECT_CALL(*mock_jni, FlutterViewBeginFrame());
40+
41+
auto embedder =
42+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, mock_jni, nullptr);
43+
embedder->BeginFrame(SkISize::Make(10, 20), nullptr, 1.0);
44+
45+
embedder->PrerollCompositeEmbeddedView(
46+
0, std::make_unique<EmbeddedViewParams>());
47+
embedder->PrerollCompositeEmbeddedView(
48+
1, std::make_unique<EmbeddedViewParams>());
49+
50+
auto canvases = embedder->GetCurrentCanvases();
51+
ASSERT_EQ(2UL, canvases.size());
52+
ASSERT_EQ(embedder->CompositeEmbeddedView(0), canvases[0]);
53+
ASSERT_EQ(embedder->CompositeEmbeddedView(1), canvases[1]);
54+
}
55+
2956
TEST(AndroidExternalViewEmbedder, CompositeEmbeddedView) {
30-
auto embedder = new AndroidExternalViewEmbedder(nullptr, nullptr, nullptr);
57+
auto embedder =
58+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, nullptr, nullptr);
3159

3260
ASSERT_EQ(nullptr, embedder->CompositeEmbeddedView(0));
3361
embedder->PrerollCompositeEmbeddedView(
@@ -41,7 +69,8 @@ TEST(AndroidExternalViewEmbedder, CompositeEmbeddedView) {
4169
}
4270

4371
TEST(AndroidExternalViewEmbedder, CancelFrame) {
44-
auto embedder = new AndroidExternalViewEmbedder(nullptr, nullptr, nullptr);
72+
auto embedder =
73+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, nullptr, nullptr);
4574

4675
embedder->PrerollCompositeEmbeddedView(
4776
0, std::make_unique<EmbeddedViewParams>());
@@ -52,7 +81,12 @@ TEST(AndroidExternalViewEmbedder, CancelFrame) {
5281
}
5382

5483
TEST(AndroidExternalViewEmbedder, RasterizerRunsOnPlatformThread) {
55-
auto embedder = new AndroidExternalViewEmbedder(nullptr, nullptr, nullptr);
84+
auto mock_jni = std::make_shared<MockJNI>();
85+
EXPECT_CALL(*mock_jni, FlutterViewBeginFrame());
86+
EXPECT_CALL(*mock_jni, FlutterViewEndFrame());
87+
88+
auto embedder =
89+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, mock_jni, nullptr);
5690
auto platform_thread = new fml::Thread("platform");
5791
auto rasterizer_thread = new fml::Thread("rasterizer");
5892
auto platform_queue_id = platform_thread->GetTaskRunner()->GetTaskQueueId();
@@ -84,7 +118,11 @@ TEST(AndroidExternalViewEmbedder, RasterizerRunsOnPlatformThread) {
84118
}
85119

86120
TEST(AndroidExternalViewEmbedder, RasterizerRunsOnRasterizerThread) {
87-
auto embedder = new AndroidExternalViewEmbedder(nullptr, nullptr, nullptr);
121+
auto mock_jni = std::make_shared<MockJNI>();
122+
EXPECT_CALL(*mock_jni, FlutterViewEndFrame());
123+
124+
auto embedder =
125+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, mock_jni, nullptr);
88126
auto platform_thread = new fml::Thread("platform");
89127
auto rasterizer_thread = new fml::Thread("rasterizer");
90128
auto platform_queue_id = platform_thread->GetTaskRunner()->GetTaskQueueId();
@@ -103,7 +141,11 @@ TEST(AndroidExternalViewEmbedder, RasterizerRunsOnRasterizerThread) {
103141
}
104142

105143
TEST(AndroidExternalViewEmbedder, PlatformViewRect) {
106-
auto embedder = new AndroidExternalViewEmbedder(nullptr, nullptr, nullptr);
144+
auto mock_jni = std::make_shared<MockJNI>();
145+
EXPECT_CALL(*mock_jni, FlutterViewBeginFrame());
146+
147+
auto embedder =
148+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, mock_jni, nullptr);
107149
embedder->BeginFrame(SkISize::Make(100, 100), nullptr, 1.5);
108150

109151
auto view_params = std::make_unique<EmbeddedViewParams>();
@@ -116,7 +158,11 @@ TEST(AndroidExternalViewEmbedder, PlatformViewRect) {
116158
}
117159

118160
TEST(AndroidExternalViewEmbedder, PlatformViewRect__ChangedParams) {
119-
auto embedder = new AndroidExternalViewEmbedder(nullptr, nullptr, nullptr);
161+
auto mock_jni = std::make_shared<MockJNI>();
162+
EXPECT_CALL(*mock_jni, FlutterViewBeginFrame());
163+
164+
auto embedder =
165+
std::make_unique<AndroidExternalViewEmbedder>(nullptr, mock_jni, nullptr);
120166
embedder->BeginFrame(SkISize::Make(100, 100), nullptr, 1.5);
121167

122168
auto view_id = 0;

0 commit comments

Comments
 (0)