mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-22 08:53:24 +08:00
Creating an evaluateJavascript branch
This commit is contained in:
parent
0ee672d2b0
commit
bb96bb9a88
15
bin/templates/project/assets/www/cordova.js
vendored
15
bin/templates/project/assets/www/cordova.js
vendored
@ -330,7 +330,7 @@ module.exports = cordova;
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/android/nativeapiprovider.js
|
// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/android/nativeapiprovider.js
|
||||||
define("cordova/android/nativeapiprovider", function(require, exports, module) {
|
define("cordova/android/nativeapiprovider", function(require, exports, module) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -353,7 +353,7 @@ module.exports = {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/android/promptbasednativeapi.js
|
// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/android/promptbasednativeapi.js
|
||||||
define("cordova/android/promptbasednativeapi", function(require, exports, module) {
|
define("cordova/android/promptbasednativeapi", function(require, exports, module) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -862,7 +862,7 @@ module.exports = channel;
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/exec.js
|
// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/exec.js
|
||||||
define("cordova/exec", function(require, exports, module) {
|
define("cordova/exec", function(require, exports, module) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -897,7 +897,8 @@ var cordova = require('cordova'),
|
|||||||
// For the ONLINE_EVENT to be viable, it would need to intercept all event
|
// For the ONLINE_EVENT to be viable, it would need to intercept all event
|
||||||
// listeners (both through addEventListener and window.ononline) as well
|
// listeners (both through addEventListener and window.ononline) as well
|
||||||
// as set the navigator property itself.
|
// as set the navigator property itself.
|
||||||
ONLINE_EVENT: 2
|
ONLINE_EVENT: 2,
|
||||||
|
EVAL_BRIDGE: 3
|
||||||
},
|
},
|
||||||
jsToNativeBridgeMode, // Set lazily.
|
jsToNativeBridgeMode, // Set lazily.
|
||||||
nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT,
|
nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT,
|
||||||
@ -1611,7 +1612,7 @@ exports.reset();
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/platform.js
|
// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/platform.js
|
||||||
define("cordova/platform", function(require, exports, module) {
|
define("cordova/platform", function(require, exports, module) {
|
||||||
|
|
||||||
// The last resume event that was received that had the result of a plugin call.
|
// The last resume event that was received that had the result of a plugin call.
|
||||||
@ -1721,7 +1722,7 @@ function onMessageFromNative(msg) {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/plugin/android/app.js
|
// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/plugin/android/app.js
|
||||||
define("cordova/plugin/android/app", function(require, exports, module) {
|
define("cordova/plugin/android/app", function(require, exports, module) {
|
||||||
|
|
||||||
var exec = require('cordova/exec');
|
var exec = require('cordova/exec');
|
||||||
@ -2164,4 +2165,4 @@ window.cordova = require('cordova');
|
|||||||
|
|
||||||
require('cordova/init');
|
require('cordova/init');
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
3
cordova-js-src/exec.js
vendored
3
cordova-js-src/exec.js
vendored
@ -51,7 +51,8 @@ var cordova = require('cordova'),
|
|||||||
// For the ONLINE_EVENT to be viable, it would need to intercept all event
|
// For the ONLINE_EVENT to be viable, it would need to intercept all event
|
||||||
// listeners (both through addEventListener and window.ononline) as well
|
// listeners (both through addEventListener and window.ononline) as well
|
||||||
// as set the navigator property itself.
|
// as set the navigator property itself.
|
||||||
ONLINE_EVENT: 2
|
ONLINE_EVENT: 2,
|
||||||
|
EVAL_BRIDGE: 3
|
||||||
},
|
},
|
||||||
jsToNativeBridgeMode, // Set lazily.
|
jsToNativeBridgeMode, // Set lazily.
|
||||||
nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT,
|
nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT,
|
||||||
|
@ -20,6 +20,7 @@ package org.apache.cordova;
|
|||||||
|
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.webkit.ValueCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for all Cordova engines.
|
* Interface for all Cordova engines.
|
||||||
@ -58,6 +59,9 @@ public interface CordovaWebViewEngine {
|
|||||||
/** Clean up all resources associated with the WebView. */
|
/** Clean up all resources associated with the WebView. */
|
||||||
void destroy();
|
void destroy();
|
||||||
|
|
||||||
|
/** Add the evaulate Javascript method **/
|
||||||
|
void evaluateJavascript(String js, ValueCallback<String> callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to retrieve the associated CordovaWebView given a View without knowing the type of Engine.
|
* Used to retrieve the associated CordovaWebView given a View without knowing the type of Engine.
|
||||||
* E.g. ((CordovaWebView.EngineView)activity.findViewById(android.R.id.webView)).getCordovaWebView();
|
* E.g. ((CordovaWebView.EngineView)activity.findViewById(android.R.id.webView)).getCordovaWebView();
|
||||||
|
@ -349,6 +349,31 @@ public class NativeToJsMessageQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Uses webView.evaluateJavascript to execute messages. */
|
||||||
|
public static class EvalBridgeMode extends BridgeMode {
|
||||||
|
private final CordovaWebViewEngine engine;
|
||||||
|
private final CordovaInterface cordova;
|
||||||
|
|
||||||
|
public EvalBridgeMode(CordovaWebViewEngine engine, CordovaInterface cordova) {
|
||||||
|
this.engine = engine;
|
||||||
|
this.cordova = cordova;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNativeToJsMessageAvailable(final NativeToJsMessageQueue queue) {
|
||||||
|
cordova.getActivity().runOnUiThread(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
String js = queue.popAndEncodeAsJs();
|
||||||
|
if (js != null) {
|
||||||
|
engine.evaluateJavascript(js, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static class JsMessage {
|
private static class JsMessage {
|
||||||
final String jsPayloadOrCallbackId;
|
final String jsPayloadOrCallbackId;
|
||||||
final PluginResult pluginResult;
|
final PluginResult pluginResult;
|
||||||
|
@ -28,6 +28,7 @@ import android.content.IntentFilter;
|
|||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.webkit.ValueCallback;
|
||||||
import android.webkit.WebSettings;
|
import android.webkit.WebSettings;
|
||||||
import android.webkit.WebSettings.LayoutAlgorithm;
|
import android.webkit.WebSettings.LayoutAlgorithm;
|
||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
@ -331,4 +332,9 @@ public class SystemWebViewEngine implements CordovaWebViewEngine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void evaluateJavascript(String js, ValueCallback<String> callback) {
|
||||||
|
webView.evaluateJavascript(js, callback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user