Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / fetch / ScriptResource.cpp
index 52bfa54..0bc6614 100644 (file)
 #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));
 
@@ -50,17 +49,21 @@ ScriptResource::~ScriptResource()
 {
 }
 
-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();
 }
@@ -71,14 +74,13 @@ const String& ScriptResource::script()
     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();
@@ -89,4 +91,4 @@ bool ScriptResource::mimeTypeAllowedByNosniff() const
     return parseContentTypeOptionsHeader(m_response.httpHeaderField("X-Content-Type-Options")) != ContentTypeOptionsNosniff || MIMETypeRegistry::isSupportedJavaScriptMIMEType(mimeType());
 }
 
-} // namespace WebCore
+} // namespace blink