Chromium Code Reviews| Index: sky/engine/core/loader/NewImageLoader.cpp |
| diff --git a/sky/engine/core/loader/NewImageLoader.cpp b/sky/engine/core/loader/NewImageLoader.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..dcecb74fb17ab8795561a2e751ed49948259a8d1 |
| --- /dev/null |
| +++ b/sky/engine/core/loader/NewImageLoader.cpp |
| @@ -0,0 +1,62 @@ |
| +// 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. |
| + |
| +#include "sky/engine/config.h" |
| +#include "sky/engine/core/loader/NewImageLoader.h" |
| +#include "sky/engine/platform/image-decoders/ImageDecoder.h" |
| +#include "sky/engine/platform/SharedBuffer.h" |
| + |
| +namespace blink { |
| + |
| +NewImageLoader::NewImageLoader(NewImageLoaderClient* client) : m_client(client) |
| +{ |
| + |
|
eseidel
2015/05/29 22:13:50
Did you mean to leave spaces here?
|
| +} |
| + |
| +NewImageLoader::~NewImageLoader() |
| +{ |
| + |
| +} |
| + |
| +void NewImageLoader::load(const KURL& src) |
| +{ |
| + m_fetcher = adoptPtr(new MojoFetcher(this, src)); |
|
eseidel
2015/05/29 22:13:50
So we load one img at a time it seems? We presuma
jackson
2015/05/29 22:54:32
Yes, currently we do
|
| +} |
| + |
| +void NewImageLoader::OnReceivedResponse(mojo::URLResponsePtr response) |
| +{ |
| + if (response->status_code != 200) { |
| + m_client->notifyLoadFinished(SkBitmap()); |
| + m_client = nullptr; |
| + return; |
| + } |
| + m_buffer = SharedBuffer::create(); |
| + m_drainer = adoptPtr(new mojo::common::DataPipeDrainer(this, response->body.Pass())); |
| +} |
| + |
| +void NewImageLoader::OnDataAvailable(const void* data, size_t num_bytes) |
| +{ |
| + m_buffer->append(static_cast<const char*>(data), num_bytes); |
| +} |
| + |
| +void NewImageLoader::OnDataComplete() |
| +{ |
| + RefPtr<SharedBuffer> buffer = PassRefPtr<SharedBuffer>(m_buffer); |
| + OwnPtr<ImageDecoder> decoder = |
| + ImageDecoder::create(*buffer.get(), |
|
eseidel
2015/05/29 22:13:50
You must be using tabs. This indent seems confuse
jackson
2015/05/29 22:54:32
Yes, *.get() is to turn the smart pointer into an
|
| + ImageSource::AlphaPremultiplied, |
| + ImageSource::GammaAndColorProfileIgnored); |
| + bool allDataReceived = TRUE; |
|
eseidel
2015/05/29 22:13:50
true?
|
| + decoder->setData(buffer.get(), allDataReceived); |
| + if (decoder->failed()) { |
| + m_client->notifyLoadFinished(SkBitmap()); |
| + } else { |
| + ImageFrame *frame = decoder->frameBufferAtIndex(0); |
|
eseidel
2015/05/29 22:13:50
ImageFrame*, no space.
|
| + SkBitmap bitmap = frame->getSkBitmap(); |
| + m_client->notifyLoadFinished(bitmap); |
| + } |
| + m_client = nullptr; |
| +} |
| + |
| +} |