| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 #include "core/fetch/TextResource.h" | 6 #include "core/fetch/TextResource.h" |
| 7 | 7 |
| 8 #include "core/html/parser/TextResourceDecoder.h" | 8 #include "core/html/parser/TextResourceDecoder.h" |
| 9 #include "platform/SharedBuffer.h" | 9 #include "platform/SharedBuffer.h" |
| 10 #include "wtf/text/StringBuilder.h" |
| 10 | 11 |
| 11 namespace blink { | 12 namespace blink { |
| 12 | 13 |
| 13 TextResource::TextResource(const ResourceRequest& resourceRequest, Resource::Typ
e type, const String& mimeType, const String& charset) | 14 TextResource::TextResource(const ResourceRequest& resourceRequest, Resource::Typ
e type, const String& mimeType, const String& charset) |
| 14 : Resource(resourceRequest, type) | 15 : Resource(resourceRequest, type) |
| 15 , m_decoder(TextResourceDecoder::create(mimeType, charset)) | 16 , m_decoder(TextResourceDecoder::create(mimeType, charset)) |
| 16 { | 17 { |
| 17 } | 18 } |
| 18 | 19 |
| 19 TextResource::~TextResource() | 20 TextResource::~TextResource() |
| 20 { | 21 { |
| 21 } | 22 } |
| 22 | 23 |
| 23 void TextResource::setEncoding(const String& chs) | 24 void TextResource::setEncoding(const String& chs) |
| 24 { | 25 { |
| 25 m_decoder->setEncoding(chs, TextResourceDecoder::EncodingFromHTTPHeader); | 26 m_decoder->setEncoding(chs, TextResourceDecoder::EncodingFromHTTPHeader); |
| 26 } | 27 } |
| 27 | 28 |
| 28 String TextResource::encoding() const | 29 String TextResource::encoding() const |
| 29 { | 30 { |
| 30 return m_decoder->encoding().name(); | 31 return m_decoder->encoding().name(); |
| 31 } | 32 } |
| 32 | 33 |
| 33 String TextResource::decodedText() const | 34 String TextResource::decodedText() const |
| 34 { | 35 { |
| 35 ASSERT(m_data); | 36 ASSERT(m_data); |
| 36 | 37 |
| 37 String text = m_decoder->decode(m_data->data(), encodedSize()); | 38 StringBuilder builder; |
| 38 text.append(m_decoder->flush()); | 39 const char* data; |
| 39 return text; | 40 unsigned position = 0; |
| 41 while (unsigned length = m_data->getSomeData(data, position)) { |
| 42 builder.append(m_decoder->decode(data, length)); |
| 43 position += length; |
| 44 } |
| 45 builder.append(m_decoder->flush()); |
| 46 return builder.toString(); |
| 40 } | 47 } |
| 41 | 48 |
| 42 } // namespace blink | 49 } // namespace blink |
| OLD | NEW |