Skip to content

Commit 4ac5a07

Browse files
committed
browser(firefox): signal link click
1 parent 1bf5b61 commit 4ac5a07

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

browser_patches/firefox/BUILD_NUMBER

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1034
1+
1035

browser_patches/firefox/patches/bootstrap.diff

+30-5
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ index 040c7b124dec6bb254563bbe74fe50012cb077a3..b4e6b8132786af70e8ad0dce88b67c28
138138
const transportProvider = {
139139
setListener(upgradeListener) {
140140
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
141-
index b30c186c88daa7dd62f69e452dedc9e968511bb5..3a9bda87d5c577fd578bf3a523854d46c2a8db6a 100644
141+
index b30c186c88daa7dd62f69e452dedc9e968511bb5..665b2389529b9328589a86a7a128ed6e8f86ecdf 100644
142142
--- a/docshell/base/nsDocShell.cpp
143143
+++ b/docshell/base/nsDocShell.cpp
144144
@@ -95,6 +95,7 @@
@@ -221,6 +221,18 @@ index b30c186c88daa7dd62f69e452dedc9e968511bb5..3a9bda87d5c577fd578bf3a523854d46
221221
NS_IMETHODIMP
222222
nsDocShell::GetIsNavigating(bool* aOut) {
223223
*aOut = mIsNavigating;
224+
@@ -12224,6 +12276,11 @@ nsresult nsDocShell::OnLinkClick(
225+
this, aContent, aURI, target, aFileName, aPostDataStream,
226+
aHeadersDataStream, noOpenerImplied, aIsUserTriggered, aIsTrusted,
227+
aTriggeringPrincipal, aCsp);
228+
+
229+
+ nsCOMPtr<nsIObserverService> observerService = mozilla::services::GetObserverService();
230+
+ observerService->NotifyObservers(
231+
+ ToSupports(aContent), "juggler-link-click", nullptr);
232+
+
233+
return DispatchToTabGroup(TaskCategory::UI, ev.forget());
234+
}
235+
224236
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
225237
index e88da0c1e9adcc6f50ca4b3cb4a55d12430736e8..1544de7726143464e204532dae12dd2ad7373a0f 100644
226238
--- a/docshell/base/nsDocShell.h
@@ -2464,10 +2476,10 @@ index 0000000000000000000000000000000000000000..be70ea364f9534bb3b344f64970366c3
24642476
+
24652477
diff --git a/testing/juggler/content/PageAgent.js b/testing/juggler/content/PageAgent.js
24662478
new file mode 100644
2467-
index 0000000000000000000000000000000000000000..8c47b147be6fee0a013edd7021b6f8deb640f831
2479+
index 0000000000000000000000000000000000000000..6fc499e1943cf9626c62b95b6c609a69fcaefd50
24682480
--- /dev/null
24692481
+++ b/testing/juggler/content/PageAgent.js
2470-
@@ -0,0 +1,885 @@
2482+
@@ -0,0 +1,895 @@
24712483
+"use strict";
24722484
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
24732485
+const Ci = Components.interfaces;
@@ -2711,6 +2723,7 @@ index 0000000000000000000000000000000000000000..8c47b147be6fee0a013edd7021b6f8de
27112723
+ this._onWorkerCreated(worker);
27122724
+
27132725
+ this._eventListeners.push(...[
2726+
+ helper.addObserver(this._linkClicked.bind(this), 'juggler-link-click'),
27142727
+ helper.addObserver(this._filePickerShown.bind(this), 'juggler-file-picker-shown'),
27152728
+ helper.addObserver(this._onDOMWindowCreated.bind(this), 'content-document-global-created'),
27162729
+ helper.addEventListener(this._messageManager, 'DOMContentLoaded', this._onDOMContentLoaded.bind(this)),
@@ -2757,6 +2770,15 @@ index 0000000000000000000000000000000000000000..8c47b147be6fee0a013edd7021b6f8de
27572770
+ this._docShell.fileInputInterceptionEnabled = !!enabled;
27582771
+ }
27592772
+
2773+
+ _linkClicked(sync, anchorElement) {
2774+
+ if (anchorElement.ownerGlobal.docShell !== this._docShell)
2775+
+ return;
2776+
+ const frameData = this._findFrameForNode(anchorElement);
2777+
+ this._session.send('protocol', 'Page.linkClicked', {
2778+
+ frameId: frameData._frame.id(),
2779+
+ });
2780+
+ }
2781+
+
27602782
+ _filePickerShown(inputElement) {
27612783
+ if (inputElement.ownerGlobal.docShell !== this._docShell)
27622784
+ return;
@@ -5258,10 +5280,10 @@ index 0000000000000000000000000000000000000000..78b6601b91d0b7fcda61114e6846aa07
52585280
+this.EXPORTED_SYMBOLS = ['t', 'checkScheme'];
52595281
diff --git a/testing/juggler/protocol/Protocol.js b/testing/juggler/protocol/Protocol.js
52605282
new file mode 100644
5261-
index 0000000000000000000000000000000000000000..838b642eb08efee8a8e6e61421731aa3555e8429
5283+
index 0000000000000000000000000000000000000000..c83de10eba8664728557117e643070badf546616
52625284
--- /dev/null
52635285
+++ b/testing/juggler/protocol/Protocol.js
5264-
@@ -0,0 +1,764 @@
5286+
@@ -0,0 +1,767 @@
52655287
+const {t, checkScheme} = ChromeUtils.import('chrome://juggler/content/protocol/PrimitiveTypes.js');
52665288
+
52675289
+// Protocol-specific types.
@@ -5783,6 +5805,9 @@ index 0000000000000000000000000000000000000000..838b642eb08efee8a8e6e61421731aa3
57835805
+ name: t.String,
57845806
+ payload: t.Any,
57855807
+ },
5808+
+ 'linkClicked': {
5809+
+ frameId: t.String,
5810+
+ },
57865811
+ 'fileChooserOpened': {
57875812
+ executionContextId: t.String,
57885813
+ element: runtimeTypes.RemoteObject

0 commit comments

Comments
 (0)