Loading content/canvas/src/ImageData.cpp 0 → 100644 +82 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 et tw=78: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mozilla/dom/ImageData.h" #include "nsDOMClassInfoID.h" #include "nsContentUtils.h" #include "jsapi.h" DOMCI_DATA(ImageData, mozilla::dom::ImageData) namespace mozilla { namespace dom { NS_IMPL_CYCLE_COLLECTING_ADDREF(ImageData) NS_IMPL_CYCLE_COLLECTING_RELEASE(ImageData) NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ImageData) NS_INTERFACE_MAP_ENTRY(nsIDOMImageData) NS_INTERFACE_MAP_ENTRY(nsISupports) NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(ImageData) NS_INTERFACE_MAP_END NS_IMPL_CYCLE_COLLECTION_CLASS(ImageData) NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ImageData) NS_IMPL_CYCLE_COLLECTION_TRACE_JS_CALLBACK(tmp->mData, "mData") NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ImageData) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ImageData) tmp->DropData(); NS_IMPL_CYCLE_COLLECTION_UNLINK_END /* readonly attribute unsigned long width; */ NS_IMETHODIMP ImageData::GetWidth(PRUint32* aWidth) { *aWidth = GetWidth(); return NS_OK; } /* readonly attribute unsigned long height; */ NS_IMETHODIMP ImageData::GetHeight(PRUint32* aHeight) { *aHeight = GetHeight(); return NS_OK; } /* readonly attribute jsval data; */ NS_IMETHODIMP ImageData::GetData(JS::Value* aData) { *aData = GetData(); return NS_OK; } void ImageData::HoldData() { NS_HOLD_JS_OBJECTS(this, ImageData); } void ImageData::DropData() { if (mData) { NS_DROP_JS_OBJECTS(this, ImageData); mData = NULL; } } } // namespace dom } // namespace mozilla content/canvas/src/ImageData.h 0 → 100644 +77 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 et tw=78: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_ImageData_h #define mozilla_dom_ImageData_h #include "nsIDOMCanvasRenderingContext2D.h" #include "mozilla/Attributes.h" #include "mozilla/StandardInteger.h" #include "nsCycleCollectionParticipant.h" #include "nsTraceRefcnt.h" #include "xpcpublic.h" #include "jsapi.h" namespace mozilla { namespace dom { class ImageData MOZ_FINAL : public nsIDOMImageData { public: ImageData(uint32_t aWidth, uint32_t aHeight, JSObject& aData) : mWidth(aWidth) , mHeight(aHeight) , mData(&aData) { MOZ_COUNT_CTOR(ImageData); HoldData(); } ~ImageData() { MOZ_COUNT_DTOR(ImageData); DropData(); } NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_NSIDOMIMAGEDATA NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ImageData) uint32_t GetWidth() { return mWidth; } uint32_t GetHeight() { return mHeight; } JS::Value GetData() { return JS::ObjectOrNullValue(GetDataObject()); } JSObject* GetDataObject() { xpc_UnmarkGrayObject(mData); return mData; } private: void HoldData(); void DropData(); ImageData() MOZ_DELETE; uint32_t mWidth, mHeight; JSObject* mData; }; } // namespace dom } // namespace mozilla #endif // mozilla_dom_ImageData_h content/canvas/src/Makefile.in +7 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,12 @@ EXPORTS = \ CustomQS_WebGL.h \ $(NULL) EXPORTS_NAMESPACES = mozilla/dom EXPORTS_mozilla/dom = \ ImageData.h \ $(NULL) CPPSRCS = \ CanvasImageCache.cpp \ CanvasUtils.cpp \ Loading @@ -61,6 +67,7 @@ CPPSRCS = \ nsCanvasRenderingContext2DAzure.cpp \ DocumentRendererParent.cpp \ DocumentRendererChild.cpp \ ImageData.cpp \ $(NULL) ifdef MOZ_WEBGL Loading content/canvas/test/test_canvas.html +6 −38 Original line number Diff line number Diff line Loading @@ -7600,22 +7600,14 @@ function test_2d_imageData_create_type() { var canvas = document.getElementById('c261'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.Uint8ClampedArray !== undefined, "window.Uint8ClampedArray !== undefined"); window.ImageData.prototype.thisImplementsImageData = true; window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; var imgdata = ctx.createImageData(1, 1); ok(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); todo(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); ok(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); } catch (e) { _thrown_outer = true; } todo(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading @@ -7632,10 +7624,7 @@ function test_2d_imageData_create1_type() { var canvas = document.getElementById('c261a'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.Uint8ClampedArray !== undefined, "window.Uint8ClampedArray !== undefined"); window.ImageData.prototype.thisImplementsImageData = true; window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; Loading @@ -7643,11 +7632,6 @@ var imgdata = ctx.createImageData(ctx.createImageData(1, 1)); todo(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); ok(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); } catch (e) { _thrown_outer = true; } todo(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading Loading @@ -8058,9 +8042,6 @@ function test_2d_imageData_get_source_negative() { var canvas = document.getElementById('c272'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#fff'; Loading @@ -8082,11 +8063,6 @@ ok(imgdata2.data[1] === 0, "imgdata2.data[\""+(1)+"\"] === 0"); ok(imgdata2.data[2] === 0, "imgdata2.data[\""+(2)+"\"] === 0"); ok(imgdata2.data[3] === 0, "imgdata2.data[\""+(3)+"\"] === 0"); } catch (e) { _thrown_outer = true; } ok(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading Loading @@ -8238,22 +8214,14 @@ function test_2d_imageData_get_type() { var canvas = document.getElementById('c276'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.Uint8ClampedArray !== undefined, "window.Uint8ClampedArray !== undefined"); window.ImageData.prototype.thisImplementsImageData = true; window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; var imgdata = ctx.getImageData(0, 0, 1, 1); ok(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); todo(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); ok(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); } catch (e) { _thrown_outer = true; } todo(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading Loading @@ -8376,7 +8344,7 @@ function test_2d_imageData_object_ctor() { var canvas = document.getElementById('c280'); var ctx = canvas.getContext('2d'); todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); try { var _thrown = false; new window.ImageData(1,1); } catch (e) { _thrown = true; } finally { ok(_thrown, "should throw exception"); } Loading dom/base/nsDOMClassInfo.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -1302,6 +1302,8 @@ static nsDOMClassInfoData sClassInfoData[] = { DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(TextMetrics, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(ImageData, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(SmartCardEvent, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) Loading Loading @@ -3851,6 +3853,10 @@ nsDOMClassInfo::Init() DOM_CLASSINFO_MAP_ENTRY(nsIDOMTextMetrics) DOM_CLASSINFO_MAP_END DOM_CLASSINFO_MAP_BEGIN(ImageData, nsIDOMImageData) DOM_CLASSINFO_MAP_ENTRY(nsIDOMImageData) DOM_CLASSINFO_MAP_END DOM_CLASSINFO_MAP_BEGIN(XSLTProcessor, nsIXSLTProcessor) DOM_CLASSINFO_MAP_ENTRY(nsIXSLTProcessor) DOM_CLASSINFO_MAP_ENTRY(nsIXSLTProcessorPrivate) Loading Loading
content/canvas/src/ImageData.cpp 0 → 100644 +82 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 et tw=78: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mozilla/dom/ImageData.h" #include "nsDOMClassInfoID.h" #include "nsContentUtils.h" #include "jsapi.h" DOMCI_DATA(ImageData, mozilla::dom::ImageData) namespace mozilla { namespace dom { NS_IMPL_CYCLE_COLLECTING_ADDREF(ImageData) NS_IMPL_CYCLE_COLLECTING_RELEASE(ImageData) NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ImageData) NS_INTERFACE_MAP_ENTRY(nsIDOMImageData) NS_INTERFACE_MAP_ENTRY(nsISupports) NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(ImageData) NS_INTERFACE_MAP_END NS_IMPL_CYCLE_COLLECTION_CLASS(ImageData) NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ImageData) NS_IMPL_CYCLE_COLLECTION_TRACE_JS_CALLBACK(tmp->mData, "mData") NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ImageData) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ImageData) tmp->DropData(); NS_IMPL_CYCLE_COLLECTION_UNLINK_END /* readonly attribute unsigned long width; */ NS_IMETHODIMP ImageData::GetWidth(PRUint32* aWidth) { *aWidth = GetWidth(); return NS_OK; } /* readonly attribute unsigned long height; */ NS_IMETHODIMP ImageData::GetHeight(PRUint32* aHeight) { *aHeight = GetHeight(); return NS_OK; } /* readonly attribute jsval data; */ NS_IMETHODIMP ImageData::GetData(JS::Value* aData) { *aData = GetData(); return NS_OK; } void ImageData::HoldData() { NS_HOLD_JS_OBJECTS(this, ImageData); } void ImageData::DropData() { if (mData) { NS_DROP_JS_OBJECTS(this, ImageData); mData = NULL; } } } // namespace dom } // namespace mozilla
content/canvas/src/ImageData.h 0 → 100644 +77 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 et tw=78: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_ImageData_h #define mozilla_dom_ImageData_h #include "nsIDOMCanvasRenderingContext2D.h" #include "mozilla/Attributes.h" #include "mozilla/StandardInteger.h" #include "nsCycleCollectionParticipant.h" #include "nsTraceRefcnt.h" #include "xpcpublic.h" #include "jsapi.h" namespace mozilla { namespace dom { class ImageData MOZ_FINAL : public nsIDOMImageData { public: ImageData(uint32_t aWidth, uint32_t aHeight, JSObject& aData) : mWidth(aWidth) , mHeight(aHeight) , mData(&aData) { MOZ_COUNT_CTOR(ImageData); HoldData(); } ~ImageData() { MOZ_COUNT_DTOR(ImageData); DropData(); } NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_NSIDOMIMAGEDATA NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ImageData) uint32_t GetWidth() { return mWidth; } uint32_t GetHeight() { return mHeight; } JS::Value GetData() { return JS::ObjectOrNullValue(GetDataObject()); } JSObject* GetDataObject() { xpc_UnmarkGrayObject(mData); return mData; } private: void HoldData(); void DropData(); ImageData() MOZ_DELETE; uint32_t mWidth, mHeight; JSObject* mData; }; } // namespace dom } // namespace mozilla #endif // mozilla_dom_ImageData_h
content/canvas/src/Makefile.in +7 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,12 @@ EXPORTS = \ CustomQS_WebGL.h \ $(NULL) EXPORTS_NAMESPACES = mozilla/dom EXPORTS_mozilla/dom = \ ImageData.h \ $(NULL) CPPSRCS = \ CanvasImageCache.cpp \ CanvasUtils.cpp \ Loading @@ -61,6 +67,7 @@ CPPSRCS = \ nsCanvasRenderingContext2DAzure.cpp \ DocumentRendererParent.cpp \ DocumentRendererChild.cpp \ ImageData.cpp \ $(NULL) ifdef MOZ_WEBGL Loading
content/canvas/test/test_canvas.html +6 −38 Original line number Diff line number Diff line Loading @@ -7600,22 +7600,14 @@ function test_2d_imageData_create_type() { var canvas = document.getElementById('c261'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.Uint8ClampedArray !== undefined, "window.Uint8ClampedArray !== undefined"); window.ImageData.prototype.thisImplementsImageData = true; window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; var imgdata = ctx.createImageData(1, 1); ok(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); todo(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); ok(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); } catch (e) { _thrown_outer = true; } todo(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading @@ -7632,10 +7624,7 @@ function test_2d_imageData_create1_type() { var canvas = document.getElementById('c261a'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.Uint8ClampedArray !== undefined, "window.Uint8ClampedArray !== undefined"); window.ImageData.prototype.thisImplementsImageData = true; window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; Loading @@ -7643,11 +7632,6 @@ var imgdata = ctx.createImageData(ctx.createImageData(1, 1)); todo(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); ok(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); } catch (e) { _thrown_outer = true; } todo(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading Loading @@ -8058,9 +8042,6 @@ function test_2d_imageData_get_source_negative() { var canvas = document.getElementById('c272'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#fff'; Loading @@ -8082,11 +8063,6 @@ ok(imgdata2.data[1] === 0, "imgdata2.data[\""+(1)+"\"] === 0"); ok(imgdata2.data[2] === 0, "imgdata2.data[\""+(2)+"\"] === 0"); ok(imgdata2.data[3] === 0, "imgdata2.data[\""+(3)+"\"] === 0"); } catch (e) { _thrown_outer = true; } ok(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading Loading @@ -8238,22 +8214,14 @@ function test_2d_imageData_get_type() { var canvas = document.getElementById('c276'); var ctx = canvas.getContext('2d'); var _thrown_outer = false; try { todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.Uint8ClampedArray !== undefined, "window.Uint8ClampedArray !== undefined"); window.ImageData.prototype.thisImplementsImageData = true; window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; var imgdata = ctx.getImageData(0, 0, 1, 1); ok(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); todo(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); ok(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); } catch (e) { _thrown_outer = true; } todo(!_thrown_outer, ctx.canvas.id + ' should not throw exception'); } </script> Loading Loading @@ -8376,7 +8344,7 @@ function test_2d_imageData_object_ctor() { var canvas = document.getElementById('c280'); var ctx = canvas.getContext('2d'); todo(window.ImageData !== undefined, "window.ImageData !== undefined"); ok(window.ImageData !== undefined, "window.ImageData !== undefined"); try { var _thrown = false; new window.ImageData(1,1); } catch (e) { _thrown = true; } finally { ok(_thrown, "should throw exception"); } Loading
dom/base/nsDOMClassInfo.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -1302,6 +1302,8 @@ static nsDOMClassInfoData sClassInfoData[] = { DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(TextMetrics, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(ImageData, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(SmartCardEvent, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) Loading Loading @@ -3851,6 +3853,10 @@ nsDOMClassInfo::Init() DOM_CLASSINFO_MAP_ENTRY(nsIDOMTextMetrics) DOM_CLASSINFO_MAP_END DOM_CLASSINFO_MAP_BEGIN(ImageData, nsIDOMImageData) DOM_CLASSINFO_MAP_ENTRY(nsIDOMImageData) DOM_CLASSINFO_MAP_END DOM_CLASSINFO_MAP_BEGIN(XSLTProcessor, nsIXSLTProcessor) DOM_CLASSINFO_MAP_ENTRY(nsIXSLTProcessor) DOM_CLASSINFO_MAP_ENTRY(nsIXSLTProcessorPrivate) Loading