blob: 56723b6ad6fd0247622498ed07f58fb07e157340 [file] [log] [blame]
// 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:async';
import 'dart:collection';
import 'dart:sky' as sky;
import 'package:mojo/mojo/url_response.mojom.dart';
import 'package:sky/mojo/net/fetch.dart';
final HashMap<String, Future<sky.Image>> _cache =
new HashMap<String, Future<sky.Image>>();
Future<sky.Image> load(String url) {
return _cache.putIfAbsent(url, () {
Completer<sky.Image> completer = new Completer<sky.Image>();
fetchUrl(url).then((UrlResponse response) {
if (response.statusCode >= 400) {
print("Failed (${response.statusCode}) to load image ${url}");
completer.complete(null);
} else {
new sky.ImageDecoder(response.body.handle.h, completer.complete);
}
});
return completer.future;
});
}