| 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 |