Loading libs/input/KeyCharacterMap.cpp +58 −65 Original line number Original line Diff line number Diff line Loading @@ -140,7 +140,7 @@ status_t KeyCharacterMap::load(Tokenizer* tokenizer, Format format) { #if DEBUG_PARSER_PERFORMANCE #if DEBUG_PARSER_PERFORMANCE nsecs_t elapsedTime = systemTime(SYSTEM_TIME_MONOTONIC) - startTime; nsecs_t elapsedTime = systemTime(SYSTEM_TIME_MONOTONIC) - startTime; ALOGD("Parsed key character map file '%s' %d lines in %0.3fms.", ALOGD("Parsed key character map file '%s' %d lines in %0.3fms.", tokenizer->getFilename().string(), tokenizer->getLineNumber(), elapsedTime / 1000000.0); tokenizer->getFilename().c_str(), tokenizer->getLineNumber(), elapsedTime / 1000000.0); #endif #endif if (status != OK) { if (status != OK) { ALOGE("Loading KeyCharacterMap failed with status %s", statusToString(status).c_str()); ALOGE("Loading KeyCharacterMap failed with status %s", statusToString(status).c_str()); Loading Loading @@ -297,7 +297,7 @@ bool KeyCharacterMap::getEvents(int32_t deviceId, const char16_t* chars, size_t if (!findKey(ch, &keyCode, &metaState)) { if (!findKey(ch, &keyCode, &metaState)) { #if DEBUG_MAPPING #if DEBUG_MAPPING ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Failed to find mapping for character %d.", ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Failed to find mapping for character %d.", deviceId, toString(chars, numChars).string(), ch); deviceId, toString(chars, numChars).c_str(), ch); #endif #endif return false; return false; } } Loading @@ -309,8 +309,8 @@ bool KeyCharacterMap::getEvents(int32_t deviceId, const char16_t* chars, size_t addMetaKeys(outEvents, deviceId, metaState, false, now, ¤tMetaState); addMetaKeys(outEvents, deviceId, metaState, false, now, ¤tMetaState); } } #if DEBUG_MAPPING #if DEBUG_MAPPING ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Generated %d events.", ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Generated %d events.", deviceId, deviceId, toString(chars, numChars).string(), int32_t(outEvents.size())); toString(chars, numChars).c_str(), int32_t(outEvents.size())); for (size_t i = 0; i < outEvents.size(); i++) { for (size_t i = 0; i < outEvents.size(); i++) { ALOGD(" Key: keyCode=%d, metaState=0x%08x, %s.", ALOGD(" Key: keyCode=%d, metaState=0x%08x, %s.", outEvents[i].getKeyCode(), outEvents[i].getMetaState(), outEvents[i].getKeyCode(), outEvents[i].getMetaState(), Loading Loading @@ -756,8 +756,8 @@ KeyCharacterMap::Parser::Parser(KeyCharacterMap* map, Tokenizer* tokenizer, Form status_t KeyCharacterMap::Parser::parse() { status_t KeyCharacterMap::Parser::parse() { while (!mTokenizer->isEof()) { while (!mTokenizer->isEof()) { #if DEBUG_PARSER #if DEBUG_PARSER ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(), ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); #endif #endif mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); Loading @@ -779,8 +779,8 @@ status_t KeyCharacterMap::Parser::parse() { status_t status = parseKey(); status_t status = parseKey(); if (status) return status; if (status) return status; } else { } else { ALOGE("%s: Expected keyword, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected keyword, got '%s'.", mTokenizer->getLocation().c_str(), keywordToken.string()); keywordToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } break; break; Loading @@ -796,8 +796,7 @@ status_t KeyCharacterMap::Parser::parse() { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { ALOGE("%s: Expected end of line or trailing comment, got '%s'.", ALOGE("%s: Expected end of line or trailing comment, got '%s'.", mTokenizer->getLocation().string(), mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().c_str()); mTokenizer->peekRemainderOfLine().string()); return BAD_VALUE; return BAD_VALUE; } } } } Loading @@ -807,27 +806,27 @@ status_t KeyCharacterMap::Parser::parse() { if (mState != STATE_TOP) { if (mState != STATE_TOP) { ALOGE("%s: Unterminated key description at end of file.", ALOGE("%s: Unterminated key description at end of file.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mMap->mType == KeyboardType::UNKNOWN) { if (mMap->mType == KeyboardType::UNKNOWN) { ALOGE("%s: Keyboard layout missing required keyboard 'type' declaration.", ALOGE("%s: Keyboard layout missing required keyboard 'type' declaration.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mFormat == Format::BASE) { if (mFormat == Format::BASE) { if (mMap->mType == KeyboardType::OVERLAY) { if (mMap->mType == KeyboardType::OVERLAY) { ALOGE("%s: Base keyboard layout must specify a keyboard 'type' other than 'OVERLAY'.", ALOGE("%s: Base keyboard layout must specify a keyboard 'type' other than 'OVERLAY'.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } } else if (mFormat == Format::OVERLAY) { } else if (mFormat == Format::OVERLAY) { if (mMap->mType != KeyboardType::OVERLAY) { if (mMap->mType != KeyboardType::OVERLAY) { ALOGE("%s: Overlay keyboard layout missing required keyboard " ALOGE("%s: Overlay keyboard layout missing required keyboard " "'type OVERLAY' declaration.", "'type OVERLAY' declaration.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } } } Loading @@ -837,8 +836,7 @@ status_t KeyCharacterMap::Parser::parse() { status_t KeyCharacterMap::Parser::parseType() { status_t KeyCharacterMap::Parser::parseType() { if (mMap->mType != KeyboardType::UNKNOWN) { if (mMap->mType != KeyboardType::UNKNOWN) { ALOGE("%s: Duplicate keyboard 'type' declaration.", ALOGE("%s: Duplicate keyboard 'type' declaration.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -860,8 +858,8 @@ status_t KeyCharacterMap::Parser::parseType() { } else if (typeToken == "OVERLAY") { } else if (typeToken == "OVERLAY") { type = KeyboardType::OVERLAY; type = KeyboardType::OVERLAY; } else { } else { ALOGE("%s: Expected keyboard type label, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected keyboard type label, got '%s'.", mTokenizer->getLocation().c_str(), typeToken.string()); typeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -878,8 +876,8 @@ status_t KeyCharacterMap::Parser::parseMap() { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); return parseMapKey(); return parseMapKey(); } } ALOGE("%s: Expected keyword after 'map', got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected keyword after 'map', got '%s'.", mTokenizer->getLocation().c_str(), keywordToken.string()); keywordToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -893,26 +891,26 @@ status_t KeyCharacterMap::Parser::parseMapKey() { } } char* end; char* end; int32_t code = int32_t(strtol(codeToken.string(), &end, 0)); int32_t code = int32_t(strtol(codeToken.c_str(), &end, 0)); if (*end) { if (*end) { ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().c_str(), mapUsage ? "usage" : "scan code", codeToken.string()); mapUsage ? "usage" : "scan code", codeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } std::map<int32_t, int32_t>& map = mapUsage ? mMap->mKeysByUsageCode : mMap->mKeysByScanCode; std::map<int32_t, int32_t>& map = mapUsage ? mMap->mKeysByUsageCode : mMap->mKeysByScanCode; const auto it = map.find(code); const auto it = map.find(code); if (it != map.end()) { if (it != map.end()) { ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().c_str(), mapUsage ? "usage" : "scan code", codeToken.string()); mapUsage ? "usage" : "scan code", codeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().c_str(), keyCodeToken.string()); keyCodeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -926,23 +924,23 @@ status_t KeyCharacterMap::Parser::parseMapKey() { status_t KeyCharacterMap::Parser::parseKey() { status_t KeyCharacterMap::Parser::parseKey() { String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().c_str(), keyCodeToken.string()); keyCodeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mMap->mKeys.find(*keyCode) != mMap->mKeys.end()) { if (mMap->mKeys.find(*keyCode) != mMap->mKeys.end()) { ALOGE("%s: Duplicate entry for key code '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Duplicate entry for key code '%s'.", mTokenizer->getLocation().c_str(), keyCodeToken.string()); keyCodeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); String8 openBraceToken = mTokenizer->nextToken(WHITESPACE); String8 openBraceToken = mTokenizer->nextToken(WHITESPACE); if (openBraceToken != "{") { if (openBraceToken != "{") { ALOGE("%s: Expected '{' after key code label, got '%s'.", ALOGE("%s: Expected '{' after key code label, got '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->getLocation().string(), openBraceToken.string()); openBraceToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading Loading @@ -971,10 +969,10 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { properties.emplace_back(PROPERTY_NUMBER); properties.emplace_back(PROPERTY_NUMBER); } else { } else { int32_t metaState; int32_t metaState; status_t status = parseModifier(token.string(), &metaState); status_t status = parseModifier(token.c_str(), &metaState); if (status) { if (status) { ALOGE("%s: Expected a property name or modifier, got '%s'.", ALOGE("%s: Expected a property name or modifier, got '%s'.", mTokenizer->getLocation().string(), token.string()); mTokenizer->getLocation().c_str(), token.c_str()); return status; return status; } } properties.emplace_back(PROPERTY_META, metaState); properties.emplace_back(PROPERTY_META, metaState); Loading @@ -992,8 +990,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { } } } } ALOGE("%s: Expected ',' or ':' after property name.", ALOGE("%s: Expected ',' or ':' after property name.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -1011,18 +1008,17 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { char16_t character; char16_t character; status_t status = parseCharacterLiteral(&character); status_t status = parseCharacterLiteral(&character); if (status || !character) { if (status || !character) { ALOGE("%s: Invalid character literal for key.", ALOGE("%s: Invalid character literal for key.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } if (haveCharacter) { if (haveCharacter) { ALOGE("%s: Cannot combine multiple character literals or 'none'.", ALOGE("%s: Cannot combine multiple character literals or 'none'.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (haveReplacement) { if (haveReplacement) { ALOGE("%s: Cannot combine character literal with replace action.", ALOGE("%s: Cannot combine character literal with replace action.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } behavior.character = character; behavior.character = character; Loading @@ -1032,28 +1028,27 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { if (token == "none") { if (token == "none") { if (haveCharacter) { if (haveCharacter) { ALOGE("%s: Cannot combine multiple character literals or 'none'.", ALOGE("%s: Cannot combine multiple character literals or 'none'.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (haveReplacement) { if (haveReplacement) { ALOGE("%s: Cannot combine 'none' with replace action.", ALOGE("%s: Cannot combine 'none' with replace action.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } haveCharacter = true; haveCharacter = true; } else if (token == "fallback") { } else if (token == "fallback") { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Invalid key code label for fallback behavior, got '%s'.", ALOGE("%s: Invalid key code label for fallback behavior, got '%s'.", mTokenizer->getLocation().string(), mTokenizer->getLocation().c_str(), token.c_str()); token.string()); return BAD_VALUE; return BAD_VALUE; } } if (haveFallback || haveReplacement) { if (haveFallback || haveReplacement) { ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } behavior.fallbackKeyCode = *keyCode; behavior.fallbackKeyCode = *keyCode; Loading @@ -1061,29 +1056,27 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { } else if (token == "replace") { } else if (token == "replace") { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Invalid key code label for replace, got '%s'.", ALOGE("%s: Invalid key code label for replace, got '%s'.", mTokenizer->getLocation().string(), mTokenizer->getLocation().c_str(), token.c_str()); token.string()); return BAD_VALUE; return BAD_VALUE; } } if (haveCharacter) { if (haveCharacter) { ALOGE("%s: Cannot combine character literal with replace action.", ALOGE("%s: Cannot combine character literal with replace action.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (haveFallback || haveReplacement) { if (haveFallback || haveReplacement) { ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } behavior.replacementKeyCode = *keyCode; behavior.replacementKeyCode = *keyCode; haveReplacement = true; haveReplacement = true; } else { } else { ALOGE("%s: Expected a key behavior after ':'.", ALOGE("%s: Expected a key behavior after ':'.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } } } Loading @@ -1096,7 +1089,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { switch (property.property) { switch (property.property) { case PROPERTY_LABEL: case PROPERTY_LABEL: if (key.label) { if (key.label) { ALOGE("%s: Duplicate label for key.", mTokenizer->getLocation().string()); ALOGE("%s: Duplicate label for key.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } key.label = behavior.character; key.label = behavior.character; Loading @@ -1106,7 +1099,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { break; break; case PROPERTY_NUMBER: case PROPERTY_NUMBER: if (key.number) { if (key.number) { ALOGE("%s: Duplicate number for key.", mTokenizer->getLocation().string()); ALOGE("%s: Duplicate number for key.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } key.number = behavior.character; key.number = behavior.character; Loading @@ -1118,7 +1111,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { for (const Behavior& b : key.behaviors) { for (const Behavior& b : key.behaviors) { if (b.metaState == property.metaState) { if (b.metaState == property.metaState) { ALOGE("%s: Duplicate key behavior for modifier.", ALOGE("%s: Duplicate key behavior for modifier.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } } } Loading Loading @@ -1185,8 +1178,8 @@ status_t KeyCharacterMap::Parser::parseModifier(const std::string& token, int32_ return BAD_VALUE; return BAD_VALUE; } } if (combinedMeta & metaState) { if (combinedMeta & metaState) { ALOGE("%s: Duplicate modifier combination '%s'.", ALOGE("%s: Duplicate modifier combination '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->getLocation().string(), token.c_str()); token.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading Loading @@ -1259,7 +1252,7 @@ status_t KeyCharacterMap::Parser::parseCharacterLiteral(char16_t* outCharacter) } } Error: Error: ALOGE("%s: Malformed character literal.", mTokenizer->getLocation().string()); ALOGE("%s: Malformed character literal.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading libs/input/KeyLayoutMap.cpp +59 −60 File changed.Preview size limit exceeded, changes collapsed. Show changes libs/input/PropertyMap.cpp +8 −8 Original line number Original line Diff line number Diff line Loading @@ -163,8 +163,8 @@ PropertyMap::Parser::~Parser() {} status_t PropertyMap::Parser::parse() { status_t PropertyMap::Parser::parse() { while (!mTokenizer->isEof()) { while (!mTokenizer->isEof()) { #if DEBUG_PARSER #if DEBUG_PARSER ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(), ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); #endif #endif mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); Loading @@ -172,7 +172,7 @@ status_t PropertyMap::Parser::parse() { if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { String8 keyToken = mTokenizer->nextToken(WHITESPACE_OR_PROPERTY_DELIMITER); String8 keyToken = mTokenizer->nextToken(WHITESPACE_OR_PROPERTY_DELIMITER); if (keyToken.isEmpty()) { if (keyToken.isEmpty()) { ALOGE("%s: Expected non-empty property key.", mTokenizer->getLocation().string()); ALOGE("%s: Expected non-empty property key.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -180,7 +180,7 @@ status_t PropertyMap::Parser::parse() { if (mTokenizer->nextChar() != '=') { if (mTokenizer->nextChar() != '=') { ALOGE("%s: Expected '=' between property key and value.", ALOGE("%s: Expected '=' between property key and value.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -189,20 +189,20 @@ status_t PropertyMap::Parser::parse() { String8 valueToken = mTokenizer->nextToken(WHITESPACE); String8 valueToken = mTokenizer->nextToken(WHITESPACE); if (valueToken.find("\\", 0) >= 0 || valueToken.find("\"", 0) >= 0) { if (valueToken.find("\\", 0) >= 0 || valueToken.find("\"", 0) >= 0) { ALOGE("%s: Found reserved character '\\' or '\"' in property value.", ALOGE("%s: Found reserved character '\\' or '\"' in property value.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); if (!mTokenizer->isEol()) { if (!mTokenizer->isEol()) { ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mMap->hasProperty(keyToken.string())) { if (mMap->hasProperty(keyToken.string())) { ALOGE("%s: Duplicate property value for key '%s'.", ALOGE("%s: Duplicate property value for key '%s'.", mTokenizer->getLocation().string(), keyToken.string()); mTokenizer->getLocation().c_str(), keyToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading libs/input/VirtualKeyMap.cpp +8 −9 Original line number Original line Diff line number Diff line Loading @@ -79,8 +79,8 @@ VirtualKeyMap::Parser::~Parser() { status_t VirtualKeyMap::Parser::parse() { status_t VirtualKeyMap::Parser::parse() { while (!mTokenizer->isEof()) { while (!mTokenizer->isEof()) { #if DEBUG_PARSER #if DEBUG_PARSER ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(), ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); #endif #endif mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); Loading @@ -91,7 +91,7 @@ status_t VirtualKeyMap::Parser::parse() { String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); if (token != "0x01") { if (token != "0x01") { ALOGE("%s: Unknown virtual key type, expected 0x01.", ALOGE("%s: Unknown virtual key type, expected 0x01.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -103,7 +103,7 @@ status_t VirtualKeyMap::Parser::parse() { && parseNextIntField(&defn.height); && parseNextIntField(&defn.height); if (!success) { if (!success) { ALOGE("%s: Expected 5 colon-delimited integers in virtual key definition.", ALOGE("%s: Expected 5 colon-delimited integers in virtual key definition.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -116,9 +116,8 @@ status_t VirtualKeyMap::Parser::parse() { } while (consumeFieldDelimiterAndSkipWhitespace()); } while (consumeFieldDelimiterAndSkipWhitespace()); if (!mTokenizer->isEol()) { if (!mTokenizer->isEol()) { ALOGE("%s: Expected end of line, got '%s'.", ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->getLocation().string(), mTokenizer->peekRemainderOfLine().c_str()); mTokenizer->peekRemainderOfLine().string()); return BAD_VALUE; return BAD_VALUE; } } } } Loading Loading @@ -146,9 +145,9 @@ bool VirtualKeyMap::Parser::parseNextIntField(int32_t* outValue) { String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); char* end; char* end; *outValue = strtol(token.string(), &end, 0); *outValue = strtol(token.c_str(), &end, 0); if (token.isEmpty() || *end != '\0') { if (token.isEmpty() || *end != '\0') { ALOGE("Expected an integer, got '%s'.", token.string()); ALOGE("Expected an integer, got '%s'.", token.c_str()); return false; return false; } } return true; return true; Loading services/inputflinger/host/InputDriver.cpp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -256,14 +256,14 @@ input_property_t* InputDriver::inputGetDeviceProperty(input_property_map_t* map, const char* InputDriver::inputGetPropertyKey(input_property_t* property) { const char* InputDriver::inputGetPropertyKey(input_property_t* property) { if (property != nullptr) { if (property != nullptr) { return property->key.string(); return property->key.c_str(); } } return nullptr; return nullptr; } } const char* InputDriver::inputGetPropertyValue(input_property_t* property) { const char* InputDriver::inputGetPropertyValue(input_property_t* property) { if (property != nullptr) { if (property != nullptr) { return property->value.string(); return property->value.c_str(); } } return nullptr; return nullptr; } } Loading @@ -281,7 +281,7 @@ void InputDriver::inputFreeDevicePropertyMap(input_property_map_t* map) { } } void InputDriver::dump(String8& result) { void InputDriver::dump(String8& result) { result.appendFormat(INDENT2 "HAL Input Driver (%s)\n", mName.string()); result.appendFormat(INDENT2 "HAL Input Driver (%s)\n", mName.c_str()); } } } // namespace android } // namespace android Loading Loading
libs/input/KeyCharacterMap.cpp +58 −65 Original line number Original line Diff line number Diff line Loading @@ -140,7 +140,7 @@ status_t KeyCharacterMap::load(Tokenizer* tokenizer, Format format) { #if DEBUG_PARSER_PERFORMANCE #if DEBUG_PARSER_PERFORMANCE nsecs_t elapsedTime = systemTime(SYSTEM_TIME_MONOTONIC) - startTime; nsecs_t elapsedTime = systemTime(SYSTEM_TIME_MONOTONIC) - startTime; ALOGD("Parsed key character map file '%s' %d lines in %0.3fms.", ALOGD("Parsed key character map file '%s' %d lines in %0.3fms.", tokenizer->getFilename().string(), tokenizer->getLineNumber(), elapsedTime / 1000000.0); tokenizer->getFilename().c_str(), tokenizer->getLineNumber(), elapsedTime / 1000000.0); #endif #endif if (status != OK) { if (status != OK) { ALOGE("Loading KeyCharacterMap failed with status %s", statusToString(status).c_str()); ALOGE("Loading KeyCharacterMap failed with status %s", statusToString(status).c_str()); Loading Loading @@ -297,7 +297,7 @@ bool KeyCharacterMap::getEvents(int32_t deviceId, const char16_t* chars, size_t if (!findKey(ch, &keyCode, &metaState)) { if (!findKey(ch, &keyCode, &metaState)) { #if DEBUG_MAPPING #if DEBUG_MAPPING ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Failed to find mapping for character %d.", ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Failed to find mapping for character %d.", deviceId, toString(chars, numChars).string(), ch); deviceId, toString(chars, numChars).c_str(), ch); #endif #endif return false; return false; } } Loading @@ -309,8 +309,8 @@ bool KeyCharacterMap::getEvents(int32_t deviceId, const char16_t* chars, size_t addMetaKeys(outEvents, deviceId, metaState, false, now, ¤tMetaState); addMetaKeys(outEvents, deviceId, metaState, false, now, ¤tMetaState); } } #if DEBUG_MAPPING #if DEBUG_MAPPING ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Generated %d events.", ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Generated %d events.", deviceId, deviceId, toString(chars, numChars).string(), int32_t(outEvents.size())); toString(chars, numChars).c_str(), int32_t(outEvents.size())); for (size_t i = 0; i < outEvents.size(); i++) { for (size_t i = 0; i < outEvents.size(); i++) { ALOGD(" Key: keyCode=%d, metaState=0x%08x, %s.", ALOGD(" Key: keyCode=%d, metaState=0x%08x, %s.", outEvents[i].getKeyCode(), outEvents[i].getMetaState(), outEvents[i].getKeyCode(), outEvents[i].getMetaState(), Loading Loading @@ -756,8 +756,8 @@ KeyCharacterMap::Parser::Parser(KeyCharacterMap* map, Tokenizer* tokenizer, Form status_t KeyCharacterMap::Parser::parse() { status_t KeyCharacterMap::Parser::parse() { while (!mTokenizer->isEof()) { while (!mTokenizer->isEof()) { #if DEBUG_PARSER #if DEBUG_PARSER ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(), ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); #endif #endif mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); Loading @@ -779,8 +779,8 @@ status_t KeyCharacterMap::Parser::parse() { status_t status = parseKey(); status_t status = parseKey(); if (status) return status; if (status) return status; } else { } else { ALOGE("%s: Expected keyword, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected keyword, got '%s'.", mTokenizer->getLocation().c_str(), keywordToken.string()); keywordToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } break; break; Loading @@ -796,8 +796,7 @@ status_t KeyCharacterMap::Parser::parse() { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { ALOGE("%s: Expected end of line or trailing comment, got '%s'.", ALOGE("%s: Expected end of line or trailing comment, got '%s'.", mTokenizer->getLocation().string(), mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().c_str()); mTokenizer->peekRemainderOfLine().string()); return BAD_VALUE; return BAD_VALUE; } } } } Loading @@ -807,27 +806,27 @@ status_t KeyCharacterMap::Parser::parse() { if (mState != STATE_TOP) { if (mState != STATE_TOP) { ALOGE("%s: Unterminated key description at end of file.", ALOGE("%s: Unterminated key description at end of file.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mMap->mType == KeyboardType::UNKNOWN) { if (mMap->mType == KeyboardType::UNKNOWN) { ALOGE("%s: Keyboard layout missing required keyboard 'type' declaration.", ALOGE("%s: Keyboard layout missing required keyboard 'type' declaration.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mFormat == Format::BASE) { if (mFormat == Format::BASE) { if (mMap->mType == KeyboardType::OVERLAY) { if (mMap->mType == KeyboardType::OVERLAY) { ALOGE("%s: Base keyboard layout must specify a keyboard 'type' other than 'OVERLAY'.", ALOGE("%s: Base keyboard layout must specify a keyboard 'type' other than 'OVERLAY'.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } } else if (mFormat == Format::OVERLAY) { } else if (mFormat == Format::OVERLAY) { if (mMap->mType != KeyboardType::OVERLAY) { if (mMap->mType != KeyboardType::OVERLAY) { ALOGE("%s: Overlay keyboard layout missing required keyboard " ALOGE("%s: Overlay keyboard layout missing required keyboard " "'type OVERLAY' declaration.", "'type OVERLAY' declaration.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } } } Loading @@ -837,8 +836,7 @@ status_t KeyCharacterMap::Parser::parse() { status_t KeyCharacterMap::Parser::parseType() { status_t KeyCharacterMap::Parser::parseType() { if (mMap->mType != KeyboardType::UNKNOWN) { if (mMap->mType != KeyboardType::UNKNOWN) { ALOGE("%s: Duplicate keyboard 'type' declaration.", ALOGE("%s: Duplicate keyboard 'type' declaration.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -860,8 +858,8 @@ status_t KeyCharacterMap::Parser::parseType() { } else if (typeToken == "OVERLAY") { } else if (typeToken == "OVERLAY") { type = KeyboardType::OVERLAY; type = KeyboardType::OVERLAY; } else { } else { ALOGE("%s: Expected keyboard type label, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected keyboard type label, got '%s'.", mTokenizer->getLocation().c_str(), typeToken.string()); typeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -878,8 +876,8 @@ status_t KeyCharacterMap::Parser::parseMap() { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); return parseMapKey(); return parseMapKey(); } } ALOGE("%s: Expected keyword after 'map', got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected keyword after 'map', got '%s'.", mTokenizer->getLocation().c_str(), keywordToken.string()); keywordToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -893,26 +891,26 @@ status_t KeyCharacterMap::Parser::parseMapKey() { } } char* end; char* end; int32_t code = int32_t(strtol(codeToken.string(), &end, 0)); int32_t code = int32_t(strtol(codeToken.c_str(), &end, 0)); if (*end) { if (*end) { ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().c_str(), mapUsage ? "usage" : "scan code", codeToken.string()); mapUsage ? "usage" : "scan code", codeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } std::map<int32_t, int32_t>& map = mapUsage ? mMap->mKeysByUsageCode : mMap->mKeysByScanCode; std::map<int32_t, int32_t>& map = mapUsage ? mMap->mKeysByUsageCode : mMap->mKeysByScanCode; const auto it = map.find(code); const auto it = map.find(code); if (it != map.end()) { if (it != map.end()) { ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().c_str(), mapUsage ? "usage" : "scan code", codeToken.string()); mapUsage ? "usage" : "scan code", codeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().c_str(), keyCodeToken.string()); keyCodeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -926,23 +924,23 @@ status_t KeyCharacterMap::Parser::parseMapKey() { status_t KeyCharacterMap::Parser::parseKey() { status_t KeyCharacterMap::Parser::parseKey() { String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().c_str(), keyCodeToken.string()); keyCodeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mMap->mKeys.find(*keyCode) != mMap->mKeys.end()) { if (mMap->mKeys.find(*keyCode) != mMap->mKeys.end()) { ALOGE("%s: Duplicate entry for key code '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Duplicate entry for key code '%s'.", mTokenizer->getLocation().c_str(), keyCodeToken.string()); keyCodeToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); String8 openBraceToken = mTokenizer->nextToken(WHITESPACE); String8 openBraceToken = mTokenizer->nextToken(WHITESPACE); if (openBraceToken != "{") { if (openBraceToken != "{") { ALOGE("%s: Expected '{' after key code label, got '%s'.", ALOGE("%s: Expected '{' after key code label, got '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->getLocation().string(), openBraceToken.string()); openBraceToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading Loading @@ -971,10 +969,10 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { properties.emplace_back(PROPERTY_NUMBER); properties.emplace_back(PROPERTY_NUMBER); } else { } else { int32_t metaState; int32_t metaState; status_t status = parseModifier(token.string(), &metaState); status_t status = parseModifier(token.c_str(), &metaState); if (status) { if (status) { ALOGE("%s: Expected a property name or modifier, got '%s'.", ALOGE("%s: Expected a property name or modifier, got '%s'.", mTokenizer->getLocation().string(), token.string()); mTokenizer->getLocation().c_str(), token.c_str()); return status; return status; } } properties.emplace_back(PROPERTY_META, metaState); properties.emplace_back(PROPERTY_META, metaState); Loading @@ -992,8 +990,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { } } } } ALOGE("%s: Expected ',' or ':' after property name.", ALOGE("%s: Expected ',' or ':' after property name.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -1011,18 +1008,17 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { char16_t character; char16_t character; status_t status = parseCharacterLiteral(&character); status_t status = parseCharacterLiteral(&character); if (status || !character) { if (status || !character) { ALOGE("%s: Invalid character literal for key.", ALOGE("%s: Invalid character literal for key.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } if (haveCharacter) { if (haveCharacter) { ALOGE("%s: Cannot combine multiple character literals or 'none'.", ALOGE("%s: Cannot combine multiple character literals or 'none'.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (haveReplacement) { if (haveReplacement) { ALOGE("%s: Cannot combine character literal with replace action.", ALOGE("%s: Cannot combine character literal with replace action.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } behavior.character = character; behavior.character = character; Loading @@ -1032,28 +1028,27 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { if (token == "none") { if (token == "none") { if (haveCharacter) { if (haveCharacter) { ALOGE("%s: Cannot combine multiple character literals or 'none'.", ALOGE("%s: Cannot combine multiple character literals or 'none'.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (haveReplacement) { if (haveReplacement) { ALOGE("%s: Cannot combine 'none' with replace action.", ALOGE("%s: Cannot combine 'none' with replace action.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } haveCharacter = true; haveCharacter = true; } else if (token == "fallback") { } else if (token == "fallback") { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Invalid key code label for fallback behavior, got '%s'.", ALOGE("%s: Invalid key code label for fallback behavior, got '%s'.", mTokenizer->getLocation().string(), mTokenizer->getLocation().c_str(), token.c_str()); token.string()); return BAD_VALUE; return BAD_VALUE; } } if (haveFallback || haveReplacement) { if (haveFallback || haveReplacement) { ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } behavior.fallbackKeyCode = *keyCode; behavior.fallbackKeyCode = *keyCode; Loading @@ -1061,29 +1056,27 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { } else if (token == "replace") { } else if (token == "replace") { mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); token = mTokenizer->nextToken(WHITESPACE); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.string()); std::optional<int> keyCode = InputEventLookup::getKeyCodeByLabel(token.c_str()); if (!keyCode) { if (!keyCode) { ALOGE("%s: Invalid key code label for replace, got '%s'.", ALOGE("%s: Invalid key code label for replace, got '%s'.", mTokenizer->getLocation().string(), mTokenizer->getLocation().c_str(), token.c_str()); token.string()); return BAD_VALUE; return BAD_VALUE; } } if (haveCharacter) { if (haveCharacter) { ALOGE("%s: Cannot combine character literal with replace action.", ALOGE("%s: Cannot combine character literal with replace action.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (haveFallback || haveReplacement) { if (haveFallback || haveReplacement) { ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", ALOGE("%s: Cannot combine multiple fallback/replacement key codes.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } behavior.replacementKeyCode = *keyCode; behavior.replacementKeyCode = *keyCode; haveReplacement = true; haveReplacement = true; } else { } else { ALOGE("%s: Expected a key behavior after ':'.", ALOGE("%s: Expected a key behavior after ':'.", mTokenizer->getLocation().c_str()); mTokenizer->getLocation().string()); return BAD_VALUE; return BAD_VALUE; } } } } Loading @@ -1096,7 +1089,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { switch (property.property) { switch (property.property) { case PROPERTY_LABEL: case PROPERTY_LABEL: if (key.label) { if (key.label) { ALOGE("%s: Duplicate label for key.", mTokenizer->getLocation().string()); ALOGE("%s: Duplicate label for key.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } key.label = behavior.character; key.label = behavior.character; Loading @@ -1106,7 +1099,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { break; break; case PROPERTY_NUMBER: case PROPERTY_NUMBER: if (key.number) { if (key.number) { ALOGE("%s: Duplicate number for key.", mTokenizer->getLocation().string()); ALOGE("%s: Duplicate number for key.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } key.number = behavior.character; key.number = behavior.character; Loading @@ -1118,7 +1111,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() { for (const Behavior& b : key.behaviors) { for (const Behavior& b : key.behaviors) { if (b.metaState == property.metaState) { if (b.metaState == property.metaState) { ALOGE("%s: Duplicate key behavior for modifier.", ALOGE("%s: Duplicate key behavior for modifier.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } } } Loading Loading @@ -1185,8 +1178,8 @@ status_t KeyCharacterMap::Parser::parseModifier(const std::string& token, int32_ return BAD_VALUE; return BAD_VALUE; } } if (combinedMeta & metaState) { if (combinedMeta & metaState) { ALOGE("%s: Duplicate modifier combination '%s'.", ALOGE("%s: Duplicate modifier combination '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->getLocation().string(), token.c_str()); token.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading Loading @@ -1259,7 +1252,7 @@ status_t KeyCharacterMap::Parser::parseCharacterLiteral(char16_t* outCharacter) } } Error: Error: ALOGE("%s: Malformed character literal.", mTokenizer->getLocation().string()); ALOGE("%s: Malformed character literal.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading
libs/input/KeyLayoutMap.cpp +59 −60 File changed.Preview size limit exceeded, changes collapsed. Show changes
libs/input/PropertyMap.cpp +8 −8 Original line number Original line Diff line number Diff line Loading @@ -163,8 +163,8 @@ PropertyMap::Parser::~Parser() {} status_t PropertyMap::Parser::parse() { status_t PropertyMap::Parser::parse() { while (!mTokenizer->isEof()) { while (!mTokenizer->isEof()) { #if DEBUG_PARSER #if DEBUG_PARSER ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(), ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); #endif #endif mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); Loading @@ -172,7 +172,7 @@ status_t PropertyMap::Parser::parse() { if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { String8 keyToken = mTokenizer->nextToken(WHITESPACE_OR_PROPERTY_DELIMITER); String8 keyToken = mTokenizer->nextToken(WHITESPACE_OR_PROPERTY_DELIMITER); if (keyToken.isEmpty()) { if (keyToken.isEmpty()) { ALOGE("%s: Expected non-empty property key.", mTokenizer->getLocation().string()); ALOGE("%s: Expected non-empty property key.", mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -180,7 +180,7 @@ status_t PropertyMap::Parser::parse() { if (mTokenizer->nextChar() != '=') { if (mTokenizer->nextChar() != '=') { ALOGE("%s: Expected '=' between property key and value.", ALOGE("%s: Expected '=' between property key and value.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -189,20 +189,20 @@ status_t PropertyMap::Parser::parse() { String8 valueToken = mTokenizer->nextToken(WHITESPACE); String8 valueToken = mTokenizer->nextToken(WHITESPACE); if (valueToken.find("\\", 0) >= 0 || valueToken.find("\"", 0) >= 0) { if (valueToken.find("\\", 0) >= 0 || valueToken.find("\"", 0) >= 0) { ALOGE("%s: Found reserved character '\\' or '\"' in property value.", ALOGE("%s: Found reserved character '\\' or '\"' in property value.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); if (!mTokenizer->isEol()) { if (!mTokenizer->isEol()) { ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().string(), ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); return BAD_VALUE; return BAD_VALUE; } } if (mMap->hasProperty(keyToken.string())) { if (mMap->hasProperty(keyToken.string())) { ALOGE("%s: Duplicate property value for key '%s'.", ALOGE("%s: Duplicate property value for key '%s'.", mTokenizer->getLocation().string(), keyToken.string()); mTokenizer->getLocation().c_str(), keyToken.c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading
libs/input/VirtualKeyMap.cpp +8 −9 Original line number Original line Diff line number Diff line Loading @@ -79,8 +79,8 @@ VirtualKeyMap::Parser::~Parser() { status_t VirtualKeyMap::Parser::parse() { status_t VirtualKeyMap::Parser::parse() { while (!mTokenizer->isEof()) { while (!mTokenizer->isEof()) { #if DEBUG_PARSER #if DEBUG_PARSER ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(), ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().string()); mTokenizer->peekRemainderOfLine().c_str()); #endif #endif mTokenizer->skipDelimiters(WHITESPACE); mTokenizer->skipDelimiters(WHITESPACE); Loading @@ -91,7 +91,7 @@ status_t VirtualKeyMap::Parser::parse() { String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); if (token != "0x01") { if (token != "0x01") { ALOGE("%s: Unknown virtual key type, expected 0x01.", ALOGE("%s: Unknown virtual key type, expected 0x01.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -103,7 +103,7 @@ status_t VirtualKeyMap::Parser::parse() { && parseNextIntField(&defn.height); && parseNextIntField(&defn.height); if (!success) { if (!success) { ALOGE("%s: Expected 5 colon-delimited integers in virtual key definition.", ALOGE("%s: Expected 5 colon-delimited integers in virtual key definition.", mTokenizer->getLocation().string()); mTokenizer->getLocation().c_str()); return BAD_VALUE; return BAD_VALUE; } } Loading @@ -116,9 +116,8 @@ status_t VirtualKeyMap::Parser::parse() { } while (consumeFieldDelimiterAndSkipWhitespace()); } while (consumeFieldDelimiterAndSkipWhitespace()); if (!mTokenizer->isEol()) { if (!mTokenizer->isEol()) { ALOGE("%s: Expected end of line, got '%s'.", ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().c_str(), mTokenizer->getLocation().string(), mTokenizer->peekRemainderOfLine().c_str()); mTokenizer->peekRemainderOfLine().string()); return BAD_VALUE; return BAD_VALUE; } } } } Loading Loading @@ -146,9 +145,9 @@ bool VirtualKeyMap::Parser::parseNextIntField(int32_t* outValue) { String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER); char* end; char* end; *outValue = strtol(token.string(), &end, 0); *outValue = strtol(token.c_str(), &end, 0); if (token.isEmpty() || *end != '\0') { if (token.isEmpty() || *end != '\0') { ALOGE("Expected an integer, got '%s'.", token.string()); ALOGE("Expected an integer, got '%s'.", token.c_str()); return false; return false; } } return true; return true; Loading
services/inputflinger/host/InputDriver.cpp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -256,14 +256,14 @@ input_property_t* InputDriver::inputGetDeviceProperty(input_property_map_t* map, const char* InputDriver::inputGetPropertyKey(input_property_t* property) { const char* InputDriver::inputGetPropertyKey(input_property_t* property) { if (property != nullptr) { if (property != nullptr) { return property->key.string(); return property->key.c_str(); } } return nullptr; return nullptr; } } const char* InputDriver::inputGetPropertyValue(input_property_t* property) { const char* InputDriver::inputGetPropertyValue(input_property_t* property) { if (property != nullptr) { if (property != nullptr) { return property->value.string(); return property->value.c_str(); } } return nullptr; return nullptr; } } Loading @@ -281,7 +281,7 @@ void InputDriver::inputFreeDevicePropertyMap(input_property_map_t* map) { } } void InputDriver::dump(String8& result) { void InputDriver::dump(String8& result) { result.appendFormat(INDENT2 "HAL Input Driver (%s)\n", mName.string()); result.appendFormat(INDENT2 "HAL Input Driver (%s)\n", mName.c_str()); } } } // namespace android } // namespace android Loading