зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1172796 - Part 2: Add write-only flag for origin-clean check. r=roc
--HG-- extra : commitid : 2PNCCwc1czh
This commit is contained in:
Родитель
c684330abd
Коммит
6587a9fbd2
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче