| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "core/loader/TextResourceDecoderBuilder.h" | 31 #include "core/loader/TextResourceDecoderBuilder.h" |
| 32 | 32 |
| 33 #include "core/dom/Document.h" | 33 #include "core/dom/Document.h" |
| 34 #include "core/frame/LocalFrame.h" | 34 #include "core/frame/LocalFrame.h" |
| 35 #include "core/frame/Settings.h" | 35 #include "core/frame/Settings.h" |
| 36 #include "platform/weborigin/SecurityOrigin.h" | 36 #include "platform/weborigin/SecurityOrigin.h" |
| 37 #include <memory> |
| 37 | 38 |
| 38 namespace blink { | 39 namespace blink { |
| 39 | 40 |
| 40 static inline bool canReferToParentFrameEncoding(const LocalFrame* frame, const
LocalFrame* parentFrame) | 41 static inline bool canReferToParentFrameEncoding(const LocalFrame* frame, const
LocalFrame* parentFrame) |
| 41 { | 42 { |
| 42 return parentFrame && parentFrame->document()->getSecurityOrigin()->canAcces
s(frame->document()->getSecurityOrigin()); | 43 return parentFrame && parentFrame->document()->getSecurityOrigin()->canAcces
s(frame->document()->getSecurityOrigin()); |
| 43 } | 44 } |
| 44 | 45 |
| 45 namespace { | 46 namespace { |
| 46 | 47 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 : m_mimeType(mimeType) | 122 : m_mimeType(mimeType) |
| 122 , m_encoding(encoding) | 123 , m_encoding(encoding) |
| 123 { | 124 { |
| 124 } | 125 } |
| 125 | 126 |
| 126 TextResourceDecoderBuilder::~TextResourceDecoderBuilder() | 127 TextResourceDecoderBuilder::~TextResourceDecoderBuilder() |
| 127 { | 128 { |
| 128 } | 129 } |
| 129 | 130 |
| 130 | 131 |
| 131 inline PassOwnPtr<TextResourceDecoder> TextResourceDecoderBuilder::createDecoder
Instance(Document* document) | 132 inline std::unique_ptr<TextResourceDecoder> TextResourceDecoderBuilder::createDe
coderInstance(Document* document) |
| 132 { | 133 { |
| 133 const WTF::TextEncoding encodingFromDomain = getEncodingFromDomain(document-
>url()); | 134 const WTF::TextEncoding encodingFromDomain = getEncodingFromDomain(document-
>url()); |
| 134 if (LocalFrame* frame = document->frame()) { | 135 if (LocalFrame* frame = document->frame()) { |
| 135 if (Settings* settings = frame->settings()) | 136 if (Settings* settings = frame->settings()) |
| 136 return TextResourceDecoder::create(m_mimeType, encodingFromDomain.is
Valid() ? encodingFromDomain : settings->defaultTextEncodingName(), settings->us
esEncodingDetector()); | 137 return TextResourceDecoder::create(m_mimeType, encodingFromDomain.is
Valid() ? encodingFromDomain : settings->defaultTextEncodingName(), settings->us
esEncodingDetector()); |
| 137 } | 138 } |
| 138 | 139 |
| 139 return TextResourceDecoder::create(m_mimeType, encodingFromDomain); | 140 return TextResourceDecoder::create(m_mimeType, encodingFromDomain); |
| 140 } | 141 } |
| 141 | 142 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 160 // we may consider relaxing this later after testing. | 161 // we may consider relaxing this later after testing. |
| 161 if (frame && canReferToParentFrameEncoding(frame, parentFrame)) { | 162 if (frame && canReferToParentFrameEncoding(frame, parentFrame)) { |
| 162 if (parentFrame->document()->encodingWasDetectedHeuristically()) | 163 if (parentFrame->document()->encodingWasDetectedHeuristically()) |
| 163 decoder->setHintEncoding(parentFrame->document()->encoding()); | 164 decoder->setHintEncoding(parentFrame->document()->encoding()); |
| 164 | 165 |
| 165 if (m_encoding.isEmpty()) | 166 if (m_encoding.isEmpty()) |
| 166 decoder->setEncoding(parentFrame->document()->encoding(), TextResour
ceDecoder::EncodingFromParentFrame); | 167 decoder->setEncoding(parentFrame->document()->encoding(), TextResour
ceDecoder::EncodingFromParentFrame); |
| 167 } | 168 } |
| 168 } | 169 } |
| 169 | 170 |
| 170 PassOwnPtr<TextResourceDecoder> TextResourceDecoderBuilder::buildFor(Document* d
ocument) | 171 std::unique_ptr<TextResourceDecoder> TextResourceDecoderBuilder::buildFor(Docume
nt* document) |
| 171 { | 172 { |
| 172 OwnPtr<TextResourceDecoder> decoder = createDecoderInstance(document); | 173 std::unique_ptr<TextResourceDecoder> decoder = createDecoderInstance(documen
t); |
| 173 setupEncoding(decoder.get(), document); | 174 setupEncoding(decoder.get(), document); |
| 174 return decoder; | 175 return decoder; |
| 175 } | 176 } |
| 176 | 177 |
| 177 void TextResourceDecoderBuilder::clear() | 178 void TextResourceDecoderBuilder::clear() |
| 178 { | 179 { |
| 179 m_encoding = nullAtom; | 180 m_encoding = nullAtom; |
| 180 } | 181 } |
| 181 | 182 |
| 182 } // namespace blink | 183 } // namespace blink |
| OLD | NEW |