1// Copyright 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5package org.chromium.android_webview.test.util; 6 7import org.chromium.net.test.util.TestWebServer; 8 9/** 10 * The purpose of the generator is to provide a sequence of distinct images to 11 * avoid caching side-effects. As we don't need too many images, I've found it 12 * easier to hardcode image samples. It is possible to generate images on the 13 * fly, but it will require hooking up additional packages. 14 */ 15public class ImagePageGenerator { 16 17 public static final String IMAGE_LOADED_STRING = "1"; 18 public static final String IMAGE_NOT_LOADED_STRING = "0"; 19 20 private static final String[] COLORS = { 21 "AAAAIAAc3j0Ss", "AQABIAEayS9b0", "AgACIAIQ8BmAc", "AwADIAMW5wvJE", 22 "BAAEIAQZNWRTI", "BQAFIAUfInYaQ", "BgAGIAYVG0DB4", "BwAHIAcTDFKIg", 23 "CAAIIAgXCI+Rk", "CQAJIAkRH53Y8", "CgAKIAobJqsDU", "CwALIAsdMblKM", 24 "DAAMIAwS49bQA", "DQANIA0U9MSZY", "DgAOIA4ezfJCw", "DwAPIA8Y2uALo", 25 "D+AQAA/9vaUwc", "D/AQEBANNhzkw" 26 }; 27 28 private static final String IMAGE_PREFIX = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA" + 29 "6fptVAAAAAXNSR0IArs4c6QAAAA1JREFUCB0BAgD9/w"; 30 31 private static final String IMAGE_SUFFIX = "AAAAASUVORK5CYII="; 32 33 private int mIndex; 34 private final boolean mAdvance; 35 36 public ImagePageGenerator(int startIndex, boolean advance) { 37 mIndex = startIndex; 38 mAdvance = advance; 39 } 40 41 public String getImageSourceNoAdvance() { 42 return IMAGE_PREFIX + COLORS[mIndex] + IMAGE_SUFFIX; 43 } 44 45 public String getPageTemplateSource(String imageSrc) { 46 return CommonResources.getOnImageLoadedHtml(imageSrc); 47 } 48 49 public String getPageSource() { 50 String result = 51 getPageTemplateSource("data:image/png;base64," + getImageSourceNoAdvance()); 52 if (mAdvance) mIndex += 2; 53 return result; 54 } 55 56 public String getPageUrl(TestWebServer webServer) { 57 final String imagePath = "/image_" + mIndex + ".png"; 58 final String pagePath = "/html_image_" + mIndex + ".html"; 59 webServer.setResponseBase64(imagePath, getImageSourceNoAdvance(), 60 CommonResources.getImagePngHeaders(false)); 61 if (mAdvance) mIndex += 2; 62 return webServer.setResponse(pagePath, getPageTemplateSource(imagePath), null); 63 } 64} 65