Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
/**
* Bug 1847971 - ebay.com listings page
*
* eBay does not show the barcode scanner option on Firefox on Android,
* though it seems to work. It uses a server-side check to tell itself
* to not enable the scanner feature, so rather than pretend to be Chrome
* entirely, we carefully change `barcodeEnabled` from `false` to `true`.
*/
/* globals exportFunction */
const ENABLED_MESSAGE =
"The barcode scanner feature has been force-enabled. See https://bugzilla.mozilla.org/show_bug.cgi?id=1847971 for details.";
let value = undefined;
function check(obj) {
if (obj === null) {
return false;
}
if (Array.isArray(obj)) {
for (const v of obj) {
if (check(v)) {
return true;
}
}
return false;
}
if (typeof obj === "object") {
if ("barcodeEnabled" in obj) {
obj.barcodeEnabled = true;
return true;
}
for (const v of Object.values(obj)) {
if (check(v)) {
return true;
}
}
}
return false;
}
Object.defineProperty(window.wrappedJSObject, "$feprelist_C", {
configurable: true,
get: exportFunction(function () {
return value;
}, window),
set: exportFunction(function (v) {
try {
if (check(v)) {
console.info(ENABLED_MESSAGE);
}
} catch (_) {}
value = v;
}, window),
});