summaryrefslogtreecommitdiffstats
path: root/browser/actors/ScreenshotsComponentChild.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'browser/actors/ScreenshotsComponentChild.sys.mjs')
-rw-r--r--browser/actors/ScreenshotsComponentChild.sys.mjs53
1 files changed, 33 insertions, 20 deletions
diff --git a/browser/actors/ScreenshotsComponentChild.sys.mjs b/browser/actors/ScreenshotsComponentChild.sys.mjs
index 06d7204803..b578dfe7fa 100644
--- a/browser/actors/ScreenshotsComponentChild.sys.mjs
+++ b/browser/actors/ScreenshotsComponentChild.sys.mjs
@@ -48,6 +48,11 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
return this.removeEventListeners();
case "Screenshots:AddEventListeners":
return this.addEventListeners();
+ case "Screenshots:MoveFocusToContent":
+ return this.focusOverlay();
+ case "Screenshots:ClearFocus":
+ Services.focus.clearFocus(this.contentWindow);
+ return null;
}
return null;
}
@@ -64,6 +69,7 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
case "pointerup":
case "keyup":
case "keydown":
+ case "selectionchange":
if (!this.overlay?.initialized) {
return;
}
@@ -98,8 +104,8 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
this.requestDownloadScreenshot(event.detail.region);
break;
case "Screenshots:OverlaySelection": {
- let { hasSelection } = event.detail;
- this.sendOverlaySelection({ hasSelection });
+ let { hasSelection, overlayState } = event.detail;
+ this.sendOverlaySelection({ hasSelection, overlayState });
break;
}
case "Screenshots:RecordEvent": {
@@ -108,10 +114,13 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
break;
}
case "Screenshots:ShowPanel":
- this.showPanel();
+ this.sendAsyncMessage("Screenshots:ShowPanel");
break;
case "Screenshots:HidePanel":
- this.hidePanel();
+ this.sendAsyncMessage("Screenshots:HidePanel");
+ break;
+ case "Screenshots:FocusPanel":
+ this.sendAsyncMessage("Screenshots:MoveFocusToParent", event.detail);
break;
}
}
@@ -150,14 +159,6 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
this.endScreenshotsOverlay({ doNotResetMethods: true });
}
- showPanel() {
- this.sendAsyncMessage("Screenshots:ShowPanel");
- }
-
- hidePanel() {
- this.sendAsyncMessage("Screenshots:HidePanel");
- }
-
getDocumentTitle() {
return this.document.title;
}
@@ -172,6 +173,11 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
return methodsUsed;
}
+ focusOverlay() {
+ this.contentWindow.focus();
+ this.#overlay.focus();
+ }
+
/**
* Resolves when the document is ready to have an overlay injected into it.
*
@@ -220,6 +226,7 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
for (let event of ScreenshotsComponentChild.OVERLAY_EVENTS) {
chromeEventHandler.addEventListener(event, this, true);
}
+ this.document.addEventListener("selectionchange", this);
}
/**
@@ -257,6 +264,7 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
for (let event of ScreenshotsComponentChild.OVERLAY_EVENTS) {
chromeEventHandler.removeEventListener(event, this, true);
}
+ this.document.removeEventListener("selectionchange", this);
}
/**
@@ -308,8 +316,8 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
let rect = {
left: scrollMinX,
top: scrollMinY,
- right: scrollWidth,
- bottom: scrollHeight,
+ right: scrollMinX + scrollWidth,
+ bottom: scrollMinY + scrollHeight,
width: scrollWidth,
height: scrollHeight,
devicePixelRatio,
@@ -341,13 +349,18 @@ export class ScreenshotsComponentChild extends JSWindowActorChild {
* The height of the content window.
*/
getVisibleBounds() {
- let { scrollX, scrollY, clientWidth, clientHeight, devicePixelRatio } =
- this.#overlay.windowDimensions.dimensions;
+ let {
+ pageScrollX,
+ pageScrollY,
+ clientWidth,
+ clientHeight,
+ devicePixelRatio,
+ } = this.#overlay.windowDimensions.dimensions;
let rect = {
- left: scrollX,
- top: scrollY,
- right: scrollX + clientWidth,
- bottom: scrollY + clientHeight,
+ left: pageScrollX,
+ top: pageScrollY,
+ right: pageScrollX + clientWidth,
+ bottom: pageScrollY + clientHeight,
width: clientWidth,
height: clientHeight,
devicePixelRatio,