• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 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 package com.android.tools.lint.client.api;
18 
19 import com.android.annotations.NonNull;
20 import com.android.annotations.Nullable;
21 import com.google.common.annotations.Beta;
22 
23 /**
24  * Information about SDKs
25  * <p>
26  * <b>NOTE: This is not a public or final API; if you rely on this be prepared
27  * to adjust your code for the next tools release.</b>
28  */
29 @Beta
30 public abstract class SdkInfo {
31     /**
32      * Returns true if the given child view is the same class or a sub class of
33      * the given parent view class
34      *
35      * @param parentViewFqcn the fully qualified class name of the parent view
36      * @param childViewFqcn the fully qualified class name of the child view
37      * @return true if the child view is a sub view of (or the same class as)
38      *         the parent view
39      */
isSubViewOf(@onNull String parentViewFqcn, @NonNull String childViewFqcn)40     public boolean isSubViewOf(@NonNull String parentViewFqcn, @NonNull String childViewFqcn) {
41         while (!childViewFqcn.equals("android.view.View")) { //$NON-NLS-1$
42             if (parentViewFqcn.equals(childViewFqcn)) {
43                 return true;
44             }
45             childViewFqcn = getParentViewClass(childViewFqcn);
46             if (childViewFqcn == null) {
47                 // Unknown view - err on the side of caution
48                 return true;
49             }
50         }
51 
52         return false;
53     }
54 
55 
56     /**
57      * Returns the fully qualified name of the parent view, or null if the view
58      * is the root android.view.View class.
59      *
60      * @param fqcn the fully qualified class name of the view
61      * @return the fully qualified class name of the parent view, or null
62      */
63     @Nullable
getParentViewClass(@onNull String fqcn)64     public abstract String getParentViewClass(@NonNull String fqcn);
65 
66     /**
67      * Returns the class name of the parent view, or null if the view is the
68      * root android.view.View class. This is the same as the
69      * {@link #getParentViewClass(String)} but without the package.
70      *
71      * @param name the view class name to look up the parent for (not including
72      *            package)
73      * @return the view name of the parent
74      */
75     @Nullable
getParentViewName(@onNull String name)76     public abstract String getParentViewName(@NonNull String name);
77 
78     // TODO: Add access to resource resolution here.
79 }
80