1920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson/* 2920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Copyright (C) 2010 Google Inc. 3920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 4920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 5920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * you may not use this file except in compliance with the License. 6920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * You may obtain a copy of the License at 7920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 8920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * http://www.apache.org/licenses/LICENSE-2.0 9920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 10920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Unless required by applicable law or agreed to in writing, software 11920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * distributed under the License is distributed on an "AS IS" BASIS, 12920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * See the License for the specific language governing permissions and 14920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * limitations under the License. 15920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 16920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 17920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpackage com.google.doclava; 18920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 19920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport com.google.clearsilver.jsilver.JSilver; 20920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport com.google.clearsilver.jsilver.data.Data; 21920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 22f959ed158599686910af990654d6c84d262868ffAndrew Sappersteinimport java.io.BufferedWriter; 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.io.File; 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.io.FileInputStream; 25920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.io.FileOutputStream; 26920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.io.IOException; 27f959ed158599686910af990654d6c84d262868ffAndrew Sappersteinimport java.io.OutputStreamWriter; 28f959ed158599686910af990654d6c84d262868ffAndrew Sappersteinimport java.io.Writer; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.util.ArrayList; 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.util.List; 3188c435bb4d6c81c41107e23503b59af2e08acd8dRobert Lyimport java.util.Arrays; 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic class ClearPage { 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson /* 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * public ClearPage() { String templ = "templates/index.cs"; String filename = "docs/index.html"; 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * data.setValue("A.B.C", "1"); data.setValue("A.B.D", "2"); } 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private static ArrayList<String> mTemplateDirs = new ArrayList<String>(); 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private static boolean mTemplateDirSet = false; 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 43920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private static ArrayList<String> mBundledTemplateDirs = new ArrayList<String>(); 44920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 45920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static String outputDir = "docs"; 464bac50adef51d339bb967369f9aca0de7f6c1b2fBill Napier public static List<String> htmlDirs = new ArrayList<String>(); 47920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static String toroot = null; 48920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 49920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void addTemplateDir(String dir) { 50920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mTemplateDirSet = true; 51920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mTemplateDirs.add(dir); 52920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 53920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 54920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static List<String> getTemplateDirs() { 55920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mTemplateDirs; 56920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 58920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void addBundledTemplateDir(String dir) { 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mTemplateDirSet = true; 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mBundledTemplateDirs.add(dir); 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 63920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static List<String> getBundledTemplateDirs() { 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mBundledTemplateDirs; 65920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 66920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 67920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private static int countSlashes(String s) { 68920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson final int N = s.length(); 69920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int slashcount = 0; 70920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (int i = 0; i < N; i++) { 71920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (s.charAt(i) == '/') { 72920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson slashcount++; 73920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 74920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 75920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return slashcount; 76920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void write(Data data, String templ, String filename, JSilver cs) { 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson write(data, templ, filename, false, cs); 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void write(Data data, String templ, String filename) { 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson write(data, templ, filename, false, Doclava.jSilver); 84920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 85920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 86920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void write(Data data, String templ, String filename, boolean fullPath) { 87920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson write(data, templ, filename, false, Doclava.jSilver); 88920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 89920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 90920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void write(Data data, String templ, String filename, boolean fullPath, JSilver cs) { 914bac50adef51d339bb967369f9aca0de7f6c1b2fBill Napier if (!htmlDirs.isEmpty()) { 92920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue("hasindex", "true"); 93920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 94920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 95920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String toroot; 96920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (ClearPage.toroot != null) { 97920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson toroot = ClearPage.toroot; 98920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 99920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int slashcount = countSlashes(filename); 100920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (slashcount > 0) { 101920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson toroot = ""; 102920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (int i = 0; i < slashcount; i++) { 103920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson toroot += "../"; 104920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 105920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 106920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson toroot = "./"; 107920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 108920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 109920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue("toroot", toroot); 110bb9054772d76fde416af3c0e18f98999daa65bd8Trevor Johns if (Doclava.USE_UPDATED_TEMPLATES) { 111bb9054772d76fde416af3c0e18f98999daa65bd8Trevor Johns data.setValue("useUpdatedTemplates", "true"); 112bb9054772d76fde416af3c0e18f98999daa65bd8Trevor Johns } 113920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue("filename", filename); 114920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 115920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (!fullPath) { 116920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson filename = outputDir + "/" + filename; 117920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 118920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 119920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int i = 0; 1204bac50adef51d339bb967369f9aca0de7f6c1b2fBill Napier if (!htmlDirs.isEmpty()) { 1214bac50adef51d339bb967369f9aca0de7f6c1b2fBill Napier for (String dir : htmlDirs) { 1224bac50adef51d339bb967369f9aca0de7f6c1b2fBill Napier data.setValue("hdf.loadpaths." + i, dir); 1234bac50adef51d339bb967369f9aca0de7f6c1b2fBill Napier i++; 1244bac50adef51d339bb967369f9aca0de7f6c1b2fBill Napier } 125920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 126920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (mTemplateDirSet) { 127920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (String dir : mTemplateDirs) { 128920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue("hdf.loadpaths." + i, dir); 129920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson i++; 130920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 131920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 132920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue("hdf.loadpaths." + i, "templates"); 133920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 134920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 135920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson File file = new File(outputFilename(filename)); 136920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 137920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ensureDirectory(file); 138f959ed158599686910af990654d6c84d262868ffAndrew Sapperstein Writer stream = null; 139920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 140f959ed158599686910af990654d6c84d262868ffAndrew Sapperstein stream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); 141920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String rendered = cs.render(templ, data); 142920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson stream.write(rendered, 0, rendered.length()); 143920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) { 144920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson System.out.println("error: " + e.getMessage() + "; when writing file: " + filename); 145920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } finally { 146920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (stream != null) { 147920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 148920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson stream.close(); 149920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) {} 150920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 151920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 152920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 153920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 154920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson // recursively create the directories to the output 155920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void ensureDirectory(File f) { 156920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson File parent = f.getParentFile(); 157920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (parent != null) { 158920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson parent.mkdirs(); 159920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 160920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 161920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 162bb9054772d76fde416af3c0e18f98999daa65bd8Trevor Johns public static void copyFile(boolean allowExcepted, File from, String toPath, Boolean append) { 163920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson File to = new File(outputDir + "/" + toPath); 164920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson FileInputStream in; 165920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson FileOutputStream out; 166920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 167920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (!from.exists()) { 168920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson throw new IOException(); 169920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 170920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson in = new FileInputStream(from); 171920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) { 172920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson System.err.println(from.getAbsolutePath() + ": Error opening file"); 173920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return; 174920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 175920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ensureDirectory(to); 176920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 177bb9054772d76fde416af3c0e18f98999daa65bd8Trevor Johns out = new FileOutputStream(to, append); 178920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) { 179bb9054772d76fde416af3c0e18f98999daa65bd8Trevor Johns System.err.println(to.getAbsolutePath() + ": Error opening file"); 180920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return; 181920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 18288c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly if (!isValidContentType(allowExcepted, toPath, DROIDDOC_VALID_CONTENT_TYPES)) { 1839b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty Errors.error(Errors.INVALID_CONTENT_TYPE, null, "Failed to process " + from 1849b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty + ": Invalid file type. Please move the file to frameworks/base/docs/image_sources/... or docs/downloads/..."); 1859b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty return; 1869b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty } 187920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 188920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson long sizel = from.length(); 189920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson final int maxsize = 64 * 1024; 190920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int size = sizel > maxsize ? maxsize : (int) sizel; 191920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson byte[] buf = new byte[size]; 192920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson while (true) { 193920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 194920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson size = in.read(buf); 195920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) { 196920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson System.err.println(from.getAbsolutePath() + ": error reading file"); 197920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson break; 198920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 199920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (size > 0) { 200920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 201920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson out.write(buf, 0, size); 202920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) { 203920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson System.err.println(from.getAbsolutePath() + ": error writing file"); 204920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 205920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 206920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson break; 207920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 208920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 209920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 210920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson in.close(); 211920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) {} 212920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson try { 213920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson out.close(); 214920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } catch (IOException e) {} 215920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 216920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 217920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson /** Takes a string that ends w/ .html and changes the .html to htmlExtension */ 218920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static String outputFilename(String htmlFile) { 219920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (!Doclava.htmlExtension.equals(".html") && htmlFile.endsWith(".html")) { 220920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return htmlFile.substring(0, htmlFile.length() - 5) + Doclava.htmlExtension; 221920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 222920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return htmlFile; 223920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 224920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 225920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 22688c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly public static ArrayList<String> DROIDDOC_VALID_CONTENT_TYPES = new ArrayList<String>(Arrays.asList(".txt", ".css", 22788c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly ".js", ".html", ".ico", ".png", ".jpg", ".gif", ".svg", ".webm", ".ogv","mp4", ".java", ".xml", ".aidl", ".rs",".zip", ".yaml")); 2284c95e6c9a7c559fd66e8085c239832d505d4fbf9Robert Ly /* Setting excepted types to allow everything. Leaving it this way in in case we want to explicitly 2294c95e6c9a7c559fd66e8085c239832d505d4fbf9Robert Ly * specify file types later. This adds unneeded checking though since it lets everything through 2304c95e6c9a7c559fd66e8085c239832d505d4fbf9Robert Ly */ 2314c95e6c9a7c559fd66e8085c239832d505d4fbf9Robert Ly public static ArrayList<String> DROIDDOC_EXCEPTED_CONTENT_TYPES = new ArrayList<String>(Arrays.asList("")); 23288c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly 23388c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly public static boolean isValidContentType(boolean allowExcepted, String s, ArrayList<String> list) { 23488c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly if(allowExcepted){ 23588c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly list.addAll(DROIDDOC_EXCEPTED_CONTENT_TYPES); 23688c435bb4d6c81c41107e23503b59af2e08acd8dRobert Ly } 2379b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty for (String t : list) { 2389b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty if (s.endsWith(t)) { 2399b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty return true; 2409b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty } 2419b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty } 2429b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty return false; 2439b316c84e2e15268db79772d9cef60da1df488ecDirk Dougherty } 244920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 245