Switch to serving the ui from s3 to work around the inability to target a webextension at a resource:// url

This commit is contained in:
Donovan Preston
2019-03-11 15:51:57 -04:00
parent 36f7c74828
commit 7d0adadc79
7 changed files with 21 additions and 14 deletions

View File

@@ -84,7 +84,7 @@ function body(main) {
});
app.use(metrics);
app.route('/', body(home));
app.route('/assets/android.html', body(home));
app.route('/android.html', body(home));
app.route('/upload', upload);
app.route('/share/:id', share);
app.route('/preferences', preferences);

View File

@@ -10,4 +10,4 @@ npm run build
rm -rf src/main/assets
mkdir -p src/main/assets
cp -R ../../dist/* src/main/assets
cp -R ../../borderify src/main/assets
cp -R ../send-android-comms-bridge src/main/assets

View File

@@ -17,6 +17,7 @@ import mozilla.components.browser.session.Session
import mozilla.components.concept.engine.DefaultSettings
import mozilla.components.browser.engine.gecko.GeckoEngine
import mozilla.components.concept.engine.EngineView
import org.json.JSONObject
import org.mozilla.geckoview.*
@@ -63,7 +64,7 @@ class MainActivity : AppCompatActivity() {
settings.userAgentString = "Send Android"
mGeckoEngine = GeckoEngine(applicationContext, settings, mGeckoRuntime!!)
mSessionManager =
SessionManager(mGeckoEngine!!, defaultSession = { Session("resource://android/assets/android.html") })
SessionManager(mGeckoEngine!!, defaultSession = { Session("http://fzzzy-send-gv.s3-website-us-west-2.amazonaws.com/android.html") })
val sessionUseCases = SessionUseCases(mSessionManager!!)
val sessionId = "sendandroid"
mEngineView = mGeckoEngine!!.createView(applicationContext)
@@ -82,6 +83,7 @@ class MainActivity : AppCompatActivity() {
override fun onConnect(source: WebExtension, port: WebExtension.Port, session: GeckoSession?) {
Log.e("DEBUG", "onConnect")
port.postMessage(JSONObject("{\"message\": \"helloworld\"}"))
}
override fun onMessage(source: WebExtension, message: Any, session: GeckoSession?): GeckoResult<Any>? {
@@ -89,11 +91,11 @@ class MainActivity : AppCompatActivity() {
return GeckoResult.fromValue("MessageResponse")
}
}
mGeckoRuntime!!.registerWebExtension(WebExtension("resource://android/assets/borderify/", "sendandroid-borderify", messageDelegate)).then({
mGeckoRuntime!!.registerWebExtension(WebExtension("resource://android/assets/send-android-comms-bridge/", "send-android-comms-bridge", messageDelegate)).then({
Log.e("DEBUG", "REGISTERCOMPLETE")
GeckoResult.fromValue(Unit)
})
val initialSession = Session("resource://android/assets/android.html")
val initialSession = Session("http://fzzzy-send-gv.s3-website-us-west-2.amazonaws.com/android.html")
mSessionManager!!.add(initialSession, selected = true)
mEngineView!!.render(mSessionManager!!.getOrCreateEngineSession())

View File

@@ -1,14 +1,14 @@
{
"manifest_version": 2,
"name": "SendAndroidCommsBridge",
"name": "send-android-comms-bridge",
"version": "1.0",
"description": "Communicates between send android kotlin code and js content code.",
"content_scripts": [
{
"matches": ["resource://*/*"],
"js": ["borderify.js"]
"matches": ["http://fzzzy-send-gv.s3-website-us-west-2.amazonaws.com/*"],
"js": ["send-android-comms-bridge.js"]
}
],
"permissions": [

View File

@@ -1,9 +1,15 @@
/* global document, browser */
let first = true;
document.body.style.border = '5px solid red';
console.error('helloooooo');
const port = browser.runtime.connectBrowser();
port.onMessage.addListener(response => {
if (first) {
port.postMessage('we got the first message');
first = false;
}
console.error(`Received: ${JSON.stringify(response)}`);
});
port.postMessage('Hello from WebExtension!');

View File

@@ -26,7 +26,6 @@ class AndroidIndexPlugin {
name="viewport"
content="width=device-width, initial-scale=1"
/>
<base href="resource://android/assets/" />
<link href="${files['app.css']}" rel="stylesheet" />
<script src="${files['android.js']}"></script>
</head>

View File

@@ -20,11 +20,11 @@ module.exports = function(app, devServer) {
function android(req, res) {
const index = devServer.middleware.fileSystem
.readFileSync(devServer.middleware.getFilenameFromUrl('/android.html'))
.toString()
.replace(
'<base href="resource://android/assets/" />',
'<base href="http://localhost:8080/" />'
);
.toString();
//.replace(
// '<base href="resource://android/assets/" />',
// '<base href="http://localhost:8080/" />'
//);
res.set('Content-Type', 'text/html');
res.send(index);
}