OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "core/html/HTMLMediaElement.h" | 27 #include "core/html/HTMLMediaElement.h" |
28 | 28 |
29 #include <limits> | 29 #include <limits> |
30 #include "HTMLNames.h" | 30 #include "HTMLNames.h" |
31 #include "RuntimeEnabledFeatures.h" | 31 #include "RuntimeEnabledFeatures.h" |
32 #include "bindings/v8/ExceptionState.h" | 32 #include "bindings/v8/ExceptionState.h" |
33 #include "bindings/v8/ExceptionStatePlaceholder.h" | 33 #include "bindings/v8/ExceptionStatePlaceholder.h" |
34 #include "bindings/v8/ScriptController.h" | 34 #include "bindings/v8/ScriptController.h" |
35 #include "bindings/v8/ScriptEventListener.h" | 35 #include "bindings/v8/ScriptEventListener.h" |
36 #include "core/css/MediaList.h" | 36 #include "core/css/MediaList.h" |
37 #include "core/css/MediaQueryEvaluator.h" | |
38 #include "core/dom/Attribute.h" | 37 #include "core/dom/Attribute.h" |
39 #include "core/dom/ExceptionCode.h" | 38 #include "core/dom/ExceptionCode.h" |
40 #include "core/dom/FullscreenElementStack.h" | 39 #include "core/dom/FullscreenElementStack.h" |
41 #include "core/dom/shadow/ShadowRoot.h" | 40 #include "core/dom/shadow/ShadowRoot.h" |
42 #include "core/events/Event.h" | 41 #include "core/events/Event.h" |
43 #include "core/events/ThreadLocalEventNames.h" | 42 #include "core/events/ThreadLocalEventNames.h" |
44 #include "core/frame/ContentSecurityPolicy.h" | 43 #include "core/frame/ContentSecurityPolicy.h" |
45 #include "core/frame/Frame.h" | 44 #include "core/frame/Frame.h" |
46 #include "core/frame/Settings.h" | 45 #include "core/frame/Settings.h" |
47 #include "core/frame/UseCounter.h" | 46 #include "core/frame/UseCounter.h" |
(...skipping 2856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2904 node = potentialSourceNodes[i].get(); | 2903 node = potentialSourceNodes[i].get(); |
2905 if (lookingForStartNode && m_nextChildNodeToConsider != node) | 2904 if (lookingForStartNode && m_nextChildNodeToConsider != node) |
2906 continue; | 2905 continue; |
2907 lookingForStartNode = false; | 2906 lookingForStartNode = false; |
2908 | 2907 |
2909 if (!node->hasTagName(sourceTag)) | 2908 if (!node->hasTagName(sourceTag)) |
2910 continue; | 2909 continue; |
2911 if (node->parentNode() != this) | 2910 if (node->parentNode() != this) |
2912 continue; | 2911 continue; |
2913 | 2912 |
2914 UseCounter::count(document(), UseCounter::SourceElementCandidate); | |
2915 source = toHTMLSourceElement(node); | 2913 source = toHTMLSourceElement(node); |
2916 | 2914 |
2917 // If candidate does not have a src attribute, or if its src attribute's
value is the empty string ... jump down to the failed step below | 2915 // If candidate does not have a src attribute, or if its src attribute's
value is the empty string ... jump down to the failed step below |
2918 mediaURL = source->getNonEmptyURLAttribute(srcAttr); | 2916 mediaURL = source->getNonEmptyURLAttribute(srcAttr); |
2919 #if !LOG_DISABLED | 2917 #if !LOG_DISABLED |
2920 if (shouldLog) | 2918 if (shouldLog) |
2921 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild - 'src' is %
s", urlForLoggingMedia(mediaURL).utf8().data()); | 2919 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild - 'src' is %
s", urlForLoggingMedia(mediaURL).utf8().data()); |
2922 #endif | 2920 #endif |
2923 if (mediaURL.isEmpty()) | 2921 if (mediaURL.isEmpty()) |
2924 goto check_again; | 2922 goto check_again; |
2925 | 2923 |
2926 if (source->fastHasAttribute(mediaAttr)) { | |
2927 MediaQueryEvaluator screenEval("screen", document().frame(), rendere
r() ? renderer()->style() : 0); | |
2928 RefPtr<MediaQuerySet> media = MediaQuerySet::create(source->media())
; | |
2929 #if !LOG_DISABLED | |
2930 if (shouldLog) | |
2931 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild - 'media
' is %s", source->media().utf8().data()); | |
2932 #endif | |
2933 if (!screenEval.eval(media.get())) { | |
2934 UseCounter::count(document(), UseCounter::SourceElementNonMatchi
ngMedia); | |
2935 goto check_again; | |
2936 } | |
2937 } | |
2938 | |
2939 type = source->type(); | 2924 type = source->type(); |
2940 // FIXME(82965): Add support for keySystem in <source> and set system fr
om source. | 2925 // FIXME(82965): Add support for keySystem in <source> and set system fr
om source. |
2941 if (type.isEmpty() && mediaURL.protocolIsData()) | 2926 if (type.isEmpty() && mediaURL.protocolIsData()) |
2942 type = mimeTypeFromDataURL(mediaURL); | 2927 type = mimeTypeFromDataURL(mediaURL); |
2943 if (!type.isEmpty() || !system.isEmpty()) { | 2928 if (!type.isEmpty() || !system.isEmpty()) { |
2944 #if !LOG_DISABLED | 2929 #if !LOG_DISABLED |
2945 if (shouldLog) | 2930 if (shouldLog) |
2946 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild - 'type'
is '%s' - key system is '%s'", type.utf8().data(), system.utf8().data()); | 2931 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild - 'type'
is '%s' - key system is '%s'", type.utf8().data(), system.utf8().data()); |
2947 #endif | 2932 #endif |
2948 if (!supportsType(ContentType(type), system)) | 2933 if (!supportsType(ContentType(type), system)) |
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3969 { | 3954 { |
3970 m_mediaSource->setWebMediaSourceAndOpen(adoptPtr(webMediaSource)); | 3955 m_mediaSource->setWebMediaSourceAndOpen(adoptPtr(webMediaSource)); |
3971 } | 3956 } |
3972 | 3957 |
3973 bool HTMLMediaElement::isInteractiveContent() const | 3958 bool HTMLMediaElement::isInteractiveContent() const |
3974 { | 3959 { |
3975 return fastHasAttribute(controlsAttr); | 3960 return fastHasAttribute(controlsAttr); |
3976 } | 3961 } |
3977 | 3962 |
3978 } | 3963 } |
OLD | NEW |