Bug 1349459 part 1 - mark element as tainted when CreateImageBitmap() is used; r?jwwang,mattwoodrow draft
authorKaku Kuo <kaku@mozilla.com>
Wed, 22 Mar 2017 15:21:44 +0800
changeset 502718 f03c7ee25d267f032a33401d3f01f7d689d26021
parent 502693 e3d9be125ef24e72c2e9930a8d0ffb2dfbcbaea4
child 502719 29b738c7a2c43d331e61f664966eaab3b83becc0
push id50367
push userbmo:kaku@mozilla.com
push dateWed, 22 Mar 2017 07:42:00 +0000
reviewersjwwang, mattwoodrow
bugs1349459
milestone55.0a1
Bug 1349459 part 1 - mark element as tainted when CreateImageBitmap() is used; r?jwwang,mattwoodrow In this patch, we simply modify the ImageBitmap::createInternal(..., HTMLMediaElement&, ...) method to use HTMLMediaElement::GetCurrentImage() utility and HTMLMediaElement::GetCurrentImage() marks the videl element as tainted. MozReview-Commit-ID: KyN2xRqKVrr
dom/canvas/ImageBitmap.cpp
--- a/dom/canvas/ImageBitmap.cpp
+++ b/dom/canvas/ImageBitmap.cpp
@@ -822,25 +822,17 @@ ImageBitmap::CreateInternal(nsIGlobalObj
   nsCOMPtr<nsIPrincipal> principal = aVideoEl.GetCurrentVideoPrincipal();
   bool CORSUsed = aVideoEl.GetCORSMode() != CORS_NONE;
   if (!CheckSecurityForHTMLElements(false, CORSUsed, principal)) {
     aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
     return nullptr;
   }
 
   // Create ImageBitmap.
-  ImageContainer *container = aVideoEl.GetImageContainer();
-
-  if (!container) {
-    aRv.Throw(NS_ERROR_NOT_AVAILABLE);
-    return nullptr;
-  }
-
-  AutoLockImage lockImage(container);
-  layers::Image* data = lockImage.GetImage();
+  RefPtr<layers::Image> data = aVideoEl.GetCurrentImage();
   if (!data) {
     aRv.Throw(NS_ERROR_NOT_AVAILABLE);
     return nullptr;
   }
   RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data);
 
   // Set the picture rectangle.
   if (ret && aCropRect.isSome()) {