File: ManifestMerger.h

package info (click to toggle)
android-framework-23 6.0.1%2Br72-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 233,244 kB
  • sloc: java: 1,707,033; xml: 247,323; cpp: 211,819; ansic: 2,748; python: 2,640; sh: 1,517; yacc: 343; lex: 214; ruby: 183; perl: 88; makefile: 63; sed: 19
file content (45 lines) | stat: -rw-r--r-- 1,192 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef AAPT_MANIFEST_MERGER_H
#define AAPT_MANIFEST_MERGER_H

#include "Logger.h"
#include "Source.h"
#include "XmlDom.h"

#include <memory>
#include <string>

namespace aapt {

class ManifestMerger {
public:
    struct Options {
    };

    ManifestMerger(const Options& options);

    bool setAppManifest(const Source& source, const std::u16string& package,
                        std::unique_ptr<xml::Node> root);

    bool mergeLibraryManifest(const Source& source, const std::u16string& package,
                              std::unique_ptr<xml::Node> libRoot);

    xml::Node* getMergedXml();

    bool printMerged();

private:
    bool mergeNewOrEqual(xml::Element* parentA, xml::Element* elA, xml::Element* elB);
    bool mergePreferRequired(xml::Element* parentA, xml::Element* elA, xml::Element* elB);
    bool checkEqual(xml::Element* elA, xml::Element* elB);
    bool mergeApplication(xml::Element* applicationA, xml::Element* applicationB);
    bool mergeUsesSdk(xml::Element* elA, xml::Element* elB);

    Options mOptions;
    std::unique_ptr<xml::Node> mRoot;
    SourceLogger mAppLogger;
    SourceLogger mLogger;
};

} // namespace aapt

#endif // AAPT_MANIFEST_MERGER_H