ManifestFixer.h revision 52364f7ae31716d7827ea8f8566f4a28bd30a921
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 202ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski#include "process/IResourceTableConsumer.h" 21467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski#include "util/Maybe.h" 22467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski#include "xml/XmlDom.h" 23467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski 24467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski#include <string> 252ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 262ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinskinamespace aapt { 272ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 282ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinskistruct ManifestFixerOptions { 292ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski Maybe<std::u16string> minSdkVersionDefault; 302ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski Maybe<std::u16string> targetSdkVersionDefault; 3152364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> renameManifestPackage; 3252364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> renameInstrumentationTargetPackage; 3352364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> versionNameDefault; 3452364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> versionCodeDefault; 352ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski}; 362ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 372ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski/** 382ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * Verifies that the manifest is correctly formed and inserts defaults 392ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * where specified with ManifestFixerOptions. 402ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski */ 412ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinskistruct ManifestFixer : public IXmlResourceConsumer { 422ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski ManifestFixerOptions mOptions; 432ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 442ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski ManifestFixer(const ManifestFixerOptions& options) : mOptions(options) { 452ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski } 462ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 47467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski bool consume(IAaptContext* context, xml::XmlResource* doc) override; 482ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski}; 492ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 502ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski} // namespace aapt 512ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 522ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski#endif /* AAPT_LINK_MANIFESTFIXER_H */ 53