OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 { | 74 { |
75 terminate(); | 75 terminate(); |
76 if (!m_urlForReading.isEmpty()) { | 76 if (!m_urlForReading.isEmpty()) { |
77 if (m_urlForReadingIsStream) | 77 if (m_urlForReadingIsStream) |
78 BlobRegistry::unregisterStreamURL(m_urlForReading); | 78 BlobRegistry::unregisterStreamURL(m_urlForReading); |
79 else | 79 else |
80 BlobRegistry::revokePublicBlobURL(m_urlForReading); | 80 BlobRegistry::revokePublicBlobURL(m_urlForReading); |
81 } | 81 } |
82 } | 82 } |
83 | 83 |
84 void FileReaderLoader::startInternal(ExecutionContext* executionContext, const S
tream* stream, PassRefPtr<BlobDataHandle> blobData) | 84 void FileReaderLoader::startInternal(ExecutionContext& executionContext, const S
tream* stream, PassRefPtr<BlobDataHandle> blobData) |
85 { | 85 { |
86 // The blob is read by routing through the request handling layer given a te
mporary public url. | 86 // The blob is read by routing through the request handling layer given a te
mporary public url. |
87 m_urlForReading = BlobURL::createPublicURL(executionContext->securityOrigin(
)); | 87 m_urlForReading = BlobURL::createPublicURL(executionContext.securityOrigin()
); |
88 if (m_urlForReading.isEmpty()) { | 88 if (m_urlForReading.isEmpty()) { |
89 failed(FileError::SECURITY_ERR); | 89 failed(FileError::SECURITY_ERR); |
90 return; | 90 return; |
91 } | 91 } |
92 | 92 |
93 if (blobData) { | 93 if (blobData) { |
94 ASSERT(!stream); | 94 ASSERT(!stream); |
95 BlobRegistry::registerPublicBlobURL(executionContext->securityOrigin(),
m_urlForReading, blobData); | 95 BlobRegistry::registerPublicBlobURL(executionContext.securityOrigin(), m
_urlForReading, blobData); |
96 } else { | 96 } else { |
97 ASSERT(stream); | 97 ASSERT(stream); |
98 BlobRegistry::registerStreamURL(executionContext->securityOrigin(), m_ur
lForReading, stream->url()); | 98 BlobRegistry::registerStreamURL(executionContext.securityOrigin(), m_url
ForReading, stream->url()); |
99 } | 99 } |
100 | 100 |
101 // Construct and load the request. | 101 // Construct and load the request. |
102 ResourceRequest request(m_urlForReading); | 102 ResourceRequest request(m_urlForReading); |
103 request.setHTTPMethod("GET"); | 103 request.setHTTPMethod("GET"); |
104 if (m_hasRange) | 104 if (m_hasRange) |
105 request.setHTTPHeaderField("Range", AtomicString(String::format("bytes=%
d-%d", m_rangeStart, m_rangeEnd))); | 105 request.setHTTPHeaderField("Range", AtomicString(String::format("bytes=%
d-%d", m_rangeStart, m_rangeEnd))); |
106 | 106 |
107 ThreadableLoaderOptions options; | 107 ThreadableLoaderOptions options; |
108 options.sniffContent = DoNotSniffContent; | 108 options.sniffContent = DoNotSniffContent; |
109 options.preflightPolicy = ConsiderPreflight; | 109 options.preflightPolicy = ConsiderPreflight; |
110 options.allowCredentials = AllowStoredCredentials; | 110 options.allowCredentials = AllowStoredCredentials; |
111 options.crossOriginRequestPolicy = DenyCrossOriginRequests; | 111 options.crossOriginRequestPolicy = DenyCrossOriginRequests; |
112 // FIXME: Is there a directive to which this load should be subject? | 112 // FIXME: Is there a directive to which this load should be subject? |
113 options.contentSecurityPolicyEnforcement = DoNotEnforceContentSecurityPolicy
; | 113 options.contentSecurityPolicyEnforcement = DoNotEnforceContentSecurityPolicy
; |
114 // Use special initiator to hide the request from the inspector. | 114 // Use special initiator to hide the request from the inspector. |
115 options.initiator = FetchInitiatorTypeNames::internal; | 115 options.initiator = FetchInitiatorTypeNames::internal; |
116 | 116 |
117 if (m_client) | 117 if (m_client) |
118 m_loader = ThreadableLoader::create(executionContext, this, request, opt
ions); | 118 m_loader = ThreadableLoader::create(executionContext, this, request, opt
ions); |
119 else | 119 else |
120 ThreadableLoader::loadResourceSynchronously(executionContext, request, *
this, options); | 120 ThreadableLoader::loadResourceSynchronously(executionContext, request, *
this, options); |
121 } | 121 } |
122 | 122 |
123 void FileReaderLoader::start(ExecutionContext* executionContext, PassRefPtr<Blob
DataHandle> blobData) | 123 void FileReaderLoader::start(ExecutionContext* executionContext, PassRefPtr<Blob
DataHandle> blobData) |
124 { | 124 { |
| 125 ASSERT(executionContext); |
125 m_urlForReadingIsStream = false; | 126 m_urlForReadingIsStream = false; |
126 startInternal(executionContext, 0, blobData); | 127 startInternal(*executionContext, 0, blobData); |
127 } | 128 } |
128 | 129 |
129 void FileReaderLoader::start(ExecutionContext* executionContext, const Stream& s
tream, unsigned readSize) | 130 void FileReaderLoader::start(ExecutionContext* executionContext, const Stream& s
tream, unsigned readSize) |
130 { | 131 { |
| 132 ASSERT(executionContext); |
131 if (readSize > 0) { | 133 if (readSize > 0) { |
132 m_hasRange = true; | 134 m_hasRange = true; |
133 m_rangeStart = 0; | 135 m_rangeStart = 0; |
134 m_rangeEnd = readSize - 1; // End is inclusive so (0,0) is a 1-byte read
. | 136 m_rangeEnd = readSize - 1; // End is inclusive so (0,0) is a 1-byte read
. |
135 } | 137 } |
136 | 138 |
137 m_urlForReadingIsStream = true; | 139 m_urlForReadingIsStream = true; |
138 startInternal(executionContext, &stream, nullptr); | 140 startInternal(*executionContext, &stream, nullptr); |
139 } | 141 } |
140 | 142 |
141 void FileReaderLoader::cancel() | 143 void FileReaderLoader::cancel() |
142 { | 144 { |
143 m_errorCode = FileError::ABORT_ERR; | 145 m_errorCode = FileError::ABORT_ERR; |
144 terminate(); | 146 terminate(); |
145 } | 147 } |
146 | 148 |
147 void FileReaderLoader::terminate() | 149 void FileReaderLoader::terminate() |
148 { | 150 { |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 m_stringResult = builder.toString(); | 396 m_stringResult = builder.toString(); |
395 } | 397 } |
396 | 398 |
397 void FileReaderLoader::setEncoding(const String& encoding) | 399 void FileReaderLoader::setEncoding(const String& encoding) |
398 { | 400 { |
399 if (!encoding.isEmpty()) | 401 if (!encoding.isEmpty()) |
400 m_encoding = WTF::TextEncoding(encoding); | 402 m_encoding = WTF::TextEncoding(encoding); |
401 } | 403 } |
402 | 404 |
403 } // namespace WebCore | 405 } // namespace WebCore |
OLD | NEW |