1 /* 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 package androidx.annotation; 17 18 import static java.lang.annotation.ElementType.ANNOTATION_TYPE; 19 import static java.lang.annotation.ElementType.CONSTRUCTOR; 20 import static java.lang.annotation.ElementType.FIELD; 21 import static java.lang.annotation.ElementType.METHOD; 22 import static java.lang.annotation.ElementType.PACKAGE; 23 import static java.lang.annotation.ElementType.TYPE; 24 import static java.lang.annotation.RetentionPolicy.CLASS; 25 26 import java.lang.annotation.Retention; 27 import java.lang.annotation.Target; 28 29 /** Stub only annotation. Do not use directly. */ 30 @Retention(CLASS) 31 @Target({ANNOTATION_TYPE, TYPE, METHOD, CONSTRUCTOR, FIELD, PACKAGE}) 32 public @interface RestrictTo { 33 34 /** The scope to which usage should be restricted. */ value()35 Scope[] value(); 36 37 enum Scope { 38 /** 39 * Restrict usage to code within the same library (e.g. the same gradle group ID and 40 * artifact ID). 41 */ 42 LIBRARY, 43 44 /** 45 * Restrict usage to code within the same group of libraries. This corresponds to the gradle 46 * group ID. 47 */ 48 LIBRARY_GROUP, 49 50 /** 51 * Restrict usage to code within the same group ID (based on gradle group ID). This is an 52 * alias for {@link #LIBRARY_GROUP}. 53 * 54 * @deprecated Use {@link #LIBRARY_GROUP} instead 55 */ 56 @Deprecated 57 GROUP_ID, 58 59 /** Restrict usage to tests. */ 60 TESTS, 61 62 /** 63 * Restrict usage to subclasses of the enclosing class. 64 * 65 * <p><strong>Note:</strong> This scope should not be used to annotate packages. 66 */ 67 SUBCLASSES, 68 } 69 } 70