From 1ab598f46c3ff520a67f9d80194847741f3467ab Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Fri, 14 Aug 2015 14:26:04 -0700 Subject: AAPT2: Separate out the various steps An early refactor. Some ideas became clearer as development continued. Now the various phases are much clearer and more easily reusable. Also added a ton of tests! Change-Id: Ic8f0a70c8222370352e63533b329c40457c0903e --- tools/aapt2/ManifestParser.cpp | 84 ------------------------------------------ 1 file changed, 84 deletions(-) delete mode 100644 tools/aapt2/ManifestParser.cpp (limited to 'tools/aapt2/ManifestParser.cpp') diff --git a/tools/aapt2/ManifestParser.cpp b/tools/aapt2/ManifestParser.cpp deleted file mode 100644 index b8f0a430bcee..000000000000 --- a/tools/aapt2/ManifestParser.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "AppInfo.h" -#include "Logger.h" -#include "ManifestParser.h" -#include "Source.h" -#include "XmlPullParser.h" - -#include - -namespace aapt { - -bool ManifestParser::parse(const Source& source, std::shared_ptr parser, - AppInfo* outInfo) { - SourceLogger logger = { source }; - - int depth = 0; - while (XmlPullParser::isGoodEvent(parser->next())) { - XmlPullParser::Event event = parser->getEvent(); - if (event == XmlPullParser::Event::kEndElement) { - depth--; - continue; - } else if (event != XmlPullParser::Event::kStartElement) { - continue; - } - - depth++; - - const std::u16string& element = parser->getElementName(); - if (depth == 1) { - if (element == u"manifest") { - if (!parseManifest(logger, parser, outInfo)) { - return false; - } - } else { - logger.error() - << "unexpected top-level element '" - << element - << "'." - << std::endl; - return false; - } - } else { - XmlPullParser::skipCurrentElement(parser.get()); - } - } - - if (parser->getEvent() == XmlPullParser::Event::kBadDocument) { - logger.error(parser->getLineNumber()) - << "failed to parse manifest: " - << parser->getLastError() - << "." - << std::endl; - return false; - } - return true; -} - -bool ManifestParser::parseManifest(SourceLogger& logger, std::shared_ptr parser, - AppInfo* outInfo) { - auto attrIter = parser->findAttribute(u"", u"package"); - if (attrIter == parser->endAttributes() || attrIter->value.empty()) { - logger.error() << "no 'package' attribute found for element ." << std::endl; - return false; - } - outInfo->package = attrIter->value; - return true; -} - -} // namespace aapt -- cgit v1.2.3-59-g8ed1b