Changeset 87539 in webkit
- Timestamp:
- May 27, 2011 12:53:45 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r87538 r87539 1 2011-05-27 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 HTMLVideoElement::currentSrc() should return a KURL 6 https://bugs.webkit.org/show_bug.cgi?id=61578 7 8 I suspect we got into this mess because the author of this code didn't 9 know about the URL attribute in WebKit IDL, which is super useful! 10 11 Bad news: The line of code in question seems to have another bug, which 12 I've documented in a FIXME. Let the yak shaving continue! 13 14 * html/HTMLMediaElement.cpp: 15 (WebCore::urlForLogging): 16 (WebCore::HTMLMediaElement::loadResource): 17 (WebCore::HTMLMediaElement::isSafeToLoadURL): 18 (WebCore::HTMLMediaElement::selectNextSourceChild): 19 (WebCore::HTMLMediaElement::getPluginProxyParams): 20 * html/HTMLMediaElement.h: 21 (WebCore::HTMLMediaElement::currentSrc): 22 (WebCore::HTMLMediaElement::currentURL): 23 * html/canvas/CanvasRenderingContext.cpp: 24 (WebCore::CanvasRenderingContext::checkOrigin): 25 * rendering/HitTestResult.cpp: 26 (WebCore::HitTestResult::absoluteMediaURL): 27 - This complete URL call was unnecessary because currentSrc is 28 already absolute. 29 1 30 2011-05-27 Mikhail Naganov <mnaganov@chromium.org> 2 31 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r87479 r87539 86 86 87 87 #if !LOG_DISABLED 88 static String urlForLogging(const String& url)88 static const char* urlForLogging(const KURL& url) 89 89 { 90 90 static const unsigned maximumURLLengthForLogging = 128; 91 91 92 if (url. length() < maximumURLLengthForLogging)93 return url ;94 return url.substring(0, maximumURLLengthForLogging) + "...";95 } 96 97 static const char *boolString(bool val)92 if (url.string().length() < maximumURLLengthForLogging) 93 return url.string().utf8().data(); 94 return String(url.string().substring(0, maximumURLLengthForLogging) + "...").utf8().data(); 95 } 96 97 static const char* boolString(bool val) 98 98 { 99 99 return val ? "true" : "false"; … … 458 458 } 459 459 460 String HTMLMediaElement::currentSrc() const461 {462 return m_currentSrc;463 }464 465 460 HTMLMediaElement::NetworkState HTMLMediaElement::networkState() const 466 461 { … … 681 676 ASSERT(isSafeToLoadURL(initialURL, Complain)); 682 677 683 LOG(Media, "HTMLMediaElement::loadResource(%s, %s)", urlForLogging(initialURL .string()).utf8().data(), contentType.raw().utf8().data());678 LOG(Media, "HTMLMediaElement::loadResource(%s, %s)", urlForLogging(initialURL), contentType.raw().utf8().data()); 684 679 685 680 Frame* frame = document()->frame(); … … 696 691 m_currentSrc = url; 697 692 698 LOG(Media, "HTMLMediaElement::loadResource - m_currentSrc -> %s", urlForLogging(m_currentSrc) .utf8().data());693 LOG(Media, "HTMLMediaElement::loadResource - m_currentSrc -> %s", urlForLogging(m_currentSrc)); 699 694 700 695 if (m_sendProgressEvents) … … 713 708 updateVolume(); 714 709 715 m_player->load(m_currentSrc , contentType);710 m_player->load(m_currentSrc.string(), contentType); 716 711 717 712 // If there is no poster to display, allow the media engine to render video frames as soon as … … 726 721 { 727 722 if (!url.isValid()) { 728 LOG(Media, "HTMLMediaElement::isSafeToLoadURL(%s) -> FALSE because url is invalid", urlForLogging(url .string()).utf8().data());723 LOG(Media, "HTMLMediaElement::isSafeToLoadURL(%s) -> FALSE because url is invalid", urlForLogging(url)); 729 724 return false; 730 725 } … … 734 729 if (actionIfInvalid == Complain) 735 730 FrameLoader::reportLocalLoadFailed(frame, url.string()); 736 LOG(Media, "HTMLMediaElement::isSafeToLoadURL(%s) -> FALSE rejected by SecurityOrigin", urlForLogging(url .string()).utf8().data());731 LOG(Media, "HTMLMediaElement::isSafeToLoadURL(%s) -> FALSE rejected by SecurityOrigin", urlForLogging(url)); 737 732 return false; 738 733 } … … 1737 1732 #if !LOG_DISABLED 1738 1733 if (shouldLog) 1739 LOG(Media, "HTMLMediaElement::selectNextSourceChild - 'src' is %s", urlForLogging(mediaURL) .utf8().data());1734 LOG(Media, "HTMLMediaElement::selectNextSourceChild - 'src' is %s", urlForLogging(mediaURL)); 1740 1735 #endif 1741 1736 if (mediaURL.isEmpty()) … … 1788 1783 #if !LOG_DISABLED 1789 1784 if (shouldLog) 1790 LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", m_currentSourceNode, canUse ? urlForLogging(mediaURL .string()).utf8().data() : "");1785 LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", m_currentSourceNode, canUse ? urlForLogging(mediaURL) : ""); 1791 1786 #endif 1792 1787 return canUse ? mediaURL : KURL(); … … 1800 1795 if (source->hasTagName(sourceTag)) { 1801 1796 KURL url = source->getNonEmptyURLAttribute(srcAttr); 1802 LOG(Media, "HTMLMediaElement::sourceWasAdded - 'src' is %s", urlForLogging(url) .utf8().data());1797 LOG(Media, "HTMLMediaElement::sourceWasAdded - 'src' is %s", urlForLogging(url)); 1803 1798 } 1804 1799 #endif … … 1847 1842 if (source->hasTagName(sourceTag)) { 1848 1843 KURL url = source->getNonEmptyURLAttribute(srcAttr); 1849 LOG(Media, "HTMLMediaElement::sourceWillBeRemoved - 'src' is %s", urlForLogging(url) .utf8().data());1844 LOG(Media, "HTMLMediaElement::sourceWillBeRemoved - 'src' is %s", urlForLogging(url)); 1850 1845 } 1851 1846 #endif … … 2451 2446 url = selectNextSourceChild(0, DoNothing); 2452 2447 2453 m_currentSrc = url .string();2448 m_currentSrc = url; 2454 2449 if (url.isValid() && frame && frame->loader()->willLoadMediaElementURL(url)) { 2455 2450 names.append("_media_element_src_"); 2456 values.append(m_currentSrc );2451 values.append(m_currentSrc.string()); 2457 2452 } 2458 2453 } -
trunk/Source/WebCore/html/HTMLMediaElement.h
r87125 r87539 87 87 // network state 88 88 void setSrc(const String&); 89 String currentSrc() const;89 const KURL& currentSrc() const { return m_currentSrc; } 90 90 91 91 enum NetworkState { NETWORK_EMPTY, NETWORK_IDLE, NETWORK_LOADING, NETWORK_NO_SOURCE }; … … 348 348 ReadyState m_readyState; 349 349 ReadyState m_readyStateMaximum; 350 Stringm_currentSrc;351 350 KURL m_currentSrc; 351 352 352 RefPtr<MediaError> m_error; 353 353 -
trunk/Source/WebCore/html/HTMLMediaElement.idl
r79301 r87539 32 32 // network state 33 33 attribute [Reflect, URL] DOMString src; 34 readonly attribute DOMString currentSrc;34 readonly attribute [URL] DOMString currentSrc; 35 35 36 36 const unsigned short NETWORK_EMPTY = 0; -
trunk/Source/WebCore/html/canvas/CanvasRenderingContext.cpp
r87473 r87539 70 70 { 71 71 #if ENABLE(VIDEO) 72 // FIXME: HTMLVideoElement::currentSrc() should return a KURL. 73 // https://bugs.webkit.org/show_bug.cgi?id=61578 74 checkOrigin(KURL(ParsedURLString, video->currentSrc())); 72 // FIXME: This check is likely wrong when a redirect is involved. We need 73 // to test the finalURL. Please be careful when fixing this issue not to 74 // make currentSrc be the final URL because then the 75 // HTMLMediaElement.currentSrc DOM API would leak redirect destinations! 76 checkOrigin(video->currentSrc()); 75 77 if (canvas()->originClean() && video && !video->hasSingleSecurityOrigin()) 76 78 canvas()->setOriginTainted(); -
trunk/Source/WebCore/rendering/HitTestResult.cpp
r87018 r87539 313 313 #if ENABLE(VIDEO) 314 314 if (HTMLMediaElement* mediaElt = mediaElement()) 315 return m _innerNonSharedNode->document()->completeURL(stripLeadingAndTrailingHTMLSpaces(mediaElt->currentSrc()));315 return mediaElt->currentSrc(); 316 316 return KURL(); 317 317 #else
Note: See TracChangeset
for help on using the changeset viewer.