Skip to content

Commit a3f34fb

Browse files
authored
chore: export juggler as a standalone folder for browser build (#2432)
This leaves our firefox diff to gecko instrumentation changes only. Drive-by: rename webkit "src" folder into "embedder".
1 parent 8e8f978 commit a3f34fb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+6346
-6404
lines changed

browser_patches/export.sh

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,21 @@ FRIENDLY_CHECKOUT_PATH="";
3838
BUILD_NUMBER_UPSTREAM_URL=""
3939
CHECKOUT_PATH=""
4040
EXPORT_PATH=""
41+
EXTRA_FOLDER_PW_PATH=""
42+
EXTRA_FOLDER_CHECKOUT_RELPATH=""
4143
if [[ ("$1" == "firefox") || ("$1" == "firefox/") || ("$1" == "ff") ]]; then
4244
FRIENDLY_CHECKOUT_PATH="//browser_patches/firefox/checkout";
4345
CHECKOUT_PATH="$PWD/firefox/checkout"
46+
EXTRA_FOLDER_PW_PATH="$PWD/firefox/juggler"
47+
EXTRA_FOLDER_CHECKOUT_RELPATH="juggler"
4448
EXPORT_PATH="$PWD/firefox"
4549
BUILD_NUMBER_UPSTREAM_URL="https://raw.githubusercontent.com/microsoft/playwright/master/browser_patches/firefox/BUILD_NUMBER"
4650
source "./firefox/UPSTREAM_CONFIG.sh"
4751
elif [[ ("$1" == "webkit") || ("$1" == "webkit/") || ("$1" == "wk") ]]; then
4852
FRIENDLY_CHECKOUT_PATH="//browser_patches/webkit/checkout";
4953
CHECKOUT_PATH="$PWD/webkit/checkout"
54+
EXTRA_FOLDER_PW_PATH="$PWD/webkit/embedder/Playwright"
55+
EXTRA_FOLDER_CHECKOUT_RELPATH="Tools/Playwright"
5056
EXPORT_PATH="$PWD/webkit"
5157
BUILD_NUMBER_UPSTREAM_URL="https://raw.githubusercontent.com/microsoft/playwright/master/browser_patches/webkit/BUILD_NUMBER"
5258
source "./webkit/UPSTREAM_CONFIG.sh"
@@ -110,7 +116,7 @@ fi
110116

111117
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
112118
NEW_BASE_REVISION=$(git merge-base $REMOTE_BROWSER_UPSTREAM/$BASE_BRANCH $CURRENT_BRANCH)
113-
NEW_DIFF=$(git diff --diff-algorithm=myers --full-index $NEW_BASE_REVISION $CURRENT_BRANCH -- . ":!Tools/Playwright")
119+
NEW_DIFF=$(git diff --diff-algorithm=myers --full-index $NEW_BASE_REVISION $CURRENT_BRANCH -- . ":!${EXTRA_FOLDER_CHECKOUT_RELPATH}")
114120

115121
# Increment BUILD_NUMBER
116122
BUILD_NUMBER=$(curl ${BUILD_NUMBER_UPSTREAM_URL})
@@ -122,12 +128,10 @@ BASE_REVISION=\"$NEW_BASE_REVISION\"" > $EXPORT_PATH/UPSTREAM_CONFIG.sh
122128
echo "$NEW_DIFF" > $EXPORT_PATH/patches/$PATCH_NAME
123129
echo $BUILD_NUMBER > $EXPORT_PATH/BUILD_NUMBER
124130

125-
if [[ ("$1" == "webkit") || ("$1" == "webkit/") || ("$1" == "wk") ]]; then
126-
echo "-- patching WebKit embedders"
127-
rm -rf $EXPORT_PATH/src/*
128-
mkdir $EXPORT_PATH/src/Tools
129-
cp -r Tools/Playwright $EXPORT_PATH/src/Tools/
130-
fi
131+
echo "-- exporting standalone folder"
132+
rm -rf "${EXTRA_FOLDER_PW_PATH}"
133+
mkdir -p $(dirname "${EXTRA_FOLDER_PW_PATH}")
134+
cp -r "${EXTRA_FOLDER_CHECKOUT_RELPATH}" "${EXTRA_FOLDER_PW_PATH}"
131135

132136
NEW_BASE_REVISION_TEXT="$NEW_BASE_REVISION (not changed)"
133137
if [[ "$NEW_BASE_REVISION" != "$BASE_REVISION" ]]; then
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1100
1+
1101
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/* This Source Code Form is subject to the terms of the Mozilla Public
2+
* License, v. 2.0. If a copy of the MPL was not distributed with this
3+
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4+
5+
const uuidGen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
6+
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
7+
8+
class Helper {
9+
addObserver(handler, topic) {
10+
Services.obs.addObserver(handler, topic);
11+
return () => Services.obs.removeObserver(handler, topic);
12+
}
13+
14+
addMessageListener(receiver, eventName, handler) {
15+
receiver.addMessageListener(eventName, handler);
16+
return () => receiver.removeMessageListener(eventName, handler);
17+
}
18+
19+
addEventListener(receiver, eventName, handler) {
20+
receiver.addEventListener(eventName, handler);
21+
return () => receiver.removeEventListener(eventName, handler);
22+
}
23+
24+
on(receiver, eventName, handler) {
25+
// The toolkit/modules/EventEmitter.jsm dispatches event name as a first argument.
26+
// Fire event listeners without it for convenience.
27+
const handlerWrapper = (_, ...args) => handler(...args);
28+
receiver.on(eventName, handlerWrapper);
29+
return () => receiver.off(eventName, handlerWrapper);
30+
}
31+
32+
addProgressListener(progress, listener, flags) {
33+
progress.addProgressListener(listener, flags);
34+
return () => progress.removeProgressListener(listener);
35+
}
36+
37+
removeListeners(listeners) {
38+
for (const tearDown of listeners)
39+
tearDown.call(null);
40+
listeners.splice(0, listeners.length);
41+
}
42+
43+
generateId() {
44+
const string = uuidGen.generateUUID().toString();
45+
return string.substring(1, string.length - 1);
46+
}
47+
48+
getLoadContext(channel) {
49+
let loadContext = null;
50+
try {
51+
if (channel.notificationCallbacks)
52+
loadContext = channel.notificationCallbacks.getInterface(Ci.nsILoadContext);
53+
} catch (e) {}
54+
try {
55+
if (!loadContext && channel.loadGroup)
56+
loadContext = channel.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext);
57+
} catch (e) { }
58+
return loadContext;
59+
}
60+
61+
getNetworkErrorStatusText(status) {
62+
if (!status)
63+
return null;
64+
for (const key of Object.keys(Cr)) {
65+
if (Cr[key] === status)
66+
return key;
67+
}
68+
// Security module. The following is taken from
69+
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/How_to_check_the_secruity_state_of_an_XMLHTTPRequest_over_SSL
70+
if ((status & 0xff0000) === 0x5a0000) {
71+
// NSS_SEC errors (happen below the base value because of negative vals)
72+
if ((status & 0xffff) < Math.abs(Ci.nsINSSErrorsService.NSS_SEC_ERROR_BASE)) {
73+
// The bases are actually negative, so in our positive numeric space, we
74+
// need to subtract the base off our value.
75+
const nssErr = Math.abs(Ci.nsINSSErrorsService.NSS_SEC_ERROR_BASE) - (status & 0xffff);
76+
switch (nssErr) {
77+
case 11:
78+
return 'SEC_ERROR_EXPIRED_CERTIFICATE';
79+
case 12:
80+
return 'SEC_ERROR_REVOKED_CERTIFICATE';
81+
case 13:
82+
return 'SEC_ERROR_UNKNOWN_ISSUER';
83+
case 20:
84+
return 'SEC_ERROR_UNTRUSTED_ISSUER';
85+
case 21:
86+
return 'SEC_ERROR_UNTRUSTED_CERT';
87+
case 36:
88+
return 'SEC_ERROR_CA_CERT_INVALID';
89+
case 90:
90+
return 'SEC_ERROR_INADEQUATE_KEY_USAGE';
91+
case 176:
92+
return 'SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED';
93+
default:
94+
return 'SEC_ERROR_UNKNOWN';
95+
}
96+
}
97+
const sslErr = Math.abs(Ci.nsINSSErrorsService.NSS_SSL_ERROR_BASE) - (status & 0xffff);
98+
switch (sslErr) {
99+
case 3:
100+
return 'SSL_ERROR_NO_CERTIFICATE';
101+
case 4:
102+
return 'SSL_ERROR_BAD_CERTIFICATE';
103+
case 8:
104+
return 'SSL_ERROR_UNSUPPORTED_CERTIFICATE_TYPE';
105+
case 9:
106+
return 'SSL_ERROR_UNSUPPORTED_VERSION';
107+
case 12:
108+
return 'SSL_ERROR_BAD_CERT_DOMAIN';
109+
default:
110+
return 'SSL_ERROR_UNKNOWN';
111+
}
112+
}
113+
return '<unknown error>';
114+
}
115+
}
116+
117+
var EXPORTED_SYMBOLS = [ "Helper" ];
118+
this.Helper = Helper;
119+

0 commit comments

Comments
 (0)