diff options
| author | 2018-10-03 16:38:28 -0700 | |
|---|---|---|
| committer | 2018-10-15 12:13:34 -0700 | |
| commit | 05a8fe28dbda15c38881462bf273fd258c674fd8 (patch) | |
| tree | f6f1b314027d412e5c533a4dab27da50c81b8c6f /services/inputflinger/InputReader.cpp | |
| parent | 7371fedb5a7b565a8f7cb59a4b2709d62abfc9e4 (diff) | |
Add DisplayViewport native tests
The strategy for finding DisplayViewport has changed in ag/4723479.
Add native tests for the new lookup logic here.
The matching is done by uniqueId if it is specified, and by type only if it is not.
Some additional refactors:
- Return std::optional from getDisplayViewport
- Make internal viewport optional. Expect normal operation if internal
viewport is not present at all.
Bug: 111108021
Test: atest -a inputflinger_tests
Change-Id: I7d7d698438d0d691f5f07fef2da80e792a504978
Diffstat (limited to 'services/inputflinger/InputReader.cpp')
| -rw-r--r-- | services/inputflinger/InputReader.cpp | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp index 57fc17fb50..0b73be0a98 100644 --- a/services/inputflinger/InputReader.cpp +++ b/services/inputflinger/InputReader.cpp @@ -256,18 +256,17 @@ static void synthesizeButtonKeys(InputReaderContext* context, int32_t action, // --- InputReaderConfiguration --- -bool InputReaderConfiguration::getDisplayViewport(ViewportType viewportType, - const std::string& uniqueDisplayId, DisplayViewport* outViewport) const { +std::optional<DisplayViewport> InputReaderConfiguration::getDisplayViewport( + ViewportType viewportType, const std::string& uniqueDisplayId) const { for (const DisplayViewport& currentViewport : mDisplays) { if (currentViewport.type == viewportType) { if (uniqueDisplayId.empty() || (!uniqueDisplayId.empty() && uniqueDisplayId == currentViewport.uniqueId)) { - *outViewport = currentViewport; - return true; + return std::make_optional(currentViewport); } } } - return false; + return std::nullopt; } void InputReaderConfiguration::setDisplayViewports(const std::vector<DisplayViewport>& viewports) { @@ -2249,7 +2248,6 @@ void KeyboardInputMapper::dump(std::string& dump) { dump += StringPrintf(INDENT3 "DownTime: %" PRId64 "\n", mDownTime); } - void KeyboardInputMapper::configure(nsecs_t when, const InputReaderConfiguration* config, uint32_t changes) { InputMapper::configure(when, config, changes); @@ -2261,9 +2259,7 @@ void KeyboardInputMapper::configure(nsecs_t when, if (!changes || (changes & InputReaderConfiguration::CHANGE_DISPLAY_INFO)) { if (mParameters.orientationAware) { - DisplayViewport dvp; - config->getDisplayViewport(ViewportType::VIEWPORT_INTERNAL, "", &dvp); - mViewport = dvp; + mViewport = config->getDisplayViewport(ViewportType::VIEWPORT_INTERNAL, ""); } } } @@ -2672,9 +2668,10 @@ void CursorInputMapper::configure(nsecs_t when, if (!changes || (changes & InputReaderConfiguration::CHANGE_DISPLAY_INFO)) { mOrientation = DISPLAY_ORIENTATION_0; if (mParameters.orientationAware && mParameters.hasAssociatedDisplay) { - DisplayViewport v; - if (config->getDisplayViewport(ViewportType::VIEWPORT_INTERNAL, "", &v)) { - mOrientation = v.orientation; + std::optional<DisplayViewport> internalViewport = + config->getDisplayViewport(ViewportType::VIEWPORT_INTERNAL, ""); + if (internalViewport) { + mOrientation = internalViewport->orientation; } } bumpGeneration(); @@ -2987,9 +2984,10 @@ void RotaryEncoderInputMapper::configure(nsecs_t when, mRotaryEncoderScrollAccumulator.configure(getDevice()); } if (!changes || (changes & InputReaderConfiguration::CHANGE_DISPLAY_INFO)) { - DisplayViewport v; - if (config->getDisplayViewport(ViewportType::VIEWPORT_INTERNAL, "", &v)) { - mOrientation = v.orientation; + std::optional<DisplayViewport> internalViewport = + config->getDisplayViewport(ViewportType::VIEWPORT_INTERNAL, ""); + if (internalViewport) { + mOrientation = internalViewport->orientation; } else { mOrientation = DISPLAY_ORIENTATION_0; } @@ -3502,7 +3500,9 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) { viewportTypeToUse = ViewportType::VIEWPORT_INTERNAL; } - if (!mConfig.getDisplayViewport(viewportTypeToUse, uniqueDisplayId, &newViewport)) { + std::optional<DisplayViewport> viewportToUse = + mConfig.getDisplayViewport(viewportTypeToUse, uniqueDisplayId); + if (!viewportToUse) { ALOGI(INDENT "Touch device '%s' could not query the properties of its associated " "display. The device will be inoperable until the display size " "becomes available.", @@ -3510,6 +3510,7 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) { mDeviceMode = DEVICE_MODE_DISABLED; return; } + newViewport = *viewportToUse; } else { newViewport.setNonDisplayViewport(rawWidth, rawHeight); } |