Loading services/inputflinger/tests/fuzzers/InputDispatcherFuzzer.cpp +31 −11 Original line number Diff line number Diff line Loading @@ -65,6 +65,27 @@ private: std::map<int32_t /*displayId*/, InputVerifier> mVerifiers; }; void scrambleWindow(FuzzedDataProvider& fdp, FakeWindowHandle& window) { const int32_t left = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t top = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t width = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t height = fdp.ConsumeIntegralInRange<int32_t>(0, 100); window.setFrame(Rect(left, top, left + width, top + height)); window.setSlippery(fdp.ConsumeBool()); window.setDupTouchToWallpaper(fdp.ConsumeBool()); window.setIsWallpaper(fdp.ConsumeBool()); window.setVisible(fdp.ConsumeBool()); window.setPreventSplitting(fdp.ConsumeBool()); const bool isTrustedOverlay = fdp.ConsumeBool(); window.setTrustedOverlay(isTrustedOverlay); if (isTrustedOverlay) { window.setSpy(fdp.ConsumeBool()); } else { window.setSpy(false); } } } // namespace sp<FakeWindowHandle> generateFuzzedWindow(FuzzedDataProvider& fdp, InputDispatcher& dispatcher, Loading @@ -73,17 +94,9 @@ sp<FakeWindowHandle> generateFuzzedWindow(FuzzedDataProvider& fdp, InputDispatch std::shared_ptr<FakeApplicationHandle> application = std::make_shared<FakeApplicationHandle>(); std::string windowName = android::base::StringPrintf("Win") + std::to_string(windowNumber++); sp<FakeWindowHandle> window = sp<FakeWindowHandle>::make(application, dispatcher, "Fake", displayId); sp<FakeWindowHandle>::make(application, dispatcher, windowName, displayId); const int32_t left = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t top = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t width = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t height = fdp.ConsumeIntegralInRange<int32_t>(0, 100); window->setFrame(Rect(left, top, left + width, top + height)); window->setSlippery(fdp.ConsumeBool()); window->setDupTouchToWallpaper(fdp.ConsumeBool()); window->setTrustedOverlay(fdp.ConsumeBool()); scrambleWindow(fdp, *window); return window; } Loading Loading @@ -113,7 +126,14 @@ void randomizeWindows( windowsPerDisplay.erase(displayId); } }, // Could also clone a window, change flags, reposition, etc... // Change flags or move some of the existing windows [&]() -> void { for (auto& window : windows) { if (fdp.ConsumeBool()) { scrambleWindow(fdp, *window); } } }, })(); } Loading Loading
services/inputflinger/tests/fuzzers/InputDispatcherFuzzer.cpp +31 −11 Original line number Diff line number Diff line Loading @@ -65,6 +65,27 @@ private: std::map<int32_t /*displayId*/, InputVerifier> mVerifiers; }; void scrambleWindow(FuzzedDataProvider& fdp, FakeWindowHandle& window) { const int32_t left = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t top = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t width = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t height = fdp.ConsumeIntegralInRange<int32_t>(0, 100); window.setFrame(Rect(left, top, left + width, top + height)); window.setSlippery(fdp.ConsumeBool()); window.setDupTouchToWallpaper(fdp.ConsumeBool()); window.setIsWallpaper(fdp.ConsumeBool()); window.setVisible(fdp.ConsumeBool()); window.setPreventSplitting(fdp.ConsumeBool()); const bool isTrustedOverlay = fdp.ConsumeBool(); window.setTrustedOverlay(isTrustedOverlay); if (isTrustedOverlay) { window.setSpy(fdp.ConsumeBool()); } else { window.setSpy(false); } } } // namespace sp<FakeWindowHandle> generateFuzzedWindow(FuzzedDataProvider& fdp, InputDispatcher& dispatcher, Loading @@ -73,17 +94,9 @@ sp<FakeWindowHandle> generateFuzzedWindow(FuzzedDataProvider& fdp, InputDispatch std::shared_ptr<FakeApplicationHandle> application = std::make_shared<FakeApplicationHandle>(); std::string windowName = android::base::StringPrintf("Win") + std::to_string(windowNumber++); sp<FakeWindowHandle> window = sp<FakeWindowHandle>::make(application, dispatcher, "Fake", displayId); sp<FakeWindowHandle>::make(application, dispatcher, windowName, displayId); const int32_t left = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t top = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t width = fdp.ConsumeIntegralInRange<int32_t>(0, 100); const int32_t height = fdp.ConsumeIntegralInRange<int32_t>(0, 100); window->setFrame(Rect(left, top, left + width, top + height)); window->setSlippery(fdp.ConsumeBool()); window->setDupTouchToWallpaper(fdp.ConsumeBool()); window->setTrustedOverlay(fdp.ConsumeBool()); scrambleWindow(fdp, *window); return window; } Loading Loading @@ -113,7 +126,14 @@ void randomizeWindows( windowsPerDisplay.erase(displayId); } }, // Could also clone a window, change flags, reposition, etc... // Change flags or move some of the existing windows [&]() -> void { for (auto& window : windows) { if (fdp.ConsumeBool()) { scrambleWindow(fdp, *window); } } }, })(); } Loading