fix: Prevent 'Previous API instantiation failed' errors on runtime.sendMessage API calls (#64)
This commit is contained in:
parent
09d05cc073
commit
47ddfbfddb
|
@ -348,10 +348,10 @@ if (typeof browser === "undefined") {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Create an object that has the real target as its prototype
|
// Create a new empty object and copy the properties of the original chrome object
|
||||||
// to prevent a Proxy violation exception for the devtools API getter
|
// to prevent a Proxy violation exception for the devtools API getter
|
||||||
// (which is a read-only non-configurable property on the original target).
|
// (which is a read-only non-configurable property on the original target).
|
||||||
const targetObject = Object.create(chrome);
|
const targetObject = Object.assign({}, chrome);
|
||||||
|
|
||||||
return wrapObject(targetObject, staticWrappers, apiMetadata);
|
return wrapObject(targetObject, staticWrappers, apiMetadata);
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,8 +8,10 @@ const {setupTestDOMWindow} = require("./setup");
|
||||||
describe("browser-polyfill", () => {
|
describe("browser-polyfill", () => {
|
||||||
describe("proxies non-configurable read-only properties", () => {
|
describe("proxies non-configurable read-only properties", () => {
|
||||||
it("creates a proxy that doesn't raise a Proxy violation exception", () => {
|
it("creates a proxy that doesn't raise a Proxy violation exception", () => {
|
||||||
const fakeChrome = {};
|
const fakeChrome = {"devtools": {}};
|
||||||
|
|
||||||
|
// Override the property to make it non-configurable (needed to be sure that
|
||||||
|
// the polyfill is correctly workarounding the Proxy TypeError).
|
||||||
Object.defineProperty(fakeChrome, "devtools", {
|
Object.defineProperty(fakeChrome, "devtools", {
|
||||||
enumarable: true,
|
enumarable: true,
|
||||||
configurable: false,
|
configurable: false,
|
||||||
|
@ -22,8 +24,6 @@ describe("browser-polyfill", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
return setupTestDOMWindow(fakeChrome).then(window => {
|
return setupTestDOMWindow(fakeChrome).then(window => {
|
||||||
window.browser.devtools; // eslint-disable-line
|
|
||||||
|
|
||||||
ok(window.browser.devtools.inspectedWindow,
|
ok(window.browser.devtools.inspectedWindow,
|
||||||
"The non-configurable read-only property can be accessed");
|
"The non-configurable read-only property can be accessed");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue