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 |