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