17c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez/*
27c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * Copyright (C) 2017 The Android Open Source Project
37c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez *
47c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * Licensed under the Apache License, Version 2.0 (the "License");
57c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * you may not use this file except in compliance with the License.
67c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * You may obtain a copy of the License at
77c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez *
87c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez *      http://www.apache.org/licenses/LICENSE-2.0
97c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez *
107c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * Unless required by applicable law or agreed to in writing, software
117c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * distributed under the License is distributed on an "AS IS" BASIS,
127c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * See the License for the specific language governing permissions and
147c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * limitations under the License.
157c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez */
167c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
177c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezpackage com.android.layoutlib.bridge.intensive.util;
187c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
197c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezimport com.android.ide.common.rendering.api.AssetRepository;
207c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
21aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillardimport android.annotation.NonNull;
22aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard
237c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezimport java.io.File;
247c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezimport java.io.FileInputStream;
257c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezimport java.io.FileNotFoundException;
267c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezimport java.io.IOException;
277c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezimport java.io.InputStream;
287c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
297c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez/**
307c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez * {@link AssetRepository} used for render tests.
317c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez */
327c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perezpublic class TestAssetRepository extends AssetRepository {
33aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard    private final String mAssetPath;
34aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard
35aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard    public TestAssetRepository(@NonNull String assetPath) {
36aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard        mAssetPath = assetPath;
37aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard    }
38aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard
397c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    private static InputStream open(String path) throws FileNotFoundException {
407c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez        File asset = new File(path);
417c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez        if (asset.isFile()) {
427c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez            return new FileInputStream(asset);
437c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez        }
447c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
457c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez        return null;
467c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    }
477c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
487c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    @Override
497c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    public boolean isSupported() {
507c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez        return true;
517c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    }
527c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
537c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    @Override
547c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    public InputStream openAsset(String path, int mode) throws IOException {
55aec75b2a26641d702f42c74ae2ab69e3242f073dJerome Gaillard        return open(mAssetPath + path);
567c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    }
577c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez
587c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    @Override
597c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    public InputStream openNonAsset(int cookie, String path, int mode) throws IOException {
607c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez        return open(path);
617c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez    }
627c22a707de1ed939ebd91079dff9df6cd5ffd401Diego Perez}
63