blob: cd8794ba9cc38ea02e4b35b0f5fca1b00a38fe92 [file] [log] [blame]
Adam Lesinski5eeaadd2016-08-25 12:26:56 -07001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef AAPT_COMPILE_INLINEXMLFORMATPARSER_H
18#define AAPT_COMPILE_INLINEXMLFORMATPARSER_H
19
20#include "process/IResourceTableConsumer.h"
21
22#include <android-base/macros.h>
23#include <memory>
24#include <vector>
25
26namespace aapt {
27
28/**
29 * Extracts Inline XML definitions into their own xml::XmlResource objects.
30 *
31 * Inline XML looks like:
32 *
33 * <animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
34 * xmlns:aapt="http://schemas.android.com/aapt" >
35 * <aapt:attr name="android:drawable" >
36 * <vector
37 * android:height="64dp"
38 * android:width="64dp"
39 * android:viewportHeight="600"
40 * android:viewportWidth="600"/>
41 * </aapt:attr>
42 * </animated-vector>
43 *
Adam Lesinskicacb28f2016-10-19 12:18:14 -070044 * The <vector> will be extracted into its own XML file and <animated-vector>
45 * will
46 * gain an attribute 'android:drawable' set to a reference to the extracted
47 * <vector> resource.
Adam Lesinski5eeaadd2016-08-25 12:26:56 -070048 */
49class InlineXmlFormatParser : public IXmlResourceConsumer {
Adam Lesinskicacb28f2016-10-19 12:18:14 -070050 public:
51 explicit InlineXmlFormatParser() = default;
Adam Lesinski5eeaadd2016-08-25 12:26:56 -070052
Adam Lesinskicacb28f2016-10-19 12:18:14 -070053 bool consume(IAaptContext* context, xml::XmlResource* doc) override;
Adam Lesinski5eeaadd2016-08-25 12:26:56 -070054
Adam Lesinskicacb28f2016-10-19 12:18:14 -070055 std::vector<std::unique_ptr<xml::XmlResource>>&
56 getExtractedInlineXmlDocuments() {
57 return mQueue;
58 }
Adam Lesinski5eeaadd2016-08-25 12:26:56 -070059
Adam Lesinskicacb28f2016-10-19 12:18:14 -070060 private:
61 DISALLOW_COPY_AND_ASSIGN(InlineXmlFormatParser);
Adam Lesinski5eeaadd2016-08-25 12:26:56 -070062
Adam Lesinskicacb28f2016-10-19 12:18:14 -070063 std::vector<std::unique_ptr<xml::XmlResource>> mQueue;
Adam Lesinski5eeaadd2016-08-25 12:26:56 -070064};
65
Adam Lesinskicacb28f2016-10-19 12:18:14 -070066} // namespace aapt
Adam Lesinski5eeaadd2016-08-25 12:26:56 -070067
68#endif /* AAPT_COMPILE_INLINEXMLFORMATPARSER_H */