java.lang.UnsupportedOperationException: at org.mozilla.gecko.GeckoEditable.length(GeckoEditable.java)

RESOLVED FIXED in Firefox 19

Status

()

defect
P1
critical
RESOLVED FIXED
7 years ago
7 years ago

People

(Reporter: scoobidiver, Assigned: jchen)

Tracking

({crash, regression})

19 Branch
Firefox 19
ARM
Android
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox18 unaffected, firefox19 fixed)

Details

(Whiteboard: [native-crash], crash signature)

Attachments

(1 attachment, 1 obsolete attachment)

There are two crashes from 19.0a1/20121104, including bp-b4ebb2eb-dff5-4281-9a45-a71b52121109.

java.lang.UnsupportedOperationException
	at org.mozilla.gecko.GeckoEditable.length(GeckoEditable.java:802)
	at org.mozilla.gecko.GeckoEditable.clear(GeckoEditable.java:734)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:507)
	at org.mozilla.gecko.GeckoEditable.invoke(GeckoEditable.java:606)
	at $Proxy0.clear(Native Method)
	at org.mozilla.gecko.GeckoInputConnection.performContextMenuAction(GeckoInputConnection.java:125)
	at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:310)
	at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:79)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:130)
	at android.app.ActivityThread.main(ActivityThread.java:3687)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:507)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
	at dalvik.system.NativeStart.main(Native Method)

More reports at:
https://crash-stats.mozilla.com/report/list?signature=java.lang.UnsupportedOperationException%3A+at+org.mozilla.gecko.GeckoEditable.length%28GeckoEditable.java%29
Some of the methods in GeckoEditable call length() on GeckoEditable itself instead of through the proxy. This patch changes all these length() calls to go through the proxy.
Attachment #680077 - Flags: review?(cpeterson)
Assignee: nobody → nchen
Status: NEW → ASSIGNED
Priority: -- → P1
Blocks: 805162
Keywords: regression
Version: Trunk → Firefox 19
Component: General → Keyboards and IME
Comment on attachment 680077 [details] [diff] [review]
Fix GeckoEditable call on wrong object (v1)

Review of attachment 680077 [details] [diff] [review]:
-----------------------------------------------------------------

::: mobile/android/base/GeckoEditable.java
@@ +665,5 @@
>      // Appendable interface
>  
>      @Override
>      public Editable append(CharSequence text) {
> +        return replace(mProxy.length(), mProxy.length(), text, 0, text.length());

1. If the problem is that GeckoEditable.length() is throwing an UnsupportedOperationException, why not change GeckoEditable.length() to call mProxy.length() instead of avoid calling GeckoEditable.length()?

2. Why not implement all of GeckoEditable's CharSequence overrides to call mProxy instead of throwing UnsupportedOperationExceptions?
Attachment #680077 - Flags: review?(cpeterson) → review-
Comment on attachment 680077 [details] [diff] [review]
Fix GeckoEditable call on wrong object (v1)

Review of attachment 680077 [details] [diff] [review]:
-----------------------------------------------------------------

r+ after IRC discussion. Please add an error string to the UnsupportedOperationExceptions explaining that we want Android to call Editable via our proxy object, not through GeckoEditable's interface overrides.
Attachment #680077 - Flags: review- → review+
Added error strings. Carried over r+.
Attachment #680077 - Attachment is obsolete: true
Attachment #680374 - Flags: review+
https://hg.mozilla.org/mozilla-central/rev/d2458d28343c
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 19
You need to log in before you can comment on or make changes to this bug.