12ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski/* 22ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * Copyright (C) 2015 The Android Open Source Project 32ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * 42ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 52ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * you may not use this file except in compliance with the License. 62ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * You may obtain a copy of the License at 72ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * 82ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 92ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * 102ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * Unless required by applicable law or agreed to in writing, software 112ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 122ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * See the License for the specific language governing permissions and 142ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * limitations under the License. 152ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski */ 162ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 172ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski#ifndef AAPT_LINK_MANIFESTFIXER_H 182ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski#define AAPT_LINK_MANIFESTFIXER_H 192ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 20ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski#include <string> 21ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski 22ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski#include "android-base/macros.h" 23ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski 242ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski#include "process/IResourceTableConsumer.h" 25467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski#include "util/Maybe.h" 26cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski#include "xml/XmlActionExecutor.h" 27467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski#include "xml/XmlDom.h" 28467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski 292ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinskinamespace aapt { 302ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 312ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinskistruct ManifestFixerOptions { 32ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski Maybe<std::string> min_sdk_version_default; 33ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski Maybe<std::string> target_sdk_version_default; 34ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski Maybe<std::string> rename_manifest_package; 35ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski Maybe<std::string> rename_instrumentation_target_package; 36ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski Maybe<std::string> version_name_default; 37ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski Maybe<std::string> version_code_default; 382ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski}; 392ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 402ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski/** 412ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * Verifies that the manifest is correctly formed and inserts defaults 422ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * where specified with ManifestFixerOptions. 432ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski */ 44cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinskiclass ManifestFixer : public IXmlResourceConsumer { 45cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski public: 46cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski explicit ManifestFixer(const ManifestFixerOptions& options) 47ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski : options_(options) {} 482ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 49ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski bool Consume(IAaptContext* context, xml::XmlResource* doc) override; 50cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski 51cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski private: 52ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski DISALLOW_COPY_AND_ASSIGN(ManifestFixer); 53ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski 54ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski bool BuildRules(xml::XmlActionExecutor* executor, IDiagnostics* diag); 55cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski 56ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski ManifestFixerOptions options_; 572ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski}; 582ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 59cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski} // namespace aapt 602ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 612ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski#endif /* AAPT_LINK_MANIFESTFIXER_H */ 62