|
|
@@ -24,6 +24,8 @@
|
|
|
|
|
|
const isChrome = navigator.userAgent.includes("Chrome");
|
|
|
|
|
|
+ const FEATURE_TESTS = {};
|
|
|
+
|
|
|
if (isChrome && !this.browser) {
|
|
|
this.browser = {
|
|
|
browserAction: {
|
|
|
@@ -36,28 +38,72 @@
|
|
|
if (chrome.runtime.lastError) {
|
|
|
reject(chrome.runtime.lastError);
|
|
|
} else {
|
|
|
- chrome.browserAction.setBadgeText(options, resolve);
|
|
|
+ try {
|
|
|
+ if (!FEATURE_TESTS["browserAction.setBadgeText"] || !FEATURE_TESTS["browserAction.setBadgeText"].callbackNotSupported) {
|
|
|
+ chrome.browserAction.setBadgeText(options, resolve);
|
|
|
+ } else {
|
|
|
+ chrome.browserAction.setBadgeText(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ FEATURE_TESTS["browserAction.setBadgeText"] = { callbackNotSupported: false };
|
|
|
+ chrome.browserAction.setBadgeText(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
}
|
|
|
}),
|
|
|
setBadgeBackgroundColor: options => new Promise((resolve, reject) => {
|
|
|
if (chrome.runtime.lastError) {
|
|
|
reject(chrome.runtime.lastError);
|
|
|
} else {
|
|
|
- chrome.browserAction.setBadgeBackgroundColor(options, resolve);
|
|
|
+ try {
|
|
|
+ if (!FEATURE_TESTS["browserAction.setBadgeBackgroundColor"] || !FEATURE_TESTS["browserAction.setBadgeBackgroundColor"].callbackNotSupported) {
|
|
|
+ chrome.browserAction.setBadgeBackgroundColor(options, resolve);
|
|
|
+ } else {
|
|
|
+ chrome.browserAction.setBadgeBackgroundColor(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ FEATURE_TESTS["browserAction.setBadgeBackgroundColor"] = { callbackNotSupported: false };
|
|
|
+ chrome.browserAction.setBadgeBackgroundColor(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
}
|
|
|
}),
|
|
|
setTitle: options => new Promise((resolve, reject) => {
|
|
|
if (chrome.runtime.lastError) {
|
|
|
reject(chrome.runtime.lastError);
|
|
|
} else {
|
|
|
- chrome.browserAction.setTitle(options, resolve);
|
|
|
+ try {
|
|
|
+ if (!FEATURE_TESTS["browserAction.setTitle"] || !FEATURE_TESTS["browserAction.setTitle"].callbackNotSupported) {
|
|
|
+ chrome.browserAction.setTitle(options, resolve);
|
|
|
+ } else {
|
|
|
+ chrome.browserAction.setTitle(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ FEATURE_TESTS["browserAction.setTitle"] = { callbackNotSupported: false };
|
|
|
+ chrome.browserAction.setTitle(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
}
|
|
|
}),
|
|
|
setIcon: options => new Promise((resolve, reject) => {
|
|
|
if (chrome.runtime.lastError) {
|
|
|
reject(chrome.runtime.lastError);
|
|
|
} else {
|
|
|
- chrome.browserAction.setIcon(options, resolve);
|
|
|
+ try {
|
|
|
+ if (!FEATURE_TESTS["browserAction.setIcon"] || !FEATURE_TESTS["browserAction.setIcon"].callbackNotSupported) {
|
|
|
+ chrome.browserAction.setIcon(options, resolve);
|
|
|
+ } else {
|
|
|
+ chrome.browserAction.setIcon(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ FEATURE_TESTS["browserAction.setIcon"] = { callbackNotSupported: false };
|
|
|
+ chrome.browserAction.setIcon(options);
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
},
|