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 Apple Computer, Inc. | 6 Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. |
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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 // because setCSSStyleSheet() may cause scripts to be executed, which could
destroy 'c' if it is an instance of HTMLLinkElement. | 80 // because setCSSStyleSheet() may cause scripts to be executed, which could
destroy 'c' if it is an instance of HTMLLinkElement. |
81 // see the comment of HTMLLinkElement::setCSSStyleSheet. | 81 // see the comment of HTMLLinkElement::setCSSStyleSheet. |
82 Resource::didAddClient(c); | 82 Resource::didAddClient(c); |
83 | 83 |
84 if (!isLoading()) | 84 if (!isLoading()) |
85 static_cast<StyleSheetResourceClient*>(c)->setCSSStyleSheet(resourceRequ
est().url(), response().url(), encoding(), this); | 85 static_cast<StyleSheetResourceClient*>(c)->setCSSStyleSheet(resourceRequ
est().url(), response().url(), encoding(), this); |
86 } | 86 } |
87 | 87 |
88 const String CSSStyleSheetResource::sheetText(MIMETypeCheck mimeTypeCheck) const | 88 const String CSSStyleSheetResource::sheetText(MIMETypeCheck mimeTypeCheck) const |
89 { | 89 { |
90 ASSERT(!isPurgeable()); | |
91 | |
92 if (!data() || data()->isEmpty() || !canUseSheet(mimeTypeCheck)) | 90 if (!data() || data()->isEmpty() || !canUseSheet(mimeTypeCheck)) |
93 return String(); | 91 return String(); |
94 | 92 |
95 if (!m_decodedSheetText.isNull()) | 93 if (!m_decodedSheetText.isNull()) |
96 return m_decodedSheetText; | 94 return m_decodedSheetText; |
97 | 95 |
98 // Don't cache the decoded text, regenerating is cheap and it can use quite
a bit of memory | 96 // Don't cache the decoded text, regenerating is cheap and it can use quite
a bit of memory |
99 return decodedText(); | 97 return decodedText(); |
100 } | 98 } |
101 | 99 |
102 void CSSStyleSheetResource::checkNotify() | 100 void CSSStyleSheetResource::checkNotify() |
103 { | 101 { |
104 // Decode the data to find out the encoding and keep the sheet text around d
uring checkNotify() | 102 // Decode the data to find out the encoding and keep the sheet text around d
uring checkNotify() |
105 if (data()) | 103 if (data()) |
106 m_decodedSheetText = decodedText(); | 104 m_decodedSheetText = decodedText(); |
107 | 105 |
108 ResourceClientWalker<StyleSheetResourceClient> w(clients()); | 106 ResourceClientWalker<StyleSheetResourceClient> w(clients()); |
109 while (StyleSheetResourceClient* c = w.next()) | 107 while (StyleSheetResourceClient* c = w.next()) |
110 c->setCSSStyleSheet(resourceRequest().url(), response().url(), encoding(
), this); | 108 c->setCSSStyleSheet(resourceRequest().url(), response().url(), encoding(
), this); |
111 // Clear the decoded text as it is unlikely to be needed immediately again a
nd is cheap to regenerate. | 109 // Clear the decoded text as it is unlikely to be needed immediately again a
nd is cheap to regenerate. |
112 m_decodedSheetText = String(); | 110 m_decodedSheetText = String(); |
113 } | 111 } |
114 | 112 |
115 bool CSSStyleSheetResource::isSafeToUnlock() const | |
116 { | |
117 return data()->hasOneRef(); | |
118 } | |
119 | |
120 void CSSStyleSheetResource::destroyDecodedDataIfPossible() | 113 void CSSStyleSheetResource::destroyDecodedDataIfPossible() |
121 { | 114 { |
122 if (!m_parsedStyleSheetCache) | 115 if (!m_parsedStyleSheetCache) |
123 return; | 116 return; |
124 | 117 |
125 setParsedStyleSheetCache(nullptr); | 118 setParsedStyleSheetCache(nullptr); |
126 setDecodedSize(0); | 119 setDecodedSize(0); |
127 } | 120 } |
128 | 121 |
129 bool CSSStyleSheetResource::canUseSheet(MIMETypeCheck mimeTypeCheck) const | 122 bool CSSStyleSheetResource::canUseSheet(MIMETypeCheck mimeTypeCheck) const |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 // This stylesheet resource did conflict with another resource and was | 166 // This stylesheet resource did conflict with another resource and was |
174 // not added to the cache. | 167 // not added to the cache. |
175 setParsedStyleSheetCache(nullptr); | 168 setParsedStyleSheetCache(nullptr); |
176 return; | 169 return; |
177 } | 170 } |
178 setParsedStyleSheetCache(sheet); | 171 setParsedStyleSheetCache(sheet); |
179 setDecodedSize(m_parsedStyleSheetCache->estimatedSizeInBytes()); | 172 setDecodedSize(m_parsedStyleSheetCache->estimatedSizeInBytes()); |
180 } | 173 } |
181 | 174 |
182 } // namespace blink | 175 } // namespace blink |
OLD | NEW |