OLD | NEW |
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 |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "core/html/HTMLVideoElement.h" | 27 #include "core/html/HTMLVideoElement.h" |
28 | 28 |
29 #include "bindings/core/v8/ExceptionState.h" | 29 #include "bindings/core/v8/ExceptionState.h" |
30 #include "core/CSSPropertyNames.h" | 30 #include "core/CSSPropertyNames.h" |
31 #include "core/HTMLNames.h" | 31 #include "core/HTMLNames.h" |
32 #include "core/dom/Attribute.h" | 32 #include "core/dom/Attribute.h" |
33 #include "core/dom/Document.h" | 33 #include "core/dom/Document.h" |
34 #include "core/dom/ExceptionCode.h" | 34 #include "core/dom/ExceptionCode.h" |
35 #include "core/dom/Fullscreen.h" | 35 #include "core/dom/Fullscreen.h" |
36 #include "core/dom/shadow/ShadowRoot.h" | 36 #include "core/dom/shadow/ShadowRoot.h" |
| 37 #include "core/frame/ImageBitmap.h" |
37 #include "core/frame/Settings.h" | 38 #include "core/frame/Settings.h" |
38 #include "core/html/parser/HTMLParserIdioms.h" | 39 #include "core/html/parser/HTMLParserIdioms.h" |
39 #include "core/layout/LayoutImage.h" | 40 #include "core/layout/LayoutImage.h" |
40 #include "core/layout/LayoutVideo.h" | 41 #include "core/layout/LayoutVideo.h" |
41 #include "platform/RuntimeEnabledFeatures.h" | 42 #include "platform/RuntimeEnabledFeatures.h" |
42 #include "platform/UserGestureIndicator.h" | 43 #include "platform/UserGestureIndicator.h" |
43 #include "platform/graphics/GraphicsContext.h" | 44 #include "platform/graphics/GraphicsContext.h" |
44 #include "platform/graphics/ImageBuffer.h" | 45 #include "platform/graphics/ImageBuffer.h" |
45 #include "platform/graphics/gpu/Extensions3DUtil.h" | 46 #include "platform/graphics/gpu/Extensions3DUtil.h" |
46 #include "public/platform/WebCanvas.h" | 47 #include "public/platform/WebCanvas.h" |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 bool HTMLVideoElement::wouldTaintOrigin(SecurityOrigin* destinationSecurityOrigi
n) const | 314 bool HTMLVideoElement::wouldTaintOrigin(SecurityOrigin* destinationSecurityOrigi
n) const |
314 { | 315 { |
315 return !isMediaDataCORSSameOrigin(destinationSecurityOrigin); | 316 return !isMediaDataCORSSameOrigin(destinationSecurityOrigin); |
316 } | 317 } |
317 | 318 |
318 FloatSize HTMLVideoElement::elementSize() const | 319 FloatSize HTMLVideoElement::elementSize() const |
319 { | 320 { |
320 return FloatSize(videoWidth(), videoHeight()); | 321 return FloatSize(videoWidth(), videoHeight()); |
321 } | 322 } |
322 | 323 |
| 324 IntSize HTMLVideoElement::bitmapSourceSize() const |
| 325 { |
| 326 return IntSize(videoWidth(), videoHeight()); |
| 327 } |
| 328 |
| 329 ScriptPromise HTMLVideoElement::createImageBitmap(ScriptState* scriptState, Even
tTarget& eventTarget, int sx, int sy, int sw, int sh, ExceptionState& exceptionS
tate) |
| 330 { |
| 331 ASSERT(eventTarget.toDOMWindow()); |
| 332 if (networkState() == HTMLMediaElement::NETWORK_EMPTY) { |
| 333 exceptionState.throwDOMException(InvalidStateError, "The provided elemen
t has not retrieved data."); |
| 334 return ScriptPromise(); |
| 335 } |
| 336 if (readyState() <= HTMLMediaElement::HAVE_METADATA) { |
| 337 exceptionState.throwDOMException(InvalidStateError, "The provided elemen
t's player has no current data."); |
| 338 return ScriptPromise(); |
| 339 } |
| 340 if (!sw || !sh) { |
| 341 exceptionState.throwDOMException(IndexSizeError, String::format("The sou
rce %s provided is 0.", sw ? "height" : "width")); |
| 342 return ScriptPromise(); |
| 343 } |
| 344 if (!hasSingleSecurityOrigin()) { |
| 345 exceptionState.throwSecurityError("The source video contains image data
from multiple origins."); |
| 346 return ScriptPromise(); |
| 347 } |
| 348 if (!webMediaPlayer()->didPassCORSAccessCheck() |
| 349 && eventTarget.toDOMWindow()->document()->securityOrigin()->taintsCanvas
(currentSrc())) { |
| 350 exceptionState.throwSecurityError("Cross-origin access to the source vid
eo is denied."); |
| 351 return ScriptPromise(); |
| 352 } |
| 353 return ImageBitmapSource::fulfillImageBitmap(scriptState, ImageBitmap::creat
e(this, IntRect(sx, sy, sw, sh))); |
| 354 } |
| 355 |
323 } // namespace blink | 356 } // namespace blink |
OLD | NEW |