summaryrefslogtreecommitdiff
path: root/tools/aapt2/ManifestParser.cpp
diff options
context:
space:
mode:
author Adam Lesinski <adamlesinski@google.com> 2015-08-14 14:26:04 -0700
committer Adam Lesinski <adamlesinski@google.com> 2015-10-16 12:13:08 -0700
commit1ab598f46c3ff520a67f9d80194847741f3467ab (patch)
tree4846790211599fdd7a9bb35ec94df4a6ec4839d6 /tools/aapt2/ManifestParser.cpp
parent547c346bb34878b691fd53e54aa3a88efcc5dc6f (diff)
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
Diffstat (limited to 'tools/aapt2/ManifestParser.cpp')
-rw-r--r--tools/aapt2/ManifestParser.cpp84
1 files changed, 0 insertions, 84 deletions
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 <string>
-
-namespace aapt {
-
-bool ManifestParser::parse(const Source& source, std::shared_ptr<XmlPullParser> 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<XmlPullParser> 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 <manifest>." << std::endl;
- return false;
- }
- outInfo->package = attrIter->value;
- return true;
-}
-
-} // namespace aapt