// Copyright 2015 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. import 'dart:sky' as sky; import 'dart:collection'; final HashMap> _pendingRequests = new HashMap>(); final HashMap _completedRequests = new HashMap(); void load(String url, sky.ImageLoaderCallback callback) { sky.Image result = _completedRequests[url]; if (result != null) { callback(_completedRequests[url]); return; } bool newRequest = false; _pendingRequests.putIfAbsent(url, () { newRequest = true; return new List(); }).add(callback); if (newRequest) { new sky.ImageLoader(url, (image) { _completedRequests[url] = image; _pendingRequests[url].forEach((c) => c(image)); _pendingRequests.remove(url); }); } }