Commit Graph

264 Commits

Author SHA1 Message Date
Phil Ringnalda
5a7930cce2 Backed out 2 changesets (bug 1343613) for Android crashes in nsWindow::GeckoViewSupport::EnableEventDispatcher]
Backed out changeset f9632a8f4b14 (bug 1343613)
Backed out changeset 4aa287ae1cec (bug 1343613)
2017-03-07 18:56:35 -08:00
Eugen Sawin
44b11888f2 Bug 1343613 - [1.7] Refactor native call queuing out of GeckoThread. r=jchen 2017-03-08 00:19:42 +01:00
Jim Chen
d32d0dc75d Bug 1339685 - Split GeckoEditable into parent and child classes; r=nalexander r=esawin r=snorp
Bug 1339685 - 1. Support compiling GeckoView aidl from multiple packages; r=nalexander

Specify a list of AIDL files for GeckoView so we can include AIDLs from
multiple packages, and not just those from the org.mozilla.gecko.process
package.

Bug 1339685 - 2. Add AIDLs for GeckoEditable; r=esawin

Add IGeckoEditableParent.aidl and IGeckoEditableChild.aidl for two-way
communication between the parent, which lives in the main process, and
the child, which lives in the main process or a child content process.

Bug 1339685 - 3. Refactor some GeckoEditable code; r=esawin

Auto-generate native constants for the constants in GeckoEditableClient,
instead of keeping a separate set of constants in native code.

Bug 1339685 - 4. Add GeckoEditableChild; r=esawin

Add the GeckoEditableChild class, which is currently only used in the
main process as the interface between the native nsWindow and
GeckoEditable. Eventually, it will be expanded to child content
processes as the interface between the native PuppetWidget and
main process GeckoEditable.

Bug 1339685 - 5. Use GeckoEditableChild from GeckoEditable; r=esawin

Make calls to GeckoEditableChild from GeckoEditable, and remove code
that exists in GeckoEditableChild from GeckoEditable.

Bug 1339685 - 6. Add GetNativeObject member to proxied native calls; r=snorp

Add a convenience function for getting the C++ object that is the target
of the native call.

Bug 1339685 - 7. Use GeckoEditableChild from native code; r=esawin

Make nsWindow and GeckoEditableSupport use GeckoEditableChild for
communication. nsWindow still keeps a reference to GeckoEditable for
switching views.

Bug 1339685 - 8. Updated generated bindings; r=me
2017-03-02 13:47:14 -05:00
Jim Chen
a47ea26590 Bug 1333590 - 6. Remove GeckoEventListener and NativeEventListener; r=snorp r=sebastian
Remove GeckoEventListener and NativeEventListener now that we uniformly
use BundleEventListener. Also remove related classes NativeJSContainer,
NativeJSObject, and GeckoRequest, as well as related tests and C++
code.

The "Messaging" object in Messaging.jsm is replaced with a dummy object
that redirect calls to the global and/or window event dispatcher.
2017-02-01 17:35:45 -05:00
Jim Chen
ec34fb0bdd Bug 1333590 - 5. Support other primitive types in event callback; r=snorp
Add support for byte, short, float, long, and char types as the response
object for event callbacks.
2017-02-01 17:35:45 -05:00
Randall Barker
7c292b605c Bug 1331116 - part 1, Remove unused ProgressiveUpdateData.java r=jchen 2017-01-17 18:47:20 -08:00
Jim Chen
4ad7bc071e Bug 1328115 - 2. Update auto-generated bindings; r=me 2017-01-09 14:10:23 -05:00
John Lin
f72514c01c Bug 1075025 - part 1: receive vsync events through Choreographer. r=snorp
MozReview-Commit-ID: 69MefRKMWmh
2016-12-22 12:55:19 +08:00
Dylan Roeh
b17dbbcea3 Bug 1235431 - Implement windowClient.focus() for Fennec. r=catalinb 2016-11-14 17:22:13 -06:00
James Cheng
c8ad9a7d64 Bug 1317239 - Part1 - Add an API to ask if the codec support adaptive playback. r=jolin
MozReview-Commit-ID: 7Pgj9hFE6pu
2016-11-23 14:11:22 +08:00
Randall Barker
353b728fa8 Bug 1314466 - part 7, Update JNI Wrappers r=nchen 2016-11-14 16:45:23 -08:00
James Willcox
38db513bfd Bug 1314974 - Make GeckoView on Android work again r=jchen 2016-11-14 14:55:29 -06:00
Jim Chen
0f80faec13 Bug 1307820 - Implement per-GeckoView messaging; r=snorp r=sebastian
Bug 1307820 - 1a. Move GeckoApp EventDispatcher to GeckoView; r=snorp

Make it a GeckoView-specific EventDispatcher instead of
GeckoApp-specific, so that GeckoView consumers can benefit from a
per-view EventDispatcher. In addition, a few events like Gecko:Ready are
moved back to the global EventDispatcher because that makes more sense.

Bug 1307820 - 1b. Don't use GeckoApp EventDispatcher during inflation; r=snorp

During layout inflation, we don't yet have GeckoView and therefore the
GeckoView EventDispatcher, so we should not register events until later,
typically during onAttachedToWindow.

Bug 1307820 - 2. Introduce GeckoBundle; r=snorp

The Android Bundle class has several disadvantages when used for holding
structured data from JS.

The most obvious one is the differentiation between int and double,
which doesn't exist in JS. So when a JS number is converted to either a
Bundle int or double, we run the risk of making a wrong conversion,
resulting in a type mismatch exception when Java uses the Bundle. This
extends to number arrays from JS.

There is one more gotcha when using arrays. When we receive an empty
array from JS, there is no way for us to determine the type of the
array, because even empty arrays in Java have types. We are forced to
pick an arbitrary type like boolean[], which can easily result in a type
mismatch exception when using the array on the Java side.

In addition, Bundle is fairly cumbersome, and we cannot access the inner
structures of Bundle from Java or JNI, making it harder to use.

With these factors in mind, this patch introduces GeckoBundle as a
better choice for Gecko/Java communication. It is almost fully
API-compatible with the Android Bundle; only the Bundle array methods
are different. It resolves the numbers problem by performing conversions
if necessary, and it is a lot more lightweight than Bundle.

Bug 1307820 - 3. Convert BundleEventListener to use GeckoBundle; r=snorp

Convert BundleEventListener from using Bundle to using GeckoBundle.
Because NativeJSContainer still only supports Bundle, we do an extra
conversion when sending Bundle messages, but eventually, as we eliminate
the use of NativeJSContainer, that will go away as well.

Bug 1307820 - 4. Introduce EventDispatcher interfaces; r=snorp

Introduce several new XPCOM interfaces for the new EventDispatcher API,
these interfaces are mostly mirrored after their Java counterparts.

* nsIAndroidEventDispatcher is the main interface for
  registering/unregistering listeners and for dispatching events from
  JS/C++.

* nsIAndroidEventListener is the interface that JS/C++ clients implement
  to receive events.

* nsIAndroidEventCallback is the interface that JS/C++ clients implement
  to receive responses from dispatched events.

* nsIAndroidView is the new interface that every window receives
  that is specific to the window/GeckoView pair. It is passed to chrome
  scripts through window arguments.

Bug 1307820 - 5. Remove EventDispatcher references from gfx code; r=snorp

EventDispatcher was used for JPZC, but NPZC doesn't use it anymore.

Bug 1307820 - 6. General JNI template improvements; r=snorp

This patch includes several improvements to the JNI templates.

* Context::RawClassRef is removed to avoid misuse, as Context::ClassRef
  should be used instead.

* Fix a compile error, in certain usages, in the DisposeNative overload
  in NativeStub.

* Add Ref::IsInstanceOf and Context::IsInstanceOf to mirror the
  JNIEnv::IsInstanceOf call.

* Add Ref::operator* and Context::operator* to provide an easy way to
  get a Context object.

* Add built-in declarations for boxed Java objects (e.g. Boolean,
  Integer, etc).

* Add ObjectArray::New for creating new object arrays of specific types.

* Add lvalue qualifiers to LocalRef::operator= and GlobalRef::operator=,
  to prevent accidentally assigning to rvalues. (e.g.
  `objectArray->GetElement(0) = newObject;`, which won't work as intended.)

Bug 1307820 - 7. Support ownership through RefPtr for native JNI objects; r=snorp

In addition to direct ownership and weak pointer ownership, add a third
ownership model where a native JNI object owns a RefPtr that holds a
strong reference to the actual C++ object. This ownership model works
well with ref-counted objects such as XPCOM objects, and is activated
through the presence of public members AddRef() and Release() in the C++
object.

Bug 1307820 - 8. Implement Gecko-side EventDispatcher; r=snorp

Add a skeletal implementation of EventDispatcher on the Gecko side.
Each widget::EventDispatcher will be associated with a Java
EventDispatcher, so events can be dispatched from Gecko to Java and vice
versa. AndroidBridge and nsWindow will implement
nsIAndroidEventDispatcher through widget::EventDispatcher.

Other patches will add more complete functionality such as
GeckoBundle/JSObject translation and support for callbacks.

Bug 1307820 - 9. Implement dispatching between Gecko/Java; r=snorp

Implement translation between JSObject and GeckoBundle, and use that for
dispatching events from Gecko to Java and vice versa.

Bug 1307820 - 10. Implement callback support; r=snorp

Implement callback support for both Gecko-to-Java events and
Java-to-Gecko events.

For Gecko-to-Java, we translate nsIAndroidEventCallback to a Java
EventCallback through NativeCallbackDelegate and pass it to the Java
listener.

For Java-to-Gecko, we translate EventCallback to a
nsIAndroidEventCallback through JavaCallbackDelegate and pass it to the
Gecko listener.  There is another JavaCallbackDelegate on the Java side
that redirects the callback to a particular thread. For example, if the
event was dispatched from the UI thread, we make sure the callback
happens on the UI thread as well.

Bug 1307820 - 11. Add BundleEventListener support for Gecko thread; r=snorp

Add support for BundleEventListener on the Gecko thread, so that we can
use it to replace any existing GeckoEventListener or NativeEventListener
implementations that require the listener be run synchronously on the
Gecko thread.

Bug 1307820 - 12. Add global EventDispatcher in AndroidBridge; r=snorp

Add an instance of EventDispatcher to AndroidBridge to act as a global
event dispatcher.

Bug 1307820 - 13. Add per-nsWindow EventDispatcher; r=snorp

Add an instance of EventDispatcher to each nsWindow through an
AndroidView object, which implements nsIAndroidView. The nsIAndroidView
is passed to the chrome script through the window argument when opening
the window.

Bug 1307820 - 14. Update auto-generated bindings; r=me

Bug 1307820 - 15. Update testEventDispatcher; r=snorp

Update testEventDispatcher to include new functionalities in
EventDisptcher.

* Add tests for dispatching events to UI/background thread through
  nsIAndroidEventDispatcher::dispatch.

* Add tests for dispatching events to UI/background thread through
  EventDispatcher.dispatch.

* Add tests for dispatching events to Gecko thread through
  EventDispatcher.dispatch.

Each kind of test exercises both the global EventDispatcher through
EventDispatcher.getInstance() and the per-GeckoView EventDispatcher
through GeckoApp.getEventDispatcher().
2016-11-14 21:29:50 +08:00
bechen
57f16e95d3 Bug 1286738 - part2-HardwareCodecCapabilityUtils: Add HasHWVP9() function to check the vp9 hw decoder. r=jya
MozReview-Commit-ID: 1a89GQixKrO
2016-10-26 16:57:55 +08:00
Dylan Roeh
35a3c1acef Bug 1262251 - Make openWindow() launch Fennec if it isn't already running. r=catalinb 2016-10-31 14:10:25 -05:00
Jim Chen
15a14b87ff Bug 1307816 - 7. Flush text before sending focus event; r=esawin
We used to flush the Java side text upon receiving the acknowledge-focus
event, at which point the Java side is waiting on the Gecko side.
Because of the async IME refactoring, we can no longer wait on the Java
side, so we have to flush the text early, before sending the first focus
notification. Also, the acknowledge-focus event is no longer needed as a
result.

Our call to InputMethodManager to restart input also has to changed due
to the change in calling sequence between notifyIME and
notifyIMEContext.
2016-10-25 12:28:53 -04:00
Michelangelo De Simone
74c25bed4b Bug 1310027 - Remove DOM/mobilemessage and related code. r=Ehsan
MozReview-Commit-ID: ENmSuOCdTnA
2016-10-17 17:26:51 -07:00
Kartikaya Gupta
88d479e33e Bug 1311030 - Remove more code unused since the deletion of JPZ. r=snorp
MozReview-Commit-ID: 1p8aWShTrQf
2016-10-18 12:34:25 -04:00
Kartikaya Gupta
ebfb9b7bb6 Bug 1307522 - Delete a bunch of classes and related goop no longer used now that JPZ is gone. r=snorp
MozReview-Commit-ID: Jq6xJEO0u9x
2016-10-04 14:41:13 -04:00
Jim Chen
49256393c2 Bug 1304145 - 6. Update auto-generated bindings; r=me 2016-09-22 16:38:20 -04:00
Jim Chen
d23094f13e Bug 1303806 - 2. Update auto-generated bindings; r=me 2016-09-20 17:42:08 -04:00
Jim Chen
861197d649 Bug 1291375 - 4. Update auto-generated bindings; r=me 2016-09-16 15:13:48 -04:00
Jim Chen
5f31753209 Bug 1258470 - 3. Small optimizations in ThumbnailHelper; r=nalexander
This patch includes a small memory optimization of using ArrayList and
`volatile int` for storing the pending thumbnails list and pending
width, instead of using LinkedList and AtomicInteger, respectively.

The patch also fixes a possible race condition due to calling
processNextThumbnail outside of a lock. Now it must be called inside a
lock and its name is changed to reflect that.
2016-09-14 12:43:36 -04:00
Randall Barker
073f710cca Bug 1297853 - White flash when creating a private browsing tab r=jchen,kats 2016-09-06 18:01:36 -07:00
Jim Chen
b525dfa4c0 Bug 1296744 - Update auto-generated bindings; r=me 2016-08-26 12:26:46 -04:00
Jim Chen
2256784f55 Bug 1297836 - Get surface when creating or resuming compositor; r=snorp
Get rid of LayerView.Compositor.getSurface and just pass in the surface
when creating or resuming the compositor. That also lets us get rid of
some synchronization required for getSurface.
2016-08-26 12:25:57 -04:00
Jim Chen
498e722e44 Bug 1297462 - Always handle uncaught Java exception in native code if possible; r=snorp
We used to only handle certain exceptions in native code, and otherwise
forward the exception to Java handling code. Handling exceptions in
native code gives us better native stack traces in crash reports, so
this patch makes us always handle uncaught Java exceptions in native
code if possible, and only forward to Java as a fallback.
2016-08-26 12:25:57 -04:00
Randall Barker
db31614cf1 Bug 1297850 - part 1, Remove dead code left behind after JPZ removal. r=jchen 2016-08-25 17:26:42 -07:00
Wes Kocher
0003442039 Backed out 2 changesets (bug 1297850) for robocop bustage a=backout CLOSED TREE
Backed out changeset e83c9eb279a9 (bug 1297850)
Backed out changeset 979694026137 (bug 1297850)
2016-08-25 11:29:35 -07:00
Randall Barker
8ff0253575 Bug 1297850 - part 1, Remove dead code left behind after JPZ removal. r=jchen 2016-08-25 08:14:52 -07:00
Jim Chen
bc288d3a58 Bug 1296757 - Correctly resume compositor when reattaching; r=snorp
We need to set the compositor-created flag in LayerView correctly when
reattaching to a new LayerView, so that we resume the compositor instead
of trying to create the compositor again, which we already did
previously.

This patch consists of general code cleanup and a new reattach method in
LayerView.Compositor that we call in order to set the compositor-created
flag correctly.
2016-08-23 18:55:12 -04:00
Jim Chen
5fe4f13c68 Bug 1294481 - Update auto-generated bindings; r=me 2016-08-23 18:52:30 -04:00
Jim Chen
e38ae29d8c Bug 1294479 - Update auto-generated bindings; r=me 2016-08-19 17:17:25 -04:00
Jim Chen
596e7c053f Bug 1294077 - Move reportJavaCrash out of AndroidJNI.cpp; r=snorp
Move reportJavaCrash out of AndroidJNI.cpp and re-implement it as a
native method in GeckoAppShellSupport.
2016-08-18 18:04:11 -04:00
Jim Chen
d4e1b42fc2 Bug 1294482 - Move onFullScreenPluginHidden out of AndroidJNI.cpp; r=snorp
Move onFullScreenPluginHidden out of AndroidJNI.cpp and into a new-style
native method in nsAppShell.cpp.
2016-08-18 18:04:11 -04:00
Jim Chen
73e0f51a47 Bug 1294071 - Move dispatchMemoryPressure out of GeckoAppShell; r=snorp
Move dispatchMemoryPressure out of GeckoAppShell and AndroidJNI.cpp
2016-08-18 18:04:11 -04:00
Jim Chen
1671e63e09 Bug 1294069 - Move notifyBatteryChange out of GeckoAppShell; r=snorp
Move notifyBatteryChange out of GeckoAppShell and AndroidJNI.cpp.
2016-08-18 18:04:11 -04:00
Jim Chen
0f6e2b3262 Bug 1294710 - Move UI thread methods out of GeckoAppShell; r=snorp
Move methods to run callbacks on UI thread out of GeckoAppShell and into
GeckoThread.
2016-08-18 18:04:11 -04:00
Wes Kocher
bad19898b2 Merge inbound to central, a=merge 2016-08-17 16:38:41 -07:00
John Lin
bdec8a186d Bug 1257777 - Part 4: Implement remote codec proxy. r=snorp
MozReview-Commit-ID: 3YEfXXkg2Xi
2016-08-05 15:23:47 +08:00
Randall Barker
e10d02e6a1 Bug 1291373 - [geckoview] part 5, Remove Layer and all derived classes r=snorp 2016-08-16 14:33:43 -07:00
Randall Barker
7045fbd83c Bug 1291373 - [geckoview] part 4, Remove GeckoEvent and AndroidGeckoEvent r=jchen 2016-08-16 14:33:43 -07:00
Randall Barker
91a74382de Bug 1291373 - [geckoview] part 1, Remove JavaPanZoomController (JPZ) from mobile/android r=snorp 2016-08-16 14:33:43 -07:00
Jim Chen
c405849f27 Bug 1292323 - Update auto-generated bindings; r=me 2016-08-12 23:15:52 -04:00
James Cheng
81fd6a9506 Bug 1291229 - Fix typo for moving Java bindings to mozilla::java namespace. r=jchen
MozReview-Commit-ID: KGAS6EhnwAI
2016-08-05 13:23:44 -04:00
Jim Chen
fd39f9eecd Bug 1288821 - Update auto-generated bindings; r=me 2016-08-04 09:17:54 -04:00
Jim Chen
d58d9926fa Bug 1289208 - Updated auto-generated bindings; r=me 2016-08-04 09:16:05 -04:00
Jim Chen
6c5de75ffe Bug 1288838 - Update auto-generated bindings; r=me 2016-08-04 09:16:05 -04:00
Jim Chen
e321599de7 Bug 1288834 - Update auto-generated bindings; r=me 2016-08-04 09:15:17 -04:00
Dylan Roeh
9e9bc6c4fc Bug 1288467 - This patch removes GLController.java entirely, moving necessary functionality into LayerView and a new Compositor class. r=jchen 2016-08-01 13:21:31 -05:00