Skip to content
This repository has been archived by the owner on Apr 4, 2023. It is now read-only.

Commit

Permalink
make web extension work again
Browse files Browse the repository at this point in the history
  • Loading branch information
g4rb4g3 committed Jun 20, 2020
1 parent 78c11b9 commit 9e255cd
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 34 deletions.
6 changes: 3 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
apply plugin: 'com.android.application'

ext {
geckoview_channel = "geckoview"
geckoview_version = "77.0.20200603183750"
geckoview_channel = "geckoview-beta"
geckoview_version = "78.0.20200619002543"
}

android {
Expand All @@ -12,7 +12,7 @@ android {
minSdkVersion 17
targetSdkVersion 17
versionCode 1
versionName "3.1.6"
versionName "3.1.7"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk {
abiFilters 'armeabi-v7a'
Expand Down
66 changes: 41 additions & 25 deletions app/src/main/assets/abrp/background.js
Original file line number Diff line number Diff line change
@@ -1,45 +1,61 @@
var tlm = null;
function onError(error) {
port.postMessage(error);
}

// Establish connection with app
let port = browser.runtime.connectNative("browser");
port.onMessage.addListener(response => {
try {
let code = '';
let code = null;
if(response.zoomIn) {
code = 'document.getElementById("zoomin").click()';
} else if(response.zoomOut) {
code = 'document.getElementById("zoomout").click()';
} else if (response.toggleNight) {
code = 'document.getElementById("toolbar-nightbutton").click()';
} else if(response.setCss) {
browser.tabs.insertCSS({file: "abrptransmitter.css"});
browser.tabs.query({}).then((tabs) => {
try {
for (let tab of tabs) {
browser.tabs.insertCSS(tab.id, {file: "abrptransmitter.css"});
}
} catch (e) {
onError(e);
}
}).catch(onError);
} else if(response.removeCss) {
browser.tabs.removeCSS({file: "abrptransmitter.css"});
browser.tabs.query({}).then((tabs) => {
try {
for (let tab of tabs) {
browser.tabs.removeCSS(tab.id, {file: "abrptransmitter.css"});
}
} catch (e) {
onError(e);
}
}).catch(onError);
} else if(response.lat && response.lon) {
tlm = response;
browser.tabs.query({ currentWindow: true, active: true }).then(sendMessageToTabs).catch(onError);
browser.tabs.query({}).then((tabs) => {
try {
for (let tab of tabs) {
browser.tabs.sendMessage(tab.id, {"tlm": response});
}
} catch (e) {
onError(e);
}
}).catch(onError);
}
if(code != '') {
browser.tabs.executeScript({
code: code
});
if(code != null) {
browser.tabs.query({}).then((tabs) => {
try {
for (let tab of tabs) {
browser.tabs.executeScript(tab.id, {code: code});
}
} catch (e) {
onError(e);
}
}).catch(onError);
}
} catch (e) {
onError(e);
}
});

function onError(error) {
//console.log(error);
port.postMessage(error);
}

function sendMessageToTabs(tabs) {
try {
for (let tab of tabs) {
browser.tabs.sendMessage(tab.id, {"tlm": tlm});
}
} catch (e) {
onError(e);
}
}
5 changes: 5 additions & 0 deletions app/src/main/assets/abrp/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
"name": "ABRPTransmitter",
"version": "1.0",
"description": "Adds support for native messaging to abrp.",
"browser_specific_settings": {
"gecko": {
"id": "[email protected]"
}
},
"background": {
"scripts": ["background.js"]
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
Expand Down Expand Up @@ -355,12 +356,12 @@ public void onDisconnect(@NonNull WebExtension.Port port) {
}
};

WebExtension extension = new WebExtension("resource://android/assets/abrp/", "browser", WebExtension.Flags.ALLOW_CONTENT_MESSAGING, mGeckoRuntime.getWebExtensionController());
extension.setMessageDelegate(messageDelegate, "browser");
mGeckoRuntime.registerWebExtension(extension).exceptionally(exception -> {
sLog.error("error registering web extension", exception);
return null;
});
mGeckoRuntime.getWebExtensionController()
.installBuiltIn("resource://android/assets/abrp/")
.accept(
extension -> extension.setMessageDelegate(messageDelegate, "browser"),
e -> Log.e("MessageDelegate", "Error registering WebExtension", e)
);
}

private void setCss() {
Expand Down

0 comments on commit 9e255cd

Please sign in to comment.