OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "sky/engine/config.h" | 5 #include "sky/engine/config.h" |
6 #include "sky/engine/core/loader/CanvasImageLoader.h" | 6 #include "sky/engine/core/loader/CanvasImageLoader.h" |
7 #include "sky/engine/core/painting/CanvasImage.h" | 7 #include "sky/engine/core/painting/CanvasImage.h" |
8 #include "sky/engine/platform/image-decoders/ImageDecoder.h" | 8 #include "sky/engine/platform/image-decoders/ImageDecoder.h" |
9 #include "sky/engine/platform/SharedBuffer.h" | 9 #include "sky/engine/platform/SharedBuffer.h" |
10 | 10 |
11 namespace blink { | 11 namespace blink { |
12 | 12 |
13 CanvasImageLoader::CanvasImageLoader(const String& src, PassOwnPtr<ImageLoaderCa
llback> callback) | 13 CanvasImageLoader::CanvasImageLoader(const String& src, PassOwnPtr<ImageLoaderCa
llback> callback) |
14 : callback_(callback) { | 14 : callback_(callback) { |
15 // TODO(jackson): Figure out how to determine the proper base URL here | 15 // TODO(jackson): Figure out how to determine the proper base URL here |
16 url_ = KURL(KURL(), src); | 16 KURL url = KURL(KURL(), src); |
| 17 fetcher_ = adoptPtr(new MojoFetcher(this, url)); |
17 } | 18 } |
18 | 19 |
19 CanvasImageLoader::~CanvasImageLoader() { | 20 CanvasImageLoader::~CanvasImageLoader() { |
20 } | 21 } |
21 | 22 |
22 void CanvasImageLoader::load() { | |
23 fetcher_ = adoptPtr(new MojoFetcher(this, url_)); | |
24 } | |
25 | |
26 void CanvasImageLoader::OnReceivedResponse(mojo::URLResponsePtr response) { | 23 void CanvasImageLoader::OnReceivedResponse(mojo::URLResponsePtr response) { |
27 if (response->status_code != 200) { | 24 if (response->status_code != 200) { |
28 callback_->handleEvent(nullptr); | 25 callback_->handleEvent(nullptr); |
29 return; | 26 return; |
30 } | 27 } |
31 buffer_ = SharedBuffer::create(); | 28 buffer_ = SharedBuffer::create(); |
32 drainer_ = | 29 drainer_ = |
33 adoptPtr(new mojo::common::DataPipeDrainer(this, response->body.Pass())); | 30 adoptPtr(new mojo::common::DataPipeDrainer(this, response->body.Pass())); |
34 } | 31 } |
35 | 32 |
36 void CanvasImageLoader::OnDataAvailable(const void* data, size_t num_bytes) { | 33 void CanvasImageLoader::OnDataAvailable(const void* data, size_t num_bytes) { |
37 buffer_->append(static_cast<const char*>(data), num_bytes); | 34 buffer_->append(static_cast<const char*>(data), num_bytes); |
38 } | 35 } |
39 | 36 |
40 void CanvasImageLoader::OnDataComplete() { | 37 void CanvasImageLoader::OnDataComplete() { |
41 OwnPtr<ImageDecoder> decoder = | 38 OwnPtr<ImageDecoder> decoder = |
42 ImageDecoder::create(*buffer_.get(), ImageSource::AlphaPremultiplied, | 39 ImageDecoder::create(*buffer_.get(), ImageSource::AlphaPremultiplied, |
43 ImageSource::GammaAndColorProfileIgnored); | 40 ImageSource::GammaAndColorProfileIgnored); |
44 decoder->setData(buffer_.get(), true); | 41 decoder->setData(buffer_.get(), true); |
45 if (!decoder->failed() && decoder->frameCount() > 0) { | 42 if (!decoder->failed() && decoder->frameCount() > 0) { |
46 RefPtr<CanvasImage> resultImage = CanvasImage::create(); | 43 RefPtr<CanvasImage> resultImage = CanvasImage::create(); |
47 resultImage->setBitmap(decoder->frameBufferAtIndex(0)->getSkBitmap()); | 44 resultImage->setBitmap(decoder->frameBufferAtIndex(0)->getSkBitmap()); |
48 callback_->handleEvent(resultImage.get()); | 45 callback_->handleEvent(resultImage.get()); |
49 } else { | 46 } else { |
50 callback_->handleEvent(nullptr); | 47 callback_->handleEvent(nullptr); |
51 } | 48 } |
52 } | 49 } |
53 | 50 |
54 } // namespace blink | 51 } // namespace blink |
OLD | NEW |