1 // Copyright (c) 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.
5 package org.chromium.android_webview.test.util;
7 import org.chromium.net.test.util.TestWebServer;
9 // The purpose of the generator is to provide a sequence of distinct images
10 // to avoid caching side-effects. As we don't need too many images, I've
11 // found it easier to hardcode image samples. It is possible to generate
12 // images on the fly, but it will require hooking up additional packages.
13 public class ImagePageGenerator {
15 public static final String IMAGE_LOADED_STRING = "1";
16 public static final String IMAGE_NOT_LOADED_STRING = "0";
18 private final static String[] COLORS = {
19 "AAAAIAAc3j0Ss", "AQABIAEayS9b0", "AgACIAIQ8BmAc", "AwADIAMW5wvJE",
20 "BAAEIAQZNWRTI", "BQAFIAUfInYaQ", "BgAGIAYVG0DB4", "BwAHIAcTDFKIg",
21 "CAAIIAgXCI+Rk", "CQAJIAkRH53Y8", "CgAKIAobJqsDU", "CwALIAsdMblKM",
22 "DAAMIAwS49bQA", "DQANIA0U9MSZY", "DgAOIA4ezfJCw", "DwAPIA8Y2uALo",
23 "D+AQAA/9vaUwc", "D/AQEBANNhzkw"
26 private final static String IMAGE_PREFIX = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA" +
27 "6fptVAAAAAXNSR0IArs4c6QAAAA1JREFUCB0BAgD9/w";
29 private final static String IMAGE_SUFFIX = "AAAAASUVORK5CYII=";
32 private final boolean mAdvance;
34 public ImagePageGenerator(int startIndex, boolean advance) {
39 public String getImageSourceNoAdvance() {
40 return IMAGE_PREFIX + COLORS[mIndex] + IMAGE_SUFFIX;
43 public String getPageTemplateSource(String imageSrc) {
44 return CommonResources.getOnImageLoadedHtml(imageSrc);
47 public String getPageSource() {
49 getPageTemplateSource("data:image/png;base64," + getImageSourceNoAdvance());
50 if (mAdvance) mIndex += 2;
54 public String getPageUrl(TestWebServer webServer) {
55 final String imagePath = "/image_" + mIndex + ".png";
56 final String pagePath = "/html_image_" + mIndex + ".html";
57 webServer.setResponseBase64(imagePath, getImageSourceNoAdvance(),
58 CommonResources.getImagePngHeaders(false));
59 if (mAdvance) mIndex += 2;
60 return webServer.setResponse(pagePath, getPageTemplateSource(imagePath), null);