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