Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1033)

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLVideoElement.cpp

Issue 2696893002: [Blink>Media] Add heuristic for dominant video detection for Android (Closed)
Patch Set: nits Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2009, 2010 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
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #include "core/html/HTMLVideoElement.h" 26 #include "core/html/HTMLVideoElement.h"
27 27
28 #include <memory>
28 #include "bindings/core/v8/ExceptionState.h" 29 #include "bindings/core/v8/ExceptionState.h"
29 #include "core/CSSPropertyNames.h" 30 #include "core/CSSPropertyNames.h"
30 #include "core/HTMLNames.h" 31 #include "core/HTMLNames.h"
31 #include "core/dom/Attribute.h" 32 #include "core/dom/Attribute.h"
32 #include "core/dom/Document.h" 33 #include "core/dom/Document.h"
33 #include "core/dom/ExceptionCode.h" 34 #include "core/dom/ExceptionCode.h"
34 #include "core/dom/Fullscreen.h" 35 #include "core/dom/Fullscreen.h"
35 #include "core/dom/shadow/ShadowRoot.h" 36 #include "core/dom/shadow/ShadowRoot.h"
36 #include "core/frame/ImageBitmap.h" 37 #include "core/frame/ImageBitmap.h"
37 #include "core/frame/LocalDOMWindow.h" 38 #include "core/frame/LocalDOMWindow.h"
38 #include "core/frame/Settings.h" 39 #include "core/frame/Settings.h"
40 #include "core/html/MediaCustomControlsFullscreenDetector.h"
39 #include "core/html/parser/HTMLParserIdioms.h" 41 #include "core/html/parser/HTMLParserIdioms.h"
40 #include "core/imagebitmap/ImageBitmapOptions.h" 42 #include "core/imagebitmap/ImageBitmapOptions.h"
41 #include "core/layout/LayoutImage.h" 43 #include "core/layout/LayoutImage.h"
42 #include "core/layout/LayoutVideo.h" 44 #include "core/layout/LayoutVideo.h"
43 #include "platform/RuntimeEnabledFeatures.h" 45 #include "platform/RuntimeEnabledFeatures.h"
44 #include "platform/UserGestureIndicator.h" 46 #include "platform/UserGestureIndicator.h"
45 #include "platform/graphics/GraphicsContext.h" 47 #include "platform/graphics/GraphicsContext.h"
46 #include "platform/graphics/ImageBuffer.h" 48 #include "platform/graphics/ImageBuffer.h"
47 #include "platform/graphics/gpu/Extensions3DUtil.h" 49 #include "platform/graphics/gpu/Extensions3DUtil.h"
48 #include "public/platform/WebCanvas.h" 50 #include "public/platform/WebCanvas.h"
49 #include <memory>
50 51
51 namespace blink { 52 namespace blink {
52 53
53 using namespace HTMLNames; 54 using namespace HTMLNames;
54 55
55 inline HTMLVideoElement::HTMLVideoElement(Document& document) 56 inline HTMLVideoElement::HTMLVideoElement(Document& document)
56 : HTMLMediaElement(videoTag, document) { 57 : HTMLMediaElement(videoTag, document),
58 m_customControlsFullscreenDetector(
59 new MediaCustomControlsFullscreenDetector(*this)) {
57 if (document.settings()) { 60 if (document.settings()) {
58 m_defaultPosterURL = 61 m_defaultPosterURL =
59 AtomicString(document.settings()->getDefaultVideoPosterURL()); 62 AtomicString(document.settings()->getDefaultVideoPosterURL());
60 } 63 }
61 } 64 }
62 65
63 HTMLVideoElement* HTMLVideoElement::create(Document& document) { 66 HTMLVideoElement* HTMLVideoElement::create(Document& document) {
64 HTMLVideoElement* video = new HTMLVideoElement(document); 67 HTMLVideoElement* video = new HTMLVideoElement(document);
65 video->ensureUserAgentShadowRoot(); 68 video->ensureUserAgentShadowRoot();
66 video->suspendIfNeeded(); 69 video->suspendIfNeeded();
67 return video; 70 return video;
68 } 71 }
69 72
70 DEFINE_TRACE(HTMLVideoElement) { 73 DEFINE_TRACE(HTMLVideoElement) {
71 visitor->trace(m_imageLoader); 74 visitor->trace(m_imageLoader);
75 visitor->trace(m_customControlsFullscreenDetector);
72 HTMLMediaElement::trace(visitor); 76 HTMLMediaElement::trace(visitor);
73 } 77 }
74 78
75 bool HTMLVideoElement::layoutObjectIsNeeded(const ComputedStyle& style) { 79 bool HTMLVideoElement::layoutObjectIsNeeded(const ComputedStyle& style) {
76 return HTMLElement::layoutObjectIsNeeded(style); 80 return HTMLElement::layoutObjectIsNeeded(style);
77 } 81 }
78 82
79 LayoutObject* HTMLVideoElement::createLayoutObject(const ComputedStyle&) { 83 LayoutObject* HTMLVideoElement::createLayoutObject(const ComputedStyle&) {
80 return new LayoutVideo(this); 84 return new LayoutVideo(this);
81 } 85 }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 bool HTMLVideoElement::usesOverlayFullscreenVideo() const { 274 bool HTMLVideoElement::usesOverlayFullscreenVideo() const {
271 if (RuntimeEnabledFeatures::forceOverlayFullscreenVideoEnabled()) 275 if (RuntimeEnabledFeatures::forceOverlayFullscreenVideoEnabled())
272 return true; 276 return true;
273 277
274 return webMediaPlayer() && webMediaPlayer()->supportsOverlayFullscreenVideo(); 278 return webMediaPlayer() && webMediaPlayer()->supportsOverlayFullscreenVideo();
275 } 279 }
276 280
277 void HTMLVideoElement::didMoveToNewDocument(Document& oldDocument) { 281 void HTMLVideoElement::didMoveToNewDocument(Document& oldDocument) {
278 if (m_imageLoader) 282 if (m_imageLoader)
279 m_imageLoader->elementDidMoveToNewDocument(); 283 m_imageLoader->elementDidMoveToNewDocument();
284
280 HTMLMediaElement::didMoveToNewDocument(oldDocument); 285 HTMLMediaElement::didMoveToNewDocument(oldDocument);
281 } 286 }
282 287
283 unsigned HTMLVideoElement::webkitDecodedFrameCount() const { 288 unsigned HTMLVideoElement::webkitDecodedFrameCount() const {
284 if (!webMediaPlayer()) 289 if (!webMediaPlayer())
285 return 0; 290 return 0;
286 291
287 return webMediaPlayer()->decodedFrameCount(); 292 return webMediaPlayer()->decodedFrameCount();
288 } 293 }
289 294
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 return ScriptPromise(); 377 return ScriptPromise();
373 if (!ImageBitmap::isResizeOptionValid(options, exceptionState)) 378 if (!ImageBitmap::isResizeOptionValid(options, exceptionState))
374 return ScriptPromise(); 379 return ScriptPromise();
375 return ImageBitmapSource::fulfillImageBitmap( 380 return ImageBitmapSource::fulfillImageBitmap(
376 scriptState, 381 scriptState,
377 ImageBitmap::create(this, cropRect, 382 ImageBitmap::create(this, cropRect,
378 eventTarget.toLocalDOMWindow()->document(), options)); 383 eventTarget.toLocalDOMWindow()->document(), options));
379 } 384 }
380 385
381 } // namespace blink 386 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698