Skip to content

Commit 8760216

Browse files
Update Transaction::setInputWindowInfo to take WindowInfoHandle
This change allows us to reuse WindowInfoHandle objects instead of allocating a new WindowInfoHandle object for each call. Bug: 294381558 Flag: EXEMPT refactor Test: presubmits Change-Id: I39d965217763a9cacfc9e77d0723200038fd2afe
1 parent d862b2c commit 8760216

5 files changed

Lines changed: 82 additions & 68 deletions

File tree

libs/gui/SurfaceComposerClient.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2129,13 +2129,13 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::notifyPr
21292129
}
21302130

21312131
SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setInputWindowInfo(
2132-
const sp<SurfaceControl>& sc, const WindowInfo& info) {
2132+
const sp<SurfaceControl>& sc, sp<WindowInfoHandle> info) {
21332133
layer_state_t* s = getLayerState(sc);
21342134
if (!s) {
21352135
mStatus = BAD_INDEX;
21362136
return *this;
21372137
}
2138-
s->windowInfoHandle = new WindowInfoHandle(info);
2138+
s->windowInfoHandle = std::move(info);
21392139
s->what |= layer_state_t::eInputInfoChanged;
21402140
return *this;
21412141
}

libs/gui/include/gui/SurfaceComposerClient.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,8 @@ class SurfaceComposerClient : public RefBase
687687
// ONLY FOR BLAST ADAPTER
688688
Transaction& notifyProducerDisconnect(const sp<SurfaceControl>& sc);
689689

690-
Transaction& setInputWindowInfo(const sp<SurfaceControl>& sc, const gui::WindowInfo& info);
690+
Transaction& setInputWindowInfo(const sp<SurfaceControl>& sc,
691+
sp<gui::WindowInfoHandle> info);
691692
Transaction& setFocusedWindow(const gui::FocusRequest& request);
692693

693694
Transaction& addWindowInfosReportedListener(

libs/gui/tests/EndToEndNativeInputTest.cpp

Lines changed: 59 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ class InputSurface {
112112

113113
mInputFlinger = getInputFlinger();
114114
if (noInputChannel) {
115-
mInputInfo.setInputConfig(WindowInfo::InputConfig::NO_INPUT_CHANNEL, true);
115+
mInputInfo->editInfo()->setInputConfig(WindowInfo::InputConfig::NO_INPUT_CHANNEL, true);
116116
} else {
117117
android::os::InputChannelCore tempChannel;
118118
android::binder::Status result =
@@ -121,21 +121,21 @@ class InputSurface {
121121
ADD_FAILURE() << "binder call to createInputChannel failed";
122122
}
123123
mClientChannel = InputChannel::create(std::move(tempChannel));
124-
mInputInfo.token = mClientChannel->getConnectionToken();
124+
mInputInfo->editInfo()->token = mClientChannel->getConnectionToken();
125125
mInputConsumer = new InputConsumer(mClientChannel);
126126
}
127127

128-
mInputInfo.name = "Test info";
129-
mInputInfo.dispatchingTimeout = 5s;
130-
mInputInfo.globalScaleFactor = 1.0;
131-
mInputInfo.touchableRegion.orSelf(Rect(0, 0, width, height));
128+
mInputInfo->editInfo()->name = "Test info";
129+
mInputInfo->editInfo()->dispatchingTimeout = 5s;
130+
mInputInfo->editInfo()->globalScaleFactor = 1.0;
131+
mInputInfo->editInfo()->touchableRegion.orSelf(Rect(0, 0, width, height));
132132

133133
InputApplicationInfo aInfo;
134134
aInfo.token = new BBinder();
135135
aInfo.name = "Test app info";
136136
aInfo.dispatchingTimeoutMillis =
137137
std::chrono::duration_cast<std::chrono::milliseconds>(DISPATCHING_TIMEOUT).count();
138-
mInputInfo.applicationInfo = aInfo;
138+
mInputInfo->editInfo()->applicationInfo = aInfo;
139139
}
140140

141141
static std::unique_ptr<InputSurface> makeColorInputSurface(const sp<SurfaceComposerClient>& scc,
@@ -300,8 +300,8 @@ class InputSurface {
300300
void requestFocus(ui::LogicalDisplayId displayId = ui::LogicalDisplayId::DEFAULT) {
301301
SurfaceComposerClient::Transaction t;
302302
FocusRequest request;
303-
request.token = mInputInfo.token;
304-
request.windowName = mInputInfo.name;
303+
request.token = mInputInfo->getInfo()->token;
304+
request.windowName = mInputInfo->getInfo()->name;
305305
request.timestamp = systemTime(SYSTEM_TIME_MONOTONIC);
306306
request.displayId = displayId.val();
307307
t.setFocusedWindow(request);
@@ -310,7 +310,7 @@ class InputSurface {
310310

311311
public:
312312
// But should be private
313-
WindowInfo mInputInfo;
313+
sp<gui::WindowInfoHandle> mInputInfo = sp<gui::WindowInfoHandle>::make();
314314
sp<SurfaceControl> mSurfaceControl;
315315

316316
private:
@@ -523,7 +523,7 @@ TEST_F(InputSurfacesTest, input_respects_surface_insets) {
523523
std::unique_ptr<InputSurface> fgSurface = makeSurface(100, 100);
524524
bgSurface->showAt(100, 100);
525525

526-
fgSurface->mInputInfo.surfaceInset = 5;
526+
fgSurface->mInputInfo->editInfo()->surfaceInset = 5;
527527
fgSurface->showAt(100, 100);
528528

529529
injectTap(106, 106);
@@ -538,8 +538,8 @@ TEST_F(InputSurfacesTest, input_respects_surface_insets_with_replaceTouchableReg
538538
std::unique_ptr<InputSurface> fgSurface = makeSurface(100, 100);
539539
bgSurface->showAt(100, 100);
540540

541-
fgSurface->mInputInfo.surfaceInset = 5;
542-
fgSurface->mInputInfo.replaceTouchableRegionWithCrop = true;
541+
fgSurface->mInputInfo->editInfo()->surfaceInset = 5;
542+
fgSurface->mInputInfo->editInfo()->replaceTouchableRegionWithCrop = true;
543543
fgSurface->showAt(100, 100);
544544

545545
injectTap(106, 106);
@@ -555,7 +555,7 @@ TEST_F(InputSurfacesTest, input_respects_cropped_surface_insets) {
555555
std::unique_ptr<InputSurface> childSurface = makeSurface(100, 100);
556556
parentSurface->showAt(100, 100);
557557

558-
childSurface->mInputInfo.surfaceInset = 10;
558+
childSurface->mInputInfo->editInfo()->surfaceInset = 10;
559559
childSurface->showAt(100, 100);
560560

561561
childSurface->doTransaction([&](auto& t, auto& sc) {
@@ -576,7 +576,7 @@ TEST_F(InputSurfacesTest, input_respects_scaled_surface_insets) {
576576
std::unique_ptr<InputSurface> fgSurface = makeSurface(100, 100);
577577
bgSurface->showAt(100, 100);
578578

579-
fgSurface->mInputInfo.surfaceInset = 5;
579+
fgSurface->mInputInfo->editInfo()->surfaceInset = 5;
580580
fgSurface->showAt(100, 100);
581581

582582
fgSurface->doTransaction([&](auto& t, auto& sc) { t.setMatrix(sc, 2.0, 0, 0, 4.0); });
@@ -595,7 +595,7 @@ TEST_F(InputSurfacesTest, input_respects_scaled_surface_insets_overflow) {
595595
bgSurface->showAt(100, 100);
596596

597597
// In case we pass the very big inset without any checking.
598-
fgSurface->mInputInfo.surfaceInset = INT32_MAX;
598+
fgSurface->mInputInfo->editInfo()->surfaceInset = INT32_MAX;
599599
fgSurface->showAt(100, 100);
600600

601601
fgSurface->doTransaction([&](auto& t, auto& sc) { t.setMatrix(sc, 2.0, 0, 0, 2.0); });
@@ -608,7 +608,7 @@ TEST_F(InputSurfacesTest, input_respects_scaled_surface_insets_overflow) {
608608
TEST_F(InputSurfacesTest, touchable_region) {
609609
std::unique_ptr<InputSurface> surface = makeSurface(100, 100);
610610

611-
surface->mInputInfo.touchableRegion.set(Rect{19, 29, 21, 31});
611+
surface->mInputInfo->editInfo()->touchableRegion.set(Rect{19, 29, 21, 31});
612612

613613
surface->showAt(11, 22);
614614

@@ -629,7 +629,8 @@ TEST_F(InputSurfacesTest, input_respects_touchable_region_offset_overflow) {
629629
// Since the surface is offset from the origin, the touchable region will be transformed into
630630
// display space, which would trigger an overflow or an underflow. Ensure that we are protected
631631
// against such a situation.
632-
fgSurface->mInputInfo.touchableRegion.orSelf(Rect{INT32_MIN, INT32_MIN, INT32_MAX, INT32_MAX});
632+
fgSurface->mInputInfo->editInfo()->touchableRegion.orSelf(
633+
Rect{INT32_MIN, INT32_MIN, INT32_MAX, INT32_MAX});
633634

634635
fgSurface->showAt(100, 100);
635636

@@ -644,7 +645,8 @@ TEST_F(InputSurfacesTest, input_respects_scaled_touchable_region_overflow) {
644645
std::unique_ptr<InputSurface> fgSurface = makeSurface(100, 100);
645646
bgSurface->showAt(0, 0);
646647

647-
fgSurface->mInputInfo.touchableRegion.orSelf(Rect{INT32_MIN, INT32_MIN, INT32_MAX, INT32_MAX});
648+
fgSurface->mInputInfo->editInfo()->touchableRegion.orSelf(
649+
Rect{INT32_MIN, INT32_MIN, INT32_MAX, INT32_MAX});
648650
fgSurface->showAt(0, 0);
649651

650652
fgSurface->doTransaction([&](auto& t, auto& sc) { t.setMatrix(sc, 2.0, 0, 0, 2.0); });
@@ -814,7 +816,7 @@ TEST_F(InputSurfacesTest, rotate_surface_with_scale) {
814816

815817
TEST_F(InputSurfacesTest, rotate_surface_with_scale_and_insets) {
816818
std::unique_ptr<InputSurface> surface = makeSurface(100, 100);
817-
surface->mInputInfo.surfaceInset = 5;
819+
surface->mInputInfo->editInfo()->surfaceInset = 5;
818820
surface->showAt(100, 100);
819821

820822
surface->doTransaction([](auto& t, auto& sc) {
@@ -843,11 +845,12 @@ TEST_F(InputSurfacesTest, touch_flag_obscured) {
843845
// Add non touchable window to fully cover touchable window. Window behind gets touch, but
844846
// with flag AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED
845847
std::unique_ptr<InputSurface> nonTouchableSurface = makeSurface(100, 100);
846-
nonTouchableSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
847-
nonTouchableSurface->mInputInfo.ownerUid = gui::Uid{22222};
848+
nonTouchableSurface->mInputInfo->editInfo()
849+
->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
850+
nonTouchableSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
848851
// Overriding occlusion mode otherwise the touch would be discarded at InputDispatcher by
849852
// the default obscured/untrusted touch filter introduced in S.
850-
nonTouchableSurface->mInputInfo.touchOcclusionMode = TouchOcclusionMode::ALLOW;
853+
nonTouchableSurface->mInputInfo->editInfo()->touchOcclusionMode = TouchOcclusionMode::ALLOW;
851854
nonTouchableSurface->showAt(100, 100);
852855

853856
injectTap(190, 199);
@@ -863,10 +866,12 @@ TEST_F(InputSurfacesTest, touch_flag_partially_obscured_with_crop) {
863866
// AMOTION_EVENT_FLAG_WINDOW_IS_PARTIALLY_OBSCURED
864867
std::unique_ptr<InputSurface> parentSurface = makeSurface(100, 100);
865868
std::unique_ptr<InputSurface> nonTouchableSurface = makeSurface(100, 100);
866-
nonTouchableSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
867-
parentSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
868-
nonTouchableSurface->mInputInfo.ownerUid = gui::Uid{22222};
869-
parentSurface->mInputInfo.ownerUid = gui::Uid{22222};
869+
nonTouchableSurface->mInputInfo->editInfo()
870+
->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
871+
parentSurface->mInputInfo->editInfo()->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE,
872+
true);
873+
nonTouchableSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
874+
parentSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
870875
nonTouchableSurface->showAt(0, 0);
871876
parentSurface->showAt(100, 100);
872877

@@ -887,10 +892,12 @@ TEST_F(InputSurfacesTest, touch_not_obscured_with_crop) {
887892
// the touchable window. Window behind gets touch with no obscured flags.
888893
std::unique_ptr<InputSurface> parentSurface = makeSurface(100, 100);
889894
std::unique_ptr<InputSurface> nonTouchableSurface = makeSurface(100, 100);
890-
nonTouchableSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
891-
parentSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
892-
nonTouchableSurface->mInputInfo.ownerUid = gui::Uid{22222};
893-
parentSurface->mInputInfo.ownerUid = gui::Uid{22222};
895+
nonTouchableSurface->mInputInfo->editInfo()
896+
->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
897+
parentSurface->mInputInfo->editInfo()->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE,
898+
true);
899+
nonTouchableSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
900+
parentSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
894901
nonTouchableSurface->showAt(0, 0);
895902
parentSurface->showAt(50, 50);
896903

@@ -908,8 +915,9 @@ TEST_F(InputSurfacesTest, touch_not_obscured_with_zero_sized_bql) {
908915

909916
std::unique_ptr<InputSurface> bufferSurface =
910917
InputSurface::makeBufferInputSurface(mComposerClient, 0, 0);
911-
bufferSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
912-
bufferSurface->mInputInfo.ownerUid = gui::Uid{22222};
918+
bufferSurface->mInputInfo->editInfo()->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE,
919+
true);
920+
bufferSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
913921

914922
surface->showAt(10, 10);
915923
bufferSurface->showAt(50, 50, Rect::EMPTY_RECT);
@@ -923,8 +931,9 @@ TEST_F(InputSurfacesTest, touch_not_obscured_with_zero_sized_blast) {
923931

924932
std::unique_ptr<BlastInputSurface> bufferSurface =
925933
BlastInputSurface::makeBlastInputSurface(mComposerClient, 0, 0);
926-
bufferSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
927-
bufferSurface->mInputInfo.ownerUid = gui::Uid{22222};
934+
bufferSurface->mInputInfo->editInfo()->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE,
935+
true);
936+
bufferSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
928937

929938
surface->showAt(10, 10);
930939
bufferSurface->showAt(50, 50, Rect::EMPTY_RECT);
@@ -967,13 +976,14 @@ TEST_F(InputSurfacesTest, strict_unobscured_input_scaled_without_crop_window) {
967976

968977
TEST_F(InputSurfacesTest, strict_unobscured_input_obscured_window) {
969978
std::unique_ptr<InputSurface> surface = makeSurface(100, 100);
970-
surface->mInputInfo.ownerUid = gui::Uid{11111};
979+
surface->mInputInfo->editInfo()->ownerUid = gui::Uid{11111};
971980
surface->doTransaction(
972981
[&](auto& t, auto& sc) { t.setDropInputMode(sc, gui::DropInputMode::OBSCURED); });
973982
surface->showAt(100, 100);
974983
std::unique_ptr<InputSurface> obscuringSurface = makeSurface(100, 100);
975-
obscuringSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
976-
obscuringSurface->mInputInfo.ownerUid = gui::Uid{22222};
984+
obscuringSurface->mInputInfo->editInfo()->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE,
985+
true);
986+
obscuringSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
977987
obscuringSurface->showAt(100, 100);
978988
injectTap(101, 101);
979989
surface->assertNoEvent();
@@ -986,13 +996,14 @@ TEST_F(InputSurfacesTest, strict_unobscured_input_obscured_window) {
986996

987997
TEST_F(InputSurfacesTest, strict_unobscured_input_partially_obscured_window) {
988998
std::unique_ptr<InputSurface> surface = makeSurface(100, 100);
989-
surface->mInputInfo.ownerUid = gui::Uid{11111};
999+
surface->mInputInfo->editInfo()->ownerUid = gui::Uid{11111};
9901000
surface->doTransaction(
9911001
[&](auto& t, auto& sc) { t.setDropInputMode(sc, gui::DropInputMode::OBSCURED); });
9921002
surface->showAt(100, 100);
9931003
std::unique_ptr<InputSurface> obscuringSurface = makeSurface(100, 100);
994-
obscuringSurface->mInputInfo.setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE, true);
995-
obscuringSurface->mInputInfo.ownerUid = gui::Uid{22222};
1004+
obscuringSurface->mInputInfo->editInfo()->setInputConfig(WindowInfo::InputConfig::NOT_TOUCHABLE,
1005+
true);
1006+
obscuringSurface->mInputInfo->editInfo()->ownerUid = gui::Uid{22222};
9961007
obscuringSurface->showAt(190, 190);
9971008

9981009
injectTap(101, 101);
@@ -1056,7 +1067,7 @@ TEST_F(InputSurfacesTest, ignore_touch_region_with_zero_sized_blast) {
10561067
BlastInputSurface::makeBlastInputSurface(mComposerClient, 0, 0);
10571068

10581069
surface->showAt(100, 100);
1059-
bufferSurface->mInputInfo.touchableRegion.orSelf(Rect(0, 0, 200, 200));
1070+
bufferSurface->mInputInfo->editInfo()->touchableRegion.orSelf(Rect(0, 0, 200, 200));
10601071
bufferSurface->showAt(100, 100, Rect::EMPTY_RECT);
10611072

10621073
injectTap(101, 101);
@@ -1099,8 +1110,8 @@ TEST_F(InputSurfacesTest, cropped_container_replaces_touchable_region_with_null_
10991110
InputSurface::makeContainerInputSurface(mComposerClient, 100, 100);
11001111
containerSurface->doTransaction(
11011112
[&](auto& t, auto& sc) { t.reparent(sc, parentContainer->mSurfaceControl); });
1102-
containerSurface->mInputInfo.replaceTouchableRegionWithCrop = true;
1103-
containerSurface->mInputInfo.touchableRegionCropHandle = nullptr;
1113+
containerSurface->mInputInfo->editInfo()->replaceTouchableRegionWithCrop = true;
1114+
containerSurface->mInputInfo->editInfo()->touchableRegionCropHandle = nullptr;
11041115
parentContainer->showAt(10, 10, Rect(0, 0, 20, 20));
11051116
containerSurface->showAt(10, 10, Rect(0, 0, 5, 5));
11061117

@@ -1126,8 +1137,8 @@ TEST_F(InputSurfacesTest, uncropped_container_replaces_touchable_region_with_nul
11261137
InputSurface::makeContainerInputSurface(mComposerClient, 100, 100);
11271138
containerSurface->doTransaction(
11281139
[&](auto& t, auto& sc) { t.reparent(sc, parentContainer->mSurfaceControl); });
1129-
containerSurface->mInputInfo.replaceTouchableRegionWithCrop = true;
1130-
containerSurface->mInputInfo.touchableRegionCropHandle = nullptr;
1140+
containerSurface->mInputInfo->editInfo()->replaceTouchableRegionWithCrop = true;
1141+
containerSurface->mInputInfo->editInfo()->touchableRegionCropHandle = nullptr;
11311142
parentContainer->doTransaction(
11321143
[&](auto& t, auto& sc) { t.reparent(sc, bgContainer->mSurfaceControl); });
11331144
bgContainer->showAt(0, 0, Rect(0, 0, 100, 100));
@@ -1154,8 +1165,8 @@ TEST_F(InputSurfacesTest, replace_touchable_region_with_crop) {
11541165

11551166
std::unique_ptr<InputSurface> containerSurface =
11561167
InputSurface::makeContainerInputSurface(mComposerClient, 100, 100);
1157-
containerSurface->mInputInfo.replaceTouchableRegionWithCrop = true;
1158-
containerSurface->mInputInfo.touchableRegionCropHandle =
1168+
containerSurface->mInputInfo->editInfo()->replaceTouchableRegionWithCrop = true;
1169+
containerSurface->mInputInfo->editInfo()->touchableRegionCropHandle =
11591170
cropLayer->mSurfaceControl->getHandle();
11601171
containerSurface->showAt(10, 10, Rect::INVALID_RECT);
11611172

services/surfaceflinger/tests/Credentials_test.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,9 @@ TEST_F(CredentialsTest, TransactionPermissionTest) {
341341
WindowInfosListenerUtils windowInfosListenerUtils;
342342
std::string name = "Test Layer";
343343
sp<IBinder> token = sp<BBinder>::make();
344-
WindowInfo windowInfo;
345-
windowInfo.name = name;
346-
windowInfo.token = token;
344+
auto windowInfo = sp<gui::WindowInfoHandle>::make();
345+
windowInfo->editInfo()->name = name;
346+
windowInfo->editInfo()->token = token;
347347
sp<SurfaceControl> surfaceControl =
348348
mComposerClient->createSurface(String8(name.c_str()), 100, 100, PIXEL_FORMAT_RGBA_8888,
349349
ISurfaceComposerClient::eFXSurfaceBufferState);
@@ -370,7 +370,8 @@ TEST_F(CredentialsTest, TransactionPermissionTest) {
370370
UIDFaker f(AID_SYSTEM);
371371
auto windowIsPresentAndNotTrusted = [&](const std::vector<WindowInfo>& windowInfos) {
372372
auto foundWindowInfo =
373-
WindowInfosListenerUtils::findMatchingWindowInfo(windowInfo, windowInfos);
373+
WindowInfosListenerUtils::findMatchingWindowInfo(*windowInfo->getInfo(),
374+
windowInfos);
374375
if (!foundWindowInfo) {
375376
return false;
376377
}
@@ -386,7 +387,8 @@ TEST_F(CredentialsTest, TransactionPermissionTest) {
386387
Transaction().setTrustedOverlay(surfaceControl, true).apply(/*synchronous=*/true);
387388
auto windowIsPresentAndTrusted = [&](const std::vector<WindowInfo>& windowInfos) {
388389
auto foundWindowInfo =
389-
WindowInfosListenerUtils::findMatchingWindowInfo(windowInfo, windowInfos);
390+
WindowInfosListenerUtils::findMatchingWindowInfo(*windowInfo->getInfo(),
391+
windowInfos);
390392
if (!foundWindowInfo) {
391393
return false;
392394
}

0 commit comments

Comments
 (0)