160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes/*
260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * Copyright (C) 2015 The Android Open Source Project
360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes *
460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * you may not use this file except in compliance with the License.
660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * You may obtain a copy of the License at
760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes *
860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes *
1060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * Unless required by applicable law or agreed to in writing, software
1160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
1260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * See the License for the specific language governing permissions and
1460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * limitations under the License.
1560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes */
1660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.appcompat.widget;
1860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
1960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.content.res.AssetFileDescriptor;
2060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.content.res.ColorStateList;
2160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.content.res.Configuration;
2260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.content.res.Resources;
2360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.content.res.TypedArray;
2460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.content.res.XmlResourceParser;
2560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.graphics.Movie;
2660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.graphics.drawable.Drawable;
2760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.os.Bundle;
2860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.util.AttributeSet;
2960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.util.DisplayMetrics;
3060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport android.util.TypedValue;
3160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
323de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikasimport androidx.annotation.RequiresApi;
333de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikas
34058995d123bc50783c787ef8799318e8797d889cAurimas Liutikasimport org.xmlpull.v1.XmlPullParserException;
35058995d123bc50783c787ef8799318e8797d889cAurimas Liutikas
3660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport java.io.IOException;
3760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesimport java.io.InputStream;
3860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
3960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes/**
4060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * This extends Resources but delegates the calls to another Resources object. This enables
4160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes * any customization done by some subclass of Resources to be also picked up.
4260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes */
4360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banesclass ResourcesWrapper extends Resources {
4460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
4560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    private final Resources mResources;
4660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
4760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public ResourcesWrapper(Resources resources) {
4860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        super(resources.getAssets(), resources.getDisplayMetrics(), resources.getConfiguration());
4960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        mResources = resources;
5060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
5160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
5260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
5360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public CharSequence getText(int id) throws NotFoundException {
5460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getText(id);
5560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
5660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
5760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
5860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public CharSequence getQuantityText(int id, int quantity) throws NotFoundException {
5960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getQuantityText(id, quantity);
6060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
6160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
6260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
6360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getString(int id) throws NotFoundException {
6460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getString(id);
6560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
6660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
6760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
6860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getString(int id, Object... formatArgs) throws NotFoundException {
6960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getString(id, formatArgs);
7060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
7160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
7260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
7360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getQuantityString(int id, int quantity, Object... formatArgs)
7460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes            throws NotFoundException {
7560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getQuantityString(id, quantity, formatArgs);
7660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
7760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
7860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
7960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getQuantityString(int id, int quantity) throws NotFoundException {
8060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getQuantityString(id, quantity);
8160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
8260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
8360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
8460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public CharSequence getText(int id, CharSequence def) {
8560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getText(id, def);
8660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
8760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
8860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
8960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public CharSequence[] getTextArray(int id) throws NotFoundException {
9060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getTextArray(id);
9160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
9260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
9360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
9460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String[] getStringArray(int id) throws NotFoundException {
9560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getStringArray(id);
9660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
9760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
9860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
9960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public int[] getIntArray(int id) throws NotFoundException {
10060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getIntArray(id);
10160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
10260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
10360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
10460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public TypedArray obtainTypedArray(int id) throws NotFoundException {
10560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.obtainTypedArray(id);
10660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
10760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
10860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
10960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public float getDimension(int id) throws NotFoundException {
11060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDimension(id);
11160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
11260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
11360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
11460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public int getDimensionPixelOffset(int id) throws NotFoundException {
11560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDimensionPixelOffset(id);
11660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
11760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
11860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
11960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public int getDimensionPixelSize(int id) throws NotFoundException {
12060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDimensionPixelSize(id);
12160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
12260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
12360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
12460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public float getFraction(int id, int base, int pbase) {
12560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getFraction(id, base, pbase);
12660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
12760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
12860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
12960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public Drawable getDrawable(int id) throws NotFoundException {
13060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDrawable(id);
13160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
13260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
133058995d123bc50783c787ef8799318e8797d889cAurimas Liutikas    @RequiresApi(21)
13460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
13560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public Drawable getDrawable(int id, Theme theme) throws NotFoundException {
13660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDrawable(id, theme);
13760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
13860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
139058995d123bc50783c787ef8799318e8797d889cAurimas Liutikas    @RequiresApi(15)
14060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
14160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public Drawable getDrawableForDensity(int id, int density) throws NotFoundException {
14260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDrawableForDensity(id, density);
14360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
14460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
145058995d123bc50783c787ef8799318e8797d889cAurimas Liutikas    @RequiresApi(21)
14660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
14760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public Drawable getDrawableForDensity(int id, int density, Theme theme) {
14860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDrawableForDensity(id, density, theme);
14960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
15060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
15160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
15260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public Movie getMovie(int id) throws NotFoundException {
15360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getMovie(id);
15460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
15560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
15660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
15760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public int getColor(int id) throws NotFoundException {
15860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getColor(id);
15960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
16060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
16160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
16260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public ColorStateList getColorStateList(int id) throws NotFoundException {
16360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getColorStateList(id);
16460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
16560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
16660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
16760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public boolean getBoolean(int id) throws NotFoundException {
16860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getBoolean(id);
16960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
17060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
17160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
17260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public int getInteger(int id) throws NotFoundException {
17360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getInteger(id);
17460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
17560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
17660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
17760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public XmlResourceParser getLayout(int id) throws NotFoundException {
17860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getLayout(id);
17960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
18060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
18160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
18260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public XmlResourceParser getAnimation(int id) throws NotFoundException {
18360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getAnimation(id);
18460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
18560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
18660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
18760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public XmlResourceParser getXml(int id) throws NotFoundException {
18860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getXml(id);
18960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
19060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
19160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
19260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public InputStream openRawResource(int id) throws NotFoundException {
19360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.openRawResource(id);
19460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
19560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
19660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
19760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public InputStream openRawResource(int id, TypedValue value) throws NotFoundException {
19860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.openRawResource(id, value);
19960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
20060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
20160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
20260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public AssetFileDescriptor openRawResourceFd(int id) throws NotFoundException {
20360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.openRawResourceFd(id);
20460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
20560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
20660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
20760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public void getValue(int id, TypedValue outValue, boolean resolveRefs)
20860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes            throws NotFoundException {
20960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        mResources.getValue(id, outValue, resolveRefs);
21060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
21160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
212058995d123bc50783c787ef8799318e8797d889cAurimas Liutikas    @RequiresApi(15)
21360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
21460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public void getValueForDensity(int id, int density, TypedValue outValue, boolean resolveRefs)
21560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes            throws NotFoundException {
21660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        mResources.getValueForDensity(id, density, outValue, resolveRefs);
21760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
21860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
21960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
22060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public void getValue(String name, TypedValue outValue, boolean resolveRefs)
22160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes            throws NotFoundException {
22260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        mResources.getValue(name, outValue, resolveRefs);
22360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
22460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
22560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
22660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public TypedArray obtainAttributes(AttributeSet set, int[] attrs) {
22760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.obtainAttributes(set, attrs);
22860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
22960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
23060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
23160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public void updateConfiguration(Configuration config, DisplayMetrics metrics) {
23260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        super.updateConfiguration(config, metrics);
23360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        if (mResources != null) { // called from super's constructor. So, need to check.
23460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes            mResources.updateConfiguration(config, metrics);
23560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        }
23660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
23760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
23860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
23960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public DisplayMetrics getDisplayMetrics() {
24060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getDisplayMetrics();
24160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
24260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
24360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
24460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public Configuration getConfiguration() {
24560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getConfiguration();
24660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
24760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
24860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
24960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public int getIdentifier(String name, String defType, String defPackage) {
25060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getIdentifier(name, defType, defPackage);
25160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
25260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
25360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
25460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getResourceName(int resid) throws NotFoundException {
25560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getResourceName(resid);
25660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
25760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
25860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
25960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getResourcePackageName(int resid) throws NotFoundException {
26060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getResourcePackageName(resid);
26160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
26260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
26360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
26460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getResourceTypeName(int resid) throws NotFoundException {
26560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getResourceTypeName(resid);
26660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
26760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
26860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
26960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public String getResourceEntryName(int resid) throws NotFoundException {
27060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        return mResources.getResourceEntryName(resid);
27160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
27260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
27360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
27460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public void parseBundleExtras(XmlResourceParser parser, Bundle outBundle)
27560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes            throws XmlPullParserException, IOException {
27660cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        mResources.parseBundleExtras(parser, outBundle);
27760cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
27860cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
27960cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    @Override
28060cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    public void parseBundleExtra(String tagName, AttributeSet attrs, Bundle outBundle)
28160cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes            throws XmlPullParserException {
28260cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes        mResources.parseBundleExtra(tagName, attrs, outBundle);
28360cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes    }
28460cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes}
28560cc94cdf2f9dfd10f2fe0b3fa0fa438d51df271Chris Banes
286