OLD | NEW |
1 /* | 1 /* |
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 6 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
7 | 7 |
8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 ResourceClientWalker<ScriptResourceClient> walker(m_clients); | 74 ResourceClientWalker<ScriptResourceClient> walker(m_clients); |
75 while (ScriptResourceClient* client = walker.next()) | 75 while (ScriptResourceClient* client = walker.next()) |
76 client->notifyAppendData(this); | 76 client->notifyAppendData(this); |
77 } | 77 } |
78 | 78 |
79 void ScriptResource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, WebP
rocessMemoryDump* memoryDump) const | 79 void ScriptResource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, WebP
rocessMemoryDump* memoryDump) const |
80 { | 80 { |
81 Resource::onMemoryDump(levelOfDetail, memoryDump); | 81 Resource::onMemoryDump(levelOfDetail, memoryDump); |
82 const String name = getMemoryDumpName() + "/decoded_script"; | 82 const String name = getMemoryDumpName() + "/decoded_script"; |
83 auto dump = memoryDump->createMemoryAllocatorDump(name); | 83 auto dump = memoryDump->createMemoryAllocatorDump(name); |
84 dump->addScalar("size", "bytes", m_script.string().sizeInBytes()); | 84 dump->addScalar("size", "bytes", m_script.currentSizeInBytes()); |
85 memoryDump->addSuballocation(dump->guid(), String(WTF::Partitions::kAllocate
dObjectPoolName)); | 85 memoryDump->addSuballocation(dump->guid(), String(WTF::Partitions::kAllocate
dObjectPoolName)); |
86 } | 86 } |
87 | 87 |
88 AtomicString ScriptResource::mimeType() const | 88 AtomicString ScriptResource::mimeType() const |
89 { | 89 { |
90 return extractMIMETypeFromMediaType(m_response.httpHeaderField(HTTPNames::Co
ntent_Type)).lower(); | 90 return extractMIMETypeFromMediaType(m_response.httpHeaderField(HTTPNames::Co
ntent_Type)).lower(); |
91 } | 91 } |
92 | 92 |
93 const String& ScriptResource::script() | 93 const CompressibleString& ScriptResource::script() |
94 { | 94 { |
95 ASSERT(!isPurgeable()); | 95 ASSERT(!isPurgeable()); |
96 ASSERT(isLoaded()); | 96 ASSERT(isLoaded()); |
97 | 97 |
98 if (!m_script && m_data) { | 98 if (m_script.isNull() && m_data) { |
99 String script = decodedText(); | 99 String script = decodedText(); |
100 m_data.clear(); | 100 m_data.clear(); |
101 // We lie a it here and claim that script counts as encoded data (even t
hough it's really decoded data). | 101 // We lie a it here and claim that script counts as encoded data (even t
hough it's really decoded data). |
102 // That's because the MemoryCache thinks that it can clear out decoded d
ata by calling destroyDecodedData(), | 102 // That's because the MemoryCache thinks that it can clear out decoded d
ata by calling destroyDecodedData(), |
103 // but we can't destroy script in destroyDecodedData because that's our
only copy of the data! | 103 // but we can't destroy script in destroyDecodedData because that's our
only copy of the data! |
104 setEncodedSize(script.sizeInBytes()); | 104 setEncodedSize(script.sizeInBytes()); |
105 m_script = AtomicString(script); | 105 m_script = CompressibleString(script.impl()); |
106 } | 106 } |
107 | 107 |
108 return m_script.string(); | 108 return m_script; |
109 } | 109 } |
110 | 110 |
111 void ScriptResource::destroyDecodedDataForFailedRevalidation() | 111 void ScriptResource::destroyDecodedDataForFailedRevalidation() |
112 { | 112 { |
113 m_script = AtomicString(); | 113 m_script = CompressibleString(); |
114 } | 114 } |
115 | 115 |
116 bool ScriptResource::mimeTypeAllowedByNosniff() const | 116 bool ScriptResource::mimeTypeAllowedByNosniff() const |
117 { | 117 { |
118 return parseContentTypeOptionsHeader(m_response.httpHeaderField(HTTPNames::X
_Content_Type_Options)) != ContentTypeOptionsNosniff || MIMETypeRegistry::isSupp
ortedJavaScriptMIMEType(mimeType()); | 118 return parseContentTypeOptionsHeader(m_response.httpHeaderField(HTTPNames::X
_Content_Type_Options)) != ContentTypeOptionsNosniff || MIMETypeRegistry::isSupp
ortedJavaScriptMIMEType(mimeType()); |
119 } | 119 } |
120 | 120 |
121 bool ScriptResource::mustRefetchDueToIntegrityMetadata(const FetchRequest& reque
st) const | 121 bool ScriptResource::mustRefetchDueToIntegrityMetadata(const FetchRequest& reque
st) const |
122 { | 122 { |
123 if (request.integrityMetadata().isEmpty()) | 123 if (request.integrityMetadata().isEmpty()) |
124 return false; | 124 return false; |
125 | 125 |
126 return !IntegrityMetadata::setsEqual(m_integrityMetadata, request.integrityM
etadata()); | 126 return !IntegrityMetadata::setsEqual(m_integrityMetadata, request.integrityM
etadata()); |
127 } | 127 } |
128 | 128 |
129 } // namespace blink | 129 } // namespace blink |
OLD | NEW |