| 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> | |
| 38 | 37 |
| 39 namespace blink { | 38 namespace blink { |
| 40 | 39 |
| 41 static inline bool canReferToParentFrameEncoding(const LocalFrame* frame, const
LocalFrame* parentFrame) | 40 static inline bool canReferToParentFrameEncoding(const LocalFrame* frame, const
LocalFrame* parentFrame) |
| 42 { | 41 { |
| 43 return parentFrame && parentFrame->document()->getSecurityOrigin()->canAcces
s(frame->document()->getSecurityOrigin()); | 42 return parentFrame && parentFrame->document()->getSecurityOrigin()->canAcces
s(frame->document()->getSecurityOrigin()); |
| 44 } | 43 } |
| 45 | 44 |
| 46 namespace { | 45 namespace { |
| 47 | 46 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 : m_mimeType(mimeType) | 121 : m_mimeType(mimeType) |
| 123 , m_encoding(encoding) | 122 , m_encoding(encoding) |
| 124 { | 123 { |
| 125 } | 124 } |
| 126 | 125 |
| 127 TextResourceDecoderBuilder::~TextResourceDecoderBuilder() | 126 TextResourceDecoderBuilder::~TextResourceDecoderBuilder() |
| 128 { | 127 { |
| 129 } | 128 } |
| 130 | 129 |
| 131 | 130 |
| 132 inline std::unique_ptr<TextResourceDecoder> TextResourceDecoderBuilder::createDe
coderInstance(Document* document) | 131 inline PassOwnPtr<TextResourceDecoder> TextResourceDecoderBuilder::createDecoder
Instance(Document* document) |
| 133 { | 132 { |
| 134 const WTF::TextEncoding encodingFromDomain = getEncodingFromDomain(document-
>url()); | 133 const WTF::TextEncoding encodingFromDomain = getEncodingFromDomain(document-
>url()); |
| 135 if (LocalFrame* frame = document->frame()) { | 134 if (LocalFrame* frame = document->frame()) { |
| 136 if (Settings* settings = frame->settings()) | 135 if (Settings* settings = frame->settings()) |
| 137 return TextResourceDecoder::create(m_mimeType, encodingFromDomain.is
Valid() ? encodingFromDomain : settings->defaultTextEncodingName(), settings->us
esEncodingDetector()); | 136 return TextResourceDecoder::create(m_mimeType, encodingFromDomain.is
Valid() ? encodingFromDomain : settings->defaultTextEncodingName(), settings->us
esEncodingDetector()); |
| 138 } | 137 } |
| 139 | 138 |
| 140 return TextResourceDecoder::create(m_mimeType, encodingFromDomain); | 139 return TextResourceDecoder::create(m_mimeType, encodingFromDomain); |
| 141 } | 140 } |
| 142 | 141 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 161 // we may consider relaxing this later after testing. | 160 // we may consider relaxing this later after testing. |
| 162 if (frame && canReferToParentFrameEncoding(frame, parentFrame)) { | 161 if (frame && canReferToParentFrameEncoding(frame, parentFrame)) { |
| 163 if (parentFrame->document()->encodingWasDetectedHeuristically()) | 162 if (parentFrame->document()->encodingWasDetectedHeuristically()) |
| 164 decoder->setHintEncoding(parentFrame->document()->encoding()); | 163 decoder->setHintEncoding(parentFrame->document()->encoding()); |
| 165 | 164 |
| 166 if (m_encoding.isEmpty()) | 165 if (m_encoding.isEmpty()) |
| 167 decoder->setEncoding(parentFrame->document()->encoding(), TextResour
ceDecoder::EncodingFromParentFrame); | 166 decoder->setEncoding(parentFrame->document()->encoding(), TextResour
ceDecoder::EncodingFromParentFrame); |
| 168 } | 167 } |
| 169 } | 168 } |
| 170 | 169 |
| 171 std::unique_ptr<TextResourceDecoder> TextResourceDecoderBuilder::buildFor(Docume
nt* document) | 170 PassOwnPtr<TextResourceDecoder> TextResourceDecoderBuilder::buildFor(Document* d
ocument) |
| 172 { | 171 { |
| 173 std::unique_ptr<TextResourceDecoder> decoder = createDecoderInstance(documen
t); | 172 OwnPtr<TextResourceDecoder> decoder = createDecoderInstance(document); |
| 174 setupEncoding(decoder.get(), document); | 173 setupEncoding(decoder.get(), document); |
| 175 return decoder; | 174 return decoder; |
| 176 } | 175 } |
| 177 | 176 |
| 178 void TextResourceDecoderBuilder::clear() | 177 void TextResourceDecoderBuilder::clear() |
| 179 { | 178 { |
| 180 m_encoding = nullAtom; | 179 m_encoding = nullAtom; |
| 181 } | 180 } |
| 182 | 181 |
| 183 } // namespace blink | 182 } // namespace blink |
| OLD | NEW |