OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 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 26 matching lines...) Expand all Loading... |
37 #include "core/css/CSSStyleRule.h" | 37 #include "core/css/CSSStyleRule.h" |
38 #include "core/css/StylePropertySet.h" | 38 #include "core/css/StylePropertySet.h" |
39 #include "core/css/StyleRule.h" | 39 #include "core/css/StyleRule.h" |
40 #include "core/css/StyleSheetContents.h" | 40 #include "core/css/StyleSheetContents.h" |
41 #include "core/dom/Document.h" | 41 #include "core/dom/Document.h" |
42 #include "core/dom/Element.h" | 42 #include "core/dom/Element.h" |
43 #include "core/dom/Text.h" | 43 #include "core/dom/Text.h" |
44 #include "core/editing/MarkupAccumulator.h" | 44 #include "core/editing/MarkupAccumulator.h" |
45 #include "core/html/HTMLFrameOwnerElement.h" | 45 #include "core/html/HTMLFrameOwnerElement.h" |
46 #include "core/html/HTMLImageElement.h" | 46 #include "core/html/HTMLImageElement.h" |
| 47 #include "core/html/HTMLInputElement.h" |
47 #include "core/html/HTMLLinkElement.h" | 48 #include "core/html/HTMLLinkElement.h" |
48 #include "core/html/HTMLStyleElement.h" | 49 #include "core/html/HTMLStyleElement.h" |
49 #include "core/html/parser/HTMLMetaCharsetParser.h" | 50 #include "core/html/parser/HTMLMetaCharsetParser.h" |
50 #include "core/loader/cache/CachedImage.h" | 51 #include "core/loader/cache/CachedImage.h" |
51 #include "core/page/Frame.h" | 52 #include "core/page/Frame.h" |
52 #include "core/page/Page.h" | 53 #include "core/page/Page.h" |
53 #include "core/platform/SerializedResource.h" | 54 #include "core/platform/SerializedResource.h" |
54 #include "core/platform/graphics/Image.h" | 55 #include "core/platform/graphics/Image.h" |
| 56 #include "core/rendering/RenderImage.h" |
55 #include "core/rendering/style/StyleCachedImage.h" | 57 #include "core/rendering/style/StyleCachedImage.h" |
56 #include "core/rendering/style/StyleImage.h" | 58 #include "core/rendering/style/StyleImage.h" |
57 #include "wtf/text/CString.h" | 59 #include "wtf/text/CString.h" |
58 #include "wtf/text/StringBuilder.h" | 60 #include "wtf/text/StringBuilder.h" |
59 #include "wtf/text/TextEncoding.h" | 61 #include "wtf/text/TextEncoding.h" |
60 #include "wtf/text/WTFString.h" | 62 #include "wtf/text/WTFString.h" |
61 | 63 |
62 namespace WebCore { | 64 namespace WebCore { |
63 | 65 |
64 static bool isCharsetSpecifyingNode(Node* node) | 66 static bool isCharsetSpecifyingNode(Node* node) |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 Element* element = toElement(node); | 218 Element* element = toElement(node); |
217 // We have to process in-line style as it might contain some resources (
typically background images). | 219 // We have to process in-line style as it might contain some resources (
typically background images). |
218 if (element->isStyledElement()) | 220 if (element->isStyledElement()) |
219 retrieveResourcesForProperties(element->inlineStyle(), document); | 221 retrieveResourcesForProperties(element->inlineStyle(), document); |
220 | 222 |
221 if (element->hasTagName(HTMLNames::imgTag)) { | 223 if (element->hasTagName(HTMLNames::imgTag)) { |
222 HTMLImageElement* imageElement = toHTMLImageElement(element); | 224 HTMLImageElement* imageElement = toHTMLImageElement(element); |
223 KURL url = document->completeURL(imageElement->getAttribute(HTMLName
s::srcAttr)); | 225 KURL url = document->completeURL(imageElement->getAttribute(HTMLName
s::srcAttr)); |
224 CachedImage* cachedImage = imageElement->cachedImage(); | 226 CachedImage* cachedImage = imageElement->cachedImage(); |
225 addImageToResources(cachedImage, imageElement->renderer(), url); | 227 addImageToResources(cachedImage, imageElement->renderer(), url); |
| 228 } else if (element->hasTagName(HTMLNames::inputTag)) { |
| 229 HTMLInputElement* inputElement = toHTMLInputElement(element); |
| 230 if (inputElement->isImageButton() && inputElement->hasImageLoader())
{ |
| 231 KURL url = inputElement->src(); |
| 232 CachedImage* cachedImage = inputElement->imageLoader()->image(); |
| 233 addImageToResources(cachedImage, inputElement->renderer(), url); |
| 234 } |
226 } else if (element->hasTagName(HTMLNames::linkTag)) { | 235 } else if (element->hasTagName(HTMLNames::linkTag)) { |
227 HTMLLinkElement* linkElement = toHTMLLinkElement(element); | 236 HTMLLinkElement* linkElement = toHTMLLinkElement(element); |
228 if (CSSStyleSheet* sheet = linkElement->sheet()) { | 237 if (CSSStyleSheet* sheet = linkElement->sheet()) { |
229 KURL url = document->completeURL(linkElement->getAttribute(HTMLN
ames::hrefAttr)); | 238 KURL url = document->completeURL(linkElement->getAttribute(HTMLN
ames::hrefAttr)); |
230 serializeCSSStyleSheet(sheet, url); | 239 serializeCSSStyleSheet(sheet, url); |
231 ASSERT(m_resourceURLs.contains(url)); | 240 ASSERT(m_resourceURLs.contains(url)); |
232 } | 241 } |
233 } else if (element->hasTagName(HTMLNames::styleTag)) { | 242 } else if (element->hasTagName(HTMLNames::styleTag)) { |
234 HTMLStyleElement* styleElement = toHTMLStyleElement(element); | 243 HTMLStyleElement* styleElement = toHTMLStyleElement(element); |
235 if (CSSStyleSheet* sheet = styleElement->sheet()) | 244 if (CSSStyleSheet* sheet = styleElement->sheet()) |
(...skipping 20 matching lines...) Expand all Loading... |
256 // Some rules have resources associated with them that we need to retrie
ve. | 265 // Some rules have resources associated with them that we need to retrie
ve. |
257 if (rule->type() == CSSRule::IMPORT_RULE) { | 266 if (rule->type() == CSSRule::IMPORT_RULE) { |
258 CSSImportRule* importRule = static_cast<CSSImportRule*>(rule); | 267 CSSImportRule* importRule = static_cast<CSSImportRule*>(rule); |
259 KURL importURL = document->completeURL(importRule->href()); | 268 KURL importURL = document->completeURL(importRule->href()); |
260 if (m_resourceURLs.contains(importURL)) | 269 if (m_resourceURLs.contains(importURL)) |
261 continue; | 270 continue; |
262 serializeCSSStyleSheet(importRule->styleSheet(), importURL); | 271 serializeCSSStyleSheet(importRule->styleSheet(), importURL); |
263 } else if (rule->type() == CSSRule::FONT_FACE_RULE) { | 272 } else if (rule->type() == CSSRule::FONT_FACE_RULE) { |
264 // FIXME: Add support for font face rule. It is not clear to me at t
his point if the actual otf/eot file can | 273 // FIXME: Add support for font face rule. It is not clear to me at t
his point if the actual otf/eot file can |
265 // be retrieved from the CSSFontFaceRule object. | 274 // be retrieved from the CSSFontFaceRule object. |
266 } else if (rule->type() == CSSRule::STYLE_RULE) | 275 } else if (rule->type() == CSSRule::STYLE_RULE) { |
267 retrieveResourcesForRule(static_cast<CSSStyleRule*>(rule)->styleRule
(), document); | 276 retrieveResourcesForRule(static_cast<CSSStyleRule*>(rule)->styleRule
(), document); |
| 277 } |
268 } | 278 } |
269 | 279 |
270 if (url.isValid() && !m_resourceURLs.contains(url)) { | 280 if (url.isValid() && !m_resourceURLs.contains(url)) { |
271 // FIXME: We should check whether a charset has been specified and if no
ne was found add one. | 281 // FIXME: We should check whether a charset has been specified and if no
ne was found add one. |
272 WTF::TextEncoding textEncoding(styleSheet->contents()->charset()); | 282 WTF::TextEncoding textEncoding(styleSheet->contents()->charset()); |
273 ASSERT(textEncoding.isValid()); | 283 ASSERT(textEncoding.isValid()); |
274 String textString = cssText.toString(); | 284 String textString = cssText.toString(); |
275 CString text = textEncoding.normalizeAndEncode(textString, WTF::Entities
ForUnencodables); | 285 CString text = textEncoding.normalizeAndEncode(textString, WTF::Entities
ForUnencodables); |
276 m_resources->append(SerializedResource(url, String("text/css"), SharedBu
ffer::create(text.data(), text.length()))); | 286 m_resources->append(SerializedResource(url, String("text/css"), SharedBu
ffer::create(text.data(), text.length()))); |
277 m_resourceURLs.add(url); | 287 m_resourceURLs.add(url); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 if (iter != m_blankFrameURLs.end()) | 346 if (iter != m_blankFrameURLs.end()) |
337 return iter->value; | 347 return iter->value; |
338 String url = "wyciwyg://frame/" + String::number(m_blankFrameCounter++); | 348 String url = "wyciwyg://frame/" + String::number(m_blankFrameCounter++); |
339 KURL fakeURL(ParsedURLString, url); | 349 KURL fakeURL(ParsedURLString, url); |
340 m_blankFrameURLs.add(frame, fakeURL); | 350 m_blankFrameURLs.add(frame, fakeURL); |
341 | 351 |
342 return fakeURL; | 352 return fakeURL; |
343 } | 353 } |
344 | 354 |
345 } | 355 } |
OLD | NEW |