blob: ca308dd2a53bc782869f71f5f3c279f6c649053d [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.manifmerger;
/**
* Defines attributes operations as it can be provided by users through attributes on the target
* xml element.
* <p>
*
* For instance:
* <pre>
* {@code
* <uses-permission
* android:name="android.permission.CAMERA"
* android:maxSdkVersion=25
* tools:replace="android:maxSdkVersion"/>
* }
* </pre>
*
* <p>
*
* The operation type is provided as part of the tools attribute name itself, so you can find
* tools:remove, tools:replace, tools:strict. The value of that attribute is a comma separated list
* of attribute names on which the operation applies.
*
* <p>
* For instance:
* <pre>
* {@code
* <permission
* android:name="android.permission.CAMERA"
* android:icon="@Res/foo"
* android:protectionLevel="dangerous"
* tools:replace="android:maxSdkVersion, protectionLevel"/>
* }
* </pre>
* will replace maxSdkVersion and protectionLevel attributes values when merging lower level xml
* elements.
*/
enum AttributeOperationType {
/**
* Removes the attributes from all further merging activities.
*/
REMOVE,
/**
* Replace the attributes values with the provided one. (Will generate a merging error if no
* new value is provided).
*/
REPLACE,
/**
* The attributes should not be specified by any lower priority xml elements.
*/
STRICT
}