#include "config.h"
#include "core/fetch/ScriptResource.h"
-#include "core/fetch/TextResourceDecoder.h"
-#include "core/platform/MIMETypeRegistry.h"
+#include "core/fetch/ResourceClientWalker.h"
+#include "platform/MIMETypeRegistry.h"
#include "platform/SharedBuffer.h"
#include "platform/network/HTTPParsers.h"
-namespace WebCore {
+namespace blink {
ScriptResource::ScriptResource(const ResourceRequest& resourceRequest, const String& charset)
- : Resource(resourceRequest, Script)
- , m_decoder(TextResourceDecoder::create("application/javascript", charset))
+ : TextResource(resourceRequest, Script, "application/javascript", charset)
{
DEFINE_STATIC_LOCAL(const AtomicString, acceptScript, ("*/*", AtomicString::ConstructFromLiteral));
{
}
-void ScriptResource::setEncoding(const String& chs)
+void ScriptResource::didAddClient(ResourceClient* client)
{
- m_decoder->setEncoding(chs, TextResourceDecoder::EncodingFromHTTPHeader);
+ ASSERT(client->resourceClientType() == ScriptResourceClient::expectedType());
+ Resource::didAddClient(client);
}
-String ScriptResource::encoding() const
+void ScriptResource::appendData(const char* data, int length)
{
- return m_decoder->encoding().name();
+ Resource::appendData(data, length);
+ ResourceClientWalker<ScriptResourceClient> walker(m_clients);
+ while (ScriptResourceClient* client = walker.next())
+ client->notifyAppendData(this);
}
-String ScriptResource::mimeType() const
+AtomicString ScriptResource::mimeType() const
{
return extractMIMETypeFromMediaType(m_response.httpHeaderField("Content-Type")).lower();
}
ASSERT(isLoaded());
if (!m_script && m_data) {
- String script = m_decoder->decode(m_data->data(), encodedSize());
- script.append(m_decoder->flush());
+ String script = decodedText();
m_data.clear();
// We lie a it here and claim that script counts as encoded data (even though it's really decoded data).
// That's because the MemoryCache thinks that it can clear out decoded data by calling destroyDecodedData(),
// but we can't destroy script in destroyDecodedData because that's our only copy of the data!
setEncodedSize(script.sizeInBytes());
- m_script = script;
+ m_script = AtomicString(script);
}
return m_script.string();
return parseContentTypeOptionsHeader(m_response.httpHeaderField("X-Content-Type-Options")) != ContentTypeOptionsNosniff || MIMETypeRegistry::isSupportedJavaScriptMIMEType(mimeType());
}
-} // namespace WebCore
+} // namespace blink