Bug 1172796 - Part 2: Add write-only flag for origin-clean check. r=roc

--HG--
extra : commitid : 2PNCCwc1czh
This commit is contained in:
Morris Tseng 2015-12-18 14:52:17 +08:00
Родитель c684330abd
Коммит 6587a9fbd2
3 изменённых файлов: 21 добавлений и 3 удалений

Просмотреть файл

@ -24,12 +24,13 @@ namespace dom {
OffscreenCanvasCloneData::OffscreenCanvasCloneData(layers::AsyncCanvasRenderer* aRenderer, OffscreenCanvasCloneData::OffscreenCanvasCloneData(layers::AsyncCanvasRenderer* aRenderer,
uint32_t aWidth, uint32_t aHeight, uint32_t aWidth, uint32_t aHeight,
layers::LayersBackend aCompositorBackend, layers::LayersBackend aCompositorBackend,
bool aNeutered) bool aNeutered, bool aIsWriteOnly)
: mRenderer(aRenderer) : mRenderer(aRenderer)
, mWidth(aWidth) , mWidth(aWidth)
, mHeight(aHeight) , mHeight(aHeight)
, mCompositorBackendType(aCompositorBackend) , mCompositorBackendType(aCompositorBackend)
, mNeutered(aNeutered) , mNeutered(aNeutered)
, mIsWriteOnly(aIsWriteOnly)
{ {
} }
@ -43,6 +44,7 @@ OffscreenCanvas::OffscreenCanvas(uint32_t aWidth,
layers::AsyncCanvasRenderer* aRenderer) layers::AsyncCanvasRenderer* aRenderer)
: mAttrDirty(false) : mAttrDirty(false)
, mNeutered(false) , mNeutered(false)
, mIsWriteOnly(false)
, mWidth(aWidth) , mWidth(aWidth)
, mHeight(aHeight) , mHeight(aHeight)
, mCompositorBackendType(aCompositorBackend) , mCompositorBackendType(aCompositorBackend)
@ -191,7 +193,7 @@ OffscreenCanvasCloneData*
OffscreenCanvas::ToCloneData() OffscreenCanvas::ToCloneData()
{ {
return new OffscreenCanvasCloneData(mCanvasRenderer, mWidth, mHeight, return new OffscreenCanvasCloneData(mCanvasRenderer, mWidth, mHeight,
mCompositorBackendType, mNeutered); mCompositorBackendType, mNeutered, mIsWriteOnly);
} }
/* static */ already_AddRefed<OffscreenCanvas> /* static */ already_AddRefed<OffscreenCanvas>

Просмотреть файл

@ -35,7 +35,7 @@ struct OffscreenCanvasCloneData final
OffscreenCanvasCloneData(layers::AsyncCanvasRenderer* aRenderer, OffscreenCanvasCloneData(layers::AsyncCanvasRenderer* aRenderer,
uint32_t aWidth, uint32_t aHeight, uint32_t aWidth, uint32_t aHeight,
layers::LayersBackend aCompositorBackend, layers::LayersBackend aCompositorBackend,
bool aNeutered); bool aNeutered, bool aIsWriteOnly);
~OffscreenCanvasCloneData(); ~OffscreenCanvasCloneData();
RefPtr<layers::AsyncCanvasRenderer> mRenderer; RefPtr<layers::AsyncCanvasRenderer> mRenderer;
@ -43,6 +43,7 @@ struct OffscreenCanvasCloneData final
uint32_t mHeight; uint32_t mHeight;
layers::LayersBackend mCompositorBackendType; layers::LayersBackend mCompositorBackendType;
bool mNeutered; bool mNeutered;
bool mIsWriteOnly;
}; };
class OffscreenCanvas final : public DOMEventTargetHelper class OffscreenCanvas final : public DOMEventTargetHelper
@ -147,6 +148,16 @@ public:
return mNeutered; return mNeutered;
} }
void SetWriteOnly()
{
mIsWriteOnly = true;
}
bool IsWriteOnly() const
{
return mIsWriteOnly;
}
layers::LayersBackend GetCompositorBackendType() const layers::LayersBackend GetCompositorBackendType() const
{ {
return mCompositorBackendType; return mCompositorBackendType;
@ -164,6 +175,7 @@ private:
bool mAttrDirty; bool mAttrDirty;
bool mNeutered; bool mNeutered;
bool mIsWriteOnly;
uint32_t mWidth; uint32_t mWidth;
uint32_t mHeight; uint32_t mHeight;

Просмотреть файл

@ -783,6 +783,10 @@ HTMLCanvasElement::TransferControlToOffscreen(ErrorResult& aRv)
sz.height, sz.height,
GetCompositorBackendType(), GetCompositorBackendType(),
renderer); renderer);
if (mWriteOnly) {
mOffscreenCanvas->SetWriteOnly();
}
if (!mContextObserver) { if (!mContextObserver) {
mContextObserver = new HTMLCanvasElementObserver(this); mContextObserver = new HTMLCanvasElementObserver(this);
} }