// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. 'use strict'; var chrome = { metricsPrivate: { recordPercentage: function() {}, recordValue: function() {} }, i18n: { getMessage: function() {} } }; /** * Lets the client to load URL and returns the local cache (not caches in the * image loader extension) is used or not. * * @param {ImageLoaderClient} client * @param {string} url URL * @param {Object} options load options. * @return {Promise} True if the local cache is used. */ function loadAndCheckCacheUsed(client, url, options) { var cacheUsed = true; ImageLoaderClient.sendMessage_ = function(message, callback) { cacheUsed = false; if (callback) callback({data: 'ImageData', width: 100, height: 100, status: 'success'}); }; return new Promise(function(fulfill) { client.load(url, function() { fulfill(cacheUsed); }, options); }); } function testCache(callback) { var client = new ImageLoaderClient(); reportPromise( loadAndCheckCacheUsed( client, 'http://example.com/image.jpg', {cache: true}). then(function(cacheUsed) { assertFalse(cacheUsed); return loadAndCheckCacheUsed( client, 'http://example.com/image.jpg', {cache: true}); }). then(function(cacheUsed) { assertTrue(cacheUsed); }), callback); } function testNoCache(callback) { var client = new ImageLoaderClient(); reportPromise( loadAndCheckCacheUsed( client, 'http://example.com/image.jpg', {cache: false}). then(function(cacheUsed) { assertFalse(cacheUsed); return loadAndCheckCacheUsed( client, 'http://example.com/image.jpg', {cache: false}); }). then(function(cacheUsed) { assertFalse(cacheUsed); }), callback); } function testDataURLCache(callback) { var client = new ImageLoaderClient(); reportPromise( loadAndCheckCacheUsed(client, 'data:URI', {cache: true}). then(function(cacheUsed) { assertFalse(cacheUsed); return loadAndCheckCacheUsed(client, 'data:URI', {cache: true}); }). then(function(cacheUsed) { assertFalse(cacheUsed); }), callback); }