Commit Graph

30 Commits

Author SHA1 Message Date
Jim Chen
36628f0198 Bug 1292323 - Implement JNI thread checking and dispatching; r=snorp
Implement checking the calling thread of a JNI call based on the
calledFrom attribute set in WrapForJNI. Also implement automatic call
dispatching based on the dispatchTo attribute set in WrapForJNI. This
eliminates the use of UsesNativeCallProxy and UsesGeckoThreadProxy.
2016-08-12 23:15:52 -04:00
Jim Chen
0bd1b97d16 Bug 1292323 - Update annotationProcessor to reflect WrapForJNI changes; r=snorp
Update the code generator and related classes in annotation processor to
use the new WrapForJNI flags. Also add some more sanity checking to make
sure the flags are used correctly.
2016-08-12 23:15:52 -04:00
Jim Chen
4b8a8da17c Bug 1289208 - Add native methods to AndroidGamepadManager; r=snorp
Add native method calls to AndroidGamepadManager to replace the gamepad
events in GeckoEvent. Implement those calls in AndroidGamepad.cpp. The
jni/Refs.h change is necessary to fix a compile error when using
jni::BooleanArray.
2016-08-04 09:16:05 -04:00
Jim Chen
a7794572ee Bug 1287946 - Improve usage of StringParam in PrefsHelper; r=me
PrefsHelper uses Maybe<> as a replacement for a ternary expression, in
order to work around jni::StringParam's lack of copy constructor.
However, we can add a move constructor to StringParam, which lets us use
it in a ternary expression, and avoid the awkwardness of Maybe<>.
2016-07-21 13:49:05 -04:00
Jim Chen
fe52fe774b Bug 1286663 - Add JNI wrapper class for ByteBuffer; r=snorp
Add a wrapper class for ByteBuffer and its associated calls in JNI.
2016-07-21 13:49:04 -04:00
Carsten "Tomcat" Book
eaf9acf7d5 Backed out changeset f623f6ccca25 (Bug 1286663) for another bustage on android on a CLOSED TREE 2016-07-21 08:14:27 +02:00
Carsten "Tomcat" Book
d8c7234cc9 Backed out changeset e954e5a93482 (bug 1287946) 2016-07-21 08:07:11 +02:00
Jim Chen
d082802e14 Bug 1287946 - Improve usage of StringParam in PrefsHelper; r=me
PrefsHelper uses Maybe<> as a replacement for a ternary expression, in
order to work around jni::StringParam's lack of copy constructor.
However, we can add a move constructor to StringParam, which lets us use
it in a ternary expression, and avoid the awkwardness of Maybe<>.
2016-07-21 00:42:26 -04:00
Jim Chen
bf5b43ab73 Bug 1286663 - Add JNI wrapper class for ByteBuffer; r=snorp
Add a wrapper class for ByteBuffer and its associated calls in JNI.
2016-07-21 00:41:12 -04:00
Jim Chen
9177a4b375 Bug 1277624 - Move JNI class name out of Context; r=snorp
Move the class name strings into ObjectBase, so that the strings can be
overridden by derived classes in other namespaces.
2016-06-27 14:49:55 -04:00
Jim Chen
652036509d Bug 1268125 - Always use GetEnvForThread for GlobalRef ref/unref; r=snorp
Even though a class may not be multi-threaded, its object references can
still be passed to different threads. As long as the references are not
accessed, we should allow it, and therefore GlobalRef should use
GetEnvForThread for ref/unref, instead of using FindEnv, which can
trigger assertions on non-main threads.
2016-05-24 12:18:04 -04:00
Jim Chen
46edf980e0 Bug 1244875 - Refactor JNI templates; r=snorp
Improve the performance of JNI calls by making JNI calls require a
Context object. LocalRef inherits from Context and can make calls
directly. Non-local Ref classes will generate a Context object when
making a call. The patch also makes the template design cleaner in
several cases.
2016-02-09 17:27:28 -05:00
Jim Chen
2b4561b520 Bug 1243049 - Implement new PrefsHelper native methods; r=snorp
Implement the PrefsHelper native methods. The previous browser.js
implementation supported "pseudo-prefs" that did not exist as actual
prefs, but was accessible through PrefsHelper. In order to accommodate
these pseudo-prefs, we send observer notifications in order to
communicate with browser.js about prefs that we don't support.
2016-02-01 17:38:13 -05:00
Jim Chen
bd5c7ad120 Bug 1238761 - Add specializations of jni::Ref for primitive arrays; r=snorp
This patch adds specializations of jni::Ref for primitive arrays like
IntArray and FloatArray, so that the arrays can be accessed through the
GetElement, GetElements, and Length members.
2016-01-15 13:05:44 -05:00
Jim Chen
dd04b2cada Bug 1235475 - Crash at the exception source when an exception is in native code; r=snorp
When we have a Java exception in native code, the Java stack in the
exception will not be very useful because the top frame is the native
entry point. In this case, the native stack is more useful. However,
currently we don't get a good native stack in this situation because we
go through Java when handling the exception, and the native stack we get
will have a lot of unknown frames inside libdvm or libart. This patch
makes us stay in native code when handling an uncaught exception from
native code, so that we get a good native stack.
2015-12-30 18:36:41 -05:00
Jim Chen
325ee148ee Bug 1227706 - Let GeckoView manage GLController instances; r=snorp
GLController instances are associated with a particular nsWindow, rather
than a particular View. Therefore, we need to let GeckoView manage
GLController instances, as part of GeckoView's handling of saving and
restoring states.
2015-12-23 22:03:34 -05:00
Jim Chen
011890c91d Bug 1200343 - Add JNI wrapper for object arrays; r=snorp
This patch adds a specialization for jni::Ref<jni::ObjectArray>, which
includes members for getting the length of the array and accessing
array elements.
2015-09-28 12:07:09 -04:00
Wes Kocher
e143a6410c Backed out 4 changesets (bug 1200343) for android talos failures
Backed out changeset 67dc42cbf02b (bug 1200343)
Backed out changeset b077acafcebb (bug 1200343)
Backed out changeset e115ca114601 (bug 1200343)
Backed out changeset 905e1fb54fd4 (bug 1200343)
2015-09-25 13:21:58 -07:00
Jim Chen
3460f51c9f Bug 1200343 - Add JNI wrapper for object arrays; r=snorp
This patch adds a specialization for jni::Ref<jni::ObjectArray>, which
includes members for getting the length of the array and accessing
array elements.
2015-09-25 15:03:34 -04:00
Jim Chen
4403af4250 Bug 1192043 - Add more JNIEnv support and null-check refs in JNI ref classs; r=snorp
Add more constructors in LocalRef and GlobalRef to accommodate use cases
where a JNIEnv is already available for performance reasons. Also add
more null-checks when creating references for performance reasons.
2015-08-25 14:52:16 -04:00
Nathan Froyd
a64d0e54a5 Bug 1194806 - part 1 - consistently declare mozilla::jni::detail::TypeAdaptor as a struct; r=jchen
clang doesn't like it when we declare things as a struct in one place
and a class in another.  This change makes all the current usages
consistent and clang happy.
2015-08-14 21:59:27 -04:00
Jim Chen
d1f529698f Bug 1192077 - Convert AndroidBridge JNIEnv calls; r=esawin 2015-08-13 00:53:39 -04:00
Jim Chen
d836e4a08d Bug 1186467 - Add some JNI utilities for convenience; r=snorp
This patch adds:
* Conversion operator from String::Param to String::LocalRef.
* More overloads of the jni::ThrowException function.
* name members to built-in types like jni::Object, jni::String, etc.
  This allows using jni::Accessors::EnsureClassRef on built-in types
  to get built-in class refs (e.g. jclass for java/lang/String).
* Ability to implicitly convert LocalRef<Cls> to LocalRef<Object>
* Fixes for bugs in LocalRef/GlobalRef where new refs are not created.
* Fixes for inaccurate uses of mozilla::Forward in favor of mozilla::Move
2015-08-04 17:47:28 -04:00
Jim Chen
2003ec14dd Bug 1186530 - Fix compile error when using native methods with ref parameters; r=snorp
We use Ref::From() inside TypeAdapter<Ref>::ToNative to convert a raw JNI
ref argument to a Ref argument for the C++ function. However, that
generates a compile error, unless we make TypeAdapter<Ref> a friend of
Ref, because we intentionally made Ref's copy constructor private and
returning from TypeAdapter<Ref>::ToNative requires the copy constructor.
2015-07-29 15:11:15 -04:00
Jim Chen
788c0ad4c8 Bug 1178850 - Add supporting classes for native JNI calls; r=snorp 2015-07-10 23:41:36 -04:00
Jim Chen
42c05f4a28 Bug 1178850 - Make mozilla::jni::Param more intuitive to use; r=snorp 2015-07-10 23:41:35 -04:00
Wes Kocher
027fd9354a Backed out 5 changesets (bug 1178850) for android build bustage CLOSED TREE
Backed out changeset 79085d3894e8 (bug 1178850)
Backed out changeset c02b603104ea (bug 1178850)
Backed out changeset d6dab7810669 (bug 1178850)
Backed out changeset 8ee5809f349b (bug 1178850)
Backed out changeset 821b22ce79e1 (bug 1178850)
2015-07-10 14:17:53 -07:00
Jim Chen
096176c3f0 Bug 1178850 - Add supporting classes for native JNI calls; r=snorp 2015-07-10 16:52:52 -04:00
Jim Chen
92f97132f9 Bug 1178850 - Make mozilla::jni::Param more intuitive to use; r=snorp 2015-07-10 16:52:51 -04:00
Jim Chen
52b4f608fa Bug 1116868 - Add templated JNI classes; r=snorp 2015-01-09 19:33:57 -05:00