ManifestFixer.h revision cc5609d8e484ec82ef1dced793af7f674f059b1c
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" 22cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski#include "xml/XmlActionExecutor.h" 23467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski#include "xml/XmlDom.h" 24467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski 25467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski#include <string> 262ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 272ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinskinamespace aapt { 282ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 292ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinskistruct ManifestFixerOptions { 302ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski Maybe<std::u16string> minSdkVersionDefault; 312ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski Maybe<std::u16string> targetSdkVersionDefault; 3252364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> renameManifestPackage; 3352364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> renameInstrumentationTargetPackage; 3452364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> versionNameDefault; 3552364f7ae31716d7827ea8f8566f4a28bd30a921Adam Lesinski Maybe<std::u16string> versionCodeDefault; 362ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski}; 372ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 382ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski/** 392ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * Verifies that the manifest is correctly formed and inserts defaults 402ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski * where specified with ManifestFixerOptions. 412ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski */ 42cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinskiclass ManifestFixer : public IXmlResourceConsumer { 43cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinskipublic: 442ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski ManifestFixer(const ManifestFixerOptions& options) : mOptions(options) { 452ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski } 462ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 47467f171315f9c2037fcd3eb5edcfabc40671bf7bAdam Lesinski bool consume(IAaptContext* context, xml::XmlResource* doc) override; 48cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski 49cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinskiprivate: 50cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski bool buildRules(xml::XmlActionExecutor* executor, IDiagnostics* diag); 51cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski 52cc5609d8e484ec82ef1dced793af7f674f059b1cAdam Lesinski ManifestFixerOptions mOptions; 532ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski}; 542ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 552ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski} // namespace aapt 562ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski 572ae4a877d1623f851040ce69239552c873f1abf0Adam Lesinski#endif /* AAPT_LINK_MANIFESTFIXER_H */ 58