Bug 1119527 - Implement canvas clearHitRegions. r=gw280, r=bz

This commit is contained in:
Florian Scholz 2015-01-09 09:41:00 -05:00
Родитель a097a74c33
Коммит e486771afa
4 изменённых файлов: 25 добавлений и 1 удалений

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

@ -3230,6 +3230,12 @@ CanvasRenderingContext2D::RemoveHitRegion(const nsAString& id)
}
}
void
CanvasRenderingContext2D::ClearHitRegions()
{
mHitRegionsOptions.Clear();
}
bool
CanvasRenderingContext2D::GetHitRegionRect(Element* aElement, nsRect& aRect)
{

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

@ -269,6 +269,7 @@ public:
void AddHitRegion(const HitRegionOptions& options, mozilla::ErrorResult& error);
void RemoveHitRegion(const nsAString& id);
void ClearHitRegions();
void DrawImage(const HTMLImageOrCanvasOrVideoElement& image,
double dx, double dy, mozilla::ErrorResult& error)

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

@ -33,10 +33,26 @@ function test_hitregions() {
ctx.addHitRegion({control: e});
ctx.addHitRegion({id: "a", control: d});
ctx.addHitRegion({id: "a", control: d});
ctx.removeHitRegion("a");
ctx.removeHitRegion("a");
ctx.removeHitRegion("b");
ctx.clearHitRegions();
} catch (e) {
_thrown_outer = true;
}
ok(!_thrown_outer, ctx.canvas.id + ' should not throw exception');
var _thrown_outer = false;
try {
ctx.rect(10,10,100,100);
ctx.addHitRegion({control: d});
ctx.addHitRegion({control: e});
ctx.addHitRegion({id: "a", control: d});
ctx.addHitRegion({id: "a", control: d});
ctx.clearHitRegions();
} catch (e) {
_thrown_outer = true;
}

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

@ -125,6 +125,7 @@ interface CanvasRenderingContext2D {
// hit regions
[Pref="canvas.hitregions.enabled", Throws] void addHitRegion(optional HitRegionOptions options);
[Pref="canvas.hitregions.enabled"] void removeHitRegion(DOMString id);
[Pref="canvas.hitregions.enabled"] void clearHitRegions();
// pixel manipulation
[NewObject, Throws]