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

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

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

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

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