Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d25fdd4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Throw proper exception in ResourcesManager" into nyc-dev

parents 24d94b8a c82f28a9
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -1245,15 +1245,18 @@ public class ApplicationPackageManager extends PackageManager {
            return mContext.mMainThread.getSystemContext().getResources();
        }
        final boolean sameUid = (app.uid == Process.myUid());
        final Resources r = mContext.mMainThread.getTopLevelResources(
        try {
            return mContext.mMainThread.getTopLevelResources(
                    sameUid ? app.sourceDir : app.publicSourceDir,
                    sameUid ? app.splitSourceDirs : app.splitPublicSourceDirs,
                    app.resourceDirs, app.sharedLibraryFiles, Display.DEFAULT_DISPLAY,
                    mContext.mPackageInfo);
        if (r != null) {
            return r;
        } catch (Resources.NotFoundException cause) {
            final NameNotFoundException ex =
                    new NameNotFoundException("Unable to open " + app.publicSourceDir);
            ex.initCause(cause);
            throw ex;
        }
        throw new NameNotFoundException("Unable to open " + app.publicSourceDir);
    }

    @Override
+9 −9
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ public class ResourcesManager {
     * Protected so that tests can override and returns something a fixed value.
     */
    @VisibleForTesting
    protected DisplayMetrics getDisplayMetrics(int displayId) {
    protected @NonNull DisplayMetrics getDisplayMetrics(int displayId) {
        DisplayMetrics dm = new DisplayMetrics();
        final Display display =
                getAdjustedDisplay(displayId, DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS);
@@ -250,14 +250,14 @@ public class ResourcesManager {
        // already.
        if (key.mResDir != null) {
            if (assets.addAssetPath(key.mResDir) == 0) {
                throw new IllegalArgumentException("failed to add asset path " + key.mResDir);
                throw new Resources.NotFoundException("failed to add asset path " + key.mResDir);
            }
        }

        if (key.mSplitResDirs != null) {
            for (final String splitResDir : key.mSplitResDirs) {
                if (assets.addAssetPath(splitResDir) == 0) {
                    throw new IllegalArgumentException(
                    throw new Resources.NotFoundException(
                            "failed to add split asset path " + splitResDir);
                }
            }
@@ -303,7 +303,7 @@ public class ResourcesManager {
        return config;
    }

    private ResourcesImpl createResourcesImpl(@NonNull ResourcesKey key) {
    private @NonNull ResourcesImpl createResourcesImpl(@NonNull ResourcesKey key) {
        AssetManager assets = createAssetManager(key);
        DisplayMetrics dm = getDisplayMetrics(key.mDisplayId);
        Configuration config = generateConfig(key, dm);
@@ -359,7 +359,7 @@ public class ResourcesManager {
     * Gets an existing Resources object tied to this Activity, or creates one if it doesn't exist
     * or the class loader is different.
     */
    private Resources getOrCreateResourcesForActivityLocked(@NonNull IBinder activityToken,
    private @NonNull Resources getOrCreateResourcesForActivityLocked(@NonNull IBinder activityToken,
            @NonNull ClassLoader classLoader, @NonNull ResourcesImpl impl) {
        final ActivityResources activityResources = getOrCreateActivityResourcesStructLocked(
                activityToken);
@@ -393,7 +393,7 @@ public class ResourcesManager {
     * Gets an existing Resources object if the class loader and ResourcesImpl are the same,
     * otherwise creates a new Resources object.
     */
    private Resources getOrCreateResourcesLocked(@NonNull ClassLoader classLoader,
    private @NonNull Resources getOrCreateResourcesLocked(@NonNull ClassLoader classLoader,
            @NonNull ResourcesImpl impl) {
        // Find an existing Resources that has this ResourcesImpl set.
        final int refCount = mResourceReferences.size();
@@ -441,7 +441,7 @@ public class ResourcesManager {
     *                    {@link ClassLoader#getSystemClassLoader()} is used.
     * @return a Resources object from which to access resources.
     */
    public Resources createBaseActivityResources(@NonNull IBinder activityToken,
    public @NonNull Resources createBaseActivityResources(@NonNull IBinder activityToken,
            @Nullable String resDir,
            @Nullable String[] splitResDirs,
            @Nullable String[] overlayDirs,
@@ -495,7 +495,7 @@ public class ResourcesManager {
     *         {@link #applyConfigurationToResourcesLocked(Configuration, CompatibilityInfo)}
     *         is called.
     */
    private Resources getOrCreateResources(@Nullable IBinder activityToken,
    private @NonNull Resources getOrCreateResources(@Nullable IBinder activityToken,
            @NonNull ResourcesKey key, @NonNull ClassLoader classLoader) {
        synchronized (this) {
            if (DEBUG) {
@@ -603,7 +603,7 @@ public class ResourcesManager {
     * {@link ClassLoader#getSystemClassLoader()} is used.
     * @return a Resources object from which to access resources.
     */
    public Resources getResources(@Nullable IBinder activityToken,
    public @NonNull Resources getResources(@Nullable IBinder activityToken,
            @Nullable String resDir,
            @Nullable String[] splitResDirs,
            @Nullable String[] overlayDirs,