1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.android_webview.test.util; 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)import org.chromium.net.test.util.TestWebServer; 8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/** 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * The purpose of the generator is to provide a sequence of distinct images to 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * avoid caching side-effects. As we don't need too many images, I've found it 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * easier to hardcode image samples. It is possible to generate images on the 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * fly, but it will require hooking up additional packages. 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) */ 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public class ImagePageGenerator { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final String IMAGE_LOADED_STRING = "1"; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final String IMAGE_NOT_LOADED_STRING = "0"; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private static final String[] COLORS = { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "AAAAIAAc3j0Ss", "AQABIAEayS9b0", "AgACIAIQ8BmAc", "AwADIAMW5wvJE", 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BAAEIAQZNWRTI", "BQAFIAUfInYaQ", "BgAGIAYVG0DB4", "BwAHIAcTDFKIg", 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CAAIIAgXCI+Rk", "CQAJIAkRH53Y8", "CgAKIAobJqsDU", "CwALIAsdMblKM", 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "DAAMIAwS49bQA", "DQANIA0U9MSZY", "DgAOIA4ezfJCw", "DwAPIA8Y2uALo", 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D+AQAA/9vaUwc", "D/AQEBANNhzkw" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private static final String IMAGE_PREFIX = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA" + 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6fptVAAAAAXNSR0IArs4c6QAAAA1JREFUCB0BAgD9/w"; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private static final String IMAGE_SUFFIX = "AAAAASUVORK5CYII="; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private int mIndex; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final boolean mAdvance; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ImagePageGenerator(int startIndex, boolean advance) { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mIndex = startIndex; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mAdvance = advance; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public String getImageSourceNoAdvance() { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IMAGE_PREFIX + COLORS[mIndex] + IMAGE_SUFFIX; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public String getPageTemplateSource(String imageSrc) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return CommonResources.getOnImageLoadedHtml(imageSrc); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public String getPageSource() { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String result = 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getPageTemplateSource("data:image/png;base64," + getImageSourceNoAdvance()); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (mAdvance) mIndex += 2; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 55d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 56d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) public String getPageUrl(TestWebServer webServer) { 57d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) final String imagePath = "/image_" + mIndex + ".png"; 58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) final String pagePath = "/html_image_" + mIndex + ".html"; 59d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) webServer.setResponseBase64(imagePath, getImageSourceNoAdvance(), 60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) CommonResources.getImagePngHeaders(false)); 61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (mAdvance) mIndex += 2; 62d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return webServer.setResponse(pagePath, getPageTemplateSource(imagePath), null); 63d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 65