| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2011 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 | 23 |
| 24 #include "Frame.h" | 24 #include "Frame.h" |
| 25 #include "FrameLoader.h" | 25 #include "FrameLoader.h" |
| 26 #include "FrameLoaderClient.h" | 26 #include "FrameLoaderClient.h" |
| 27 #include "HTMLImageLoader.h" | 27 #include "HTMLImageLoader.h" |
| 28 #include "HTMLNames.h" | 28 #include "HTMLNames.h" |
| 29 #include "Image.h" | 29 #include "Image.h" |
| 30 #include "Page.h" | 30 #include "Page.h" |
| 31 #include "RenderEmbeddedObject.h" | 31 #include "RenderEmbeddedObject.h" |
| 32 #include "RenderImage.h" | 32 #include "RenderImage.h" |
| 33 #include "SecurityOrigin.h" |
| 33 | 34 |
| 34 namespace WebCore { | 35 namespace WebCore { |
| 35 | 36 |
| 36 HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Doc
ument* document, bool createdByParser, PreferPlugInsForImagesOption preferPlugIn
sForImagesOption) | 37 HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Doc
ument* document, bool createdByParser, PreferPlugInsForImagesOption preferPlugIn
sForImagesOption) |
| 37 : HTMLPlugInElement(tagName, document) | 38 : HTMLPlugInElement(tagName, document) |
| 38 // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay | 39 // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay |
| 39 // widget updates until after all children are parsed. For HTMLEmbedElement | 40 // widget updates until after all children are parsed. For HTMLEmbedElement |
| 40 // this delay is unnecessary, but it is simpler to make both classes share | 41 // this delay is unnecessary, but it is simpler to make both classes share |
| 41 // the same codepath in this class. | 42 // the same codepath in this class. |
| 42 , m_needsWidgetUpdate(!createdByParser) | 43 , m_needsWidgetUpdate(!createdByParser) |
| (...skipping 26 matching lines...) Expand all Loading... |
| 69 | 70 |
| 70 // We don't use m_url, as it may not be the final URL that the object loads, | 71 // We don't use m_url, as it may not be the final URL that the object loads, |
| 71 // depending on <param> values. | 72 // depending on <param> values. |
| 72 bool HTMLPlugInImageElement::allowedToLoadFrameURL(const String& url) | 73 bool HTMLPlugInImageElement::allowedToLoadFrameURL(const String& url) |
| 73 { | 74 { |
| 74 ASSERT(document()); | 75 ASSERT(document()); |
| 75 ASSERT(document()->frame()); | 76 ASSERT(document()->frame()); |
| 76 if (document()->frame()->page()->frameCount() >= Page::maxNumberOfFrames) | 77 if (document()->frame()->page()->frameCount() >= Page::maxNumberOfFrames) |
| 77 return false; | 78 return false; |
| 78 | 79 |
| 80 KURL completeURL = document()->completeURL(url); |
| 81 |
| 82 if (contentFrame() && protocolIsJavaScript(completeURL) |
| 83 && !document()->securityOrigin()->canAccess(contentDocument()->securityO
rigin())) |
| 84 return false; |
| 85 |
| 79 // We allow one level of self-reference because some sites depend on that. | 86 // We allow one level of self-reference because some sites depend on that. |
| 80 // But we don't allow more than one. | 87 // But we don't allow more than one. |
| 81 KURL completeURL = document()->completeURL(url); | |
| 82 bool foundSelfReference = false; | 88 bool foundSelfReference = false; |
| 83 for (Frame* frame = document()->frame(); frame; frame = frame->tree()->paren
t()) { | 89 for (Frame* frame = document()->frame(); frame; frame = frame->tree()->paren
t()) { |
| 84 if (equalIgnoringFragmentIdentifier(frame->document()->url(), completeUR
L)) { | 90 if (equalIgnoringFragmentIdentifier(frame->document()->url(), completeUR
L)) { |
| 85 if (foundSelfReference) | 91 if (foundSelfReference) |
| 86 return false; | 92 return false; |
| 87 foundSelfReference = true; | 93 foundSelfReference = true; |
| 88 } | 94 } |
| 89 } | 95 } |
| 90 return true; | 96 return true; |
| 91 } | 97 } |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 m_imageLoader->elementWillMoveToNewOwnerDocument(); | 193 m_imageLoader->elementWillMoveToNewOwnerDocument(); |
| 188 HTMLPlugInElement::willMoveToNewOwnerDocument(); | 194 HTMLPlugInElement::willMoveToNewOwnerDocument(); |
| 189 } | 195 } |
| 190 | 196 |
| 191 void HTMLPlugInImageElement::updateWidgetCallback(Node* n, unsigned) | 197 void HTMLPlugInImageElement::updateWidgetCallback(Node* n, unsigned) |
| 192 { | 198 { |
| 193 static_cast<HTMLPlugInImageElement*>(n)->updateWidgetIfNecessary(); | 199 static_cast<HTMLPlugInImageElement*>(n)->updateWidgetIfNecessary(); |
| 194 } | 200 } |
| 195 | 201 |
| 196 } // namespace WebCore | 202 } // namespace WebCore |
| OLD | NEW |