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 |