Andrew Grieve created CB-2665:
---------------------------------

             Summary: Android bridge chokes on UTF characters only on Galaxy S2 
JellyBean
                 Key: CB-2665
                 URL: https://issues.apache.org/jira/browse/CB-2665
             Project: Apache Cordova
          Issue Type: Bug
          Components: Android
            Reporter: Andrew Grieve
            Assignee: Andrew Grieve
            Priority: Minor


Reported via email from Lindsey Simon.

Test project attached.

This bug appears to be in a call to the logger plugin. We overload the plugin 
to point at our own Java Class in config.xml, but call it like 
cordova.require('cordova/plugin/logger').log('foo).

Anyhow, this bug is really hard to reproduce - and I'm only getting on a Galaxy 
S2 with Jelly Bean.

Maybe this Eclipse dump is useful? I'm having trouble figure I might do to fix 
it.


// Compiled from ExposedJsApi.java (version 1.5 : 49.0, super bit)

class org.apache.cordova.ExposedJsApi {

  

  // Field descriptor #12 Lorg/apache/cordova/api/PluginManager;

  private org.apache.cordova.api.PluginManager pluginManager;

  

  // Field descriptor #14 Lorg/apache/cordova/NativeToJsMessageQueue;

  private org.apache.cordova.NativeToJsMessageQueue jsMessageQueue;

  

  // Method descriptor #16 
(Lorg/apache/cordova/api/PluginManager;Lorg/apache/cordova/NativeToJsMessageQueue;)V

  // Stack: 2, Locals: 3

  public ExposedJsApi(org.apache.cordova.api.PluginManager pluginManager, 
org.apache.cordova.NativeToJsMessageQueue jsMessageQueue);

     0  aload_0 [this]

     1  invokespecial java.lang.Object() [1]

     4  aload_0 [this]

     5  aload_1 [pluginManager]

     6  putfield org.apache.cordova.ExposedJsApi.pluginManager : 
org.apache.cordova.api.PluginManager [2]

     9  aload_0 [this]

    10  aload_2 [jsMessageQueue]

    11  putfield org.apache.cordova.ExposedJsApi.jsMessageQueue : 
org.apache.cordova.NativeToJsMessageQueue [3]

    14  return

      Line numbers:

        [pc: 0, line: 36]

        [pc: 4, line: 37]

        [pc: 9, line: 38]

        [pc: 14, line: 39]

      Local variable table:

        [pc: 0, pc: 15] local: this index: 0 type: 
org.apache.cordova.ExposedJsApi

        [pc: 0, pc: 15] local: pluginManager index: 1 type: 
org.apache.cordova.api.PluginManager

        [pc: 0, pc: 15] local: jsMessageQueue index: 2 type: 
org.apache.cordova.NativeToJsMessageQueue

  

  // Method descriptor #23 
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

  // Stack: 5, Locals: 9

  @android.webkit.JavascriptInterface

  public java.lang.String exec(java.lang.String service, java.lang.String 
action, java.lang.String callbackId, java.lang.String arguments) throws 
org.json.JSONException;

     0  aload_0 [this]

     1  getfield org.apache.cordova.ExposedJsApi.jsMessageQueue : 
org.apache.cordova.NativeToJsMessageQueue [3]

     4  iconst_1

     5  invokevirtual 
org.apache.cordova.NativeToJsMessageQueue.setPaused(boolean) : void [4]

     8  aload_0 [this]

     9  getfield org.apache.cordova.ExposedJsApi.pluginManager : 
org.apache.cordova.api.PluginManager [2]

    12  aload_1 [service]

    13  aload_2 [action]

    14  aload_3 [callbackId]

    15  aload 4 [arguments]

    17  invokevirtual 
org.apache.cordova.api.PluginManager.exec(java.lang.String, java.lang.String, 
java.lang.String, java.lang.String) : boolean [5]

    20  istore 5 [wasSync]

    22  ldc <String ""> [6]

    24  astore 6 [ret]

    26  aload_0 [this]

    27  getfield org.apache.cordova.ExposedJsApi.jsMessageQueue : 
org.apache.cordova.NativeToJsMessageQueue [3]

    30  invokevirtual org.apache.cordova.NativeToJsMessageQueue.popAndEncode() 
: java.lang.String [7]

    33  astore 6 [ret]

    35  aload 6 [ret]

    37  astore 7

    39  aload_0 [this]

    40  getfield org.apache.cordova.ExposedJsApi.jsMessageQueue : 
org.apache.cordova.NativeToJsMessageQueue [3]

    43  iconst_0

    44  invokevirtual 
org.apache.cordova.NativeToJsMessageQueue.setPaused(boolean) : void [4]

    47  aload 7

    49  areturn

    50  astore 8

    52  aload_0 [this]

    53  getfield org.apache.cordova.ExposedJsApi.jsMessageQueue : 
org.apache.cordova.NativeToJsMessageQueue [3]

    56  iconst_0

    57  invokevirtual 
org.apache.cordova.NativeToJsMessageQueue.setPaused(boolean) : void [4]

    60  aload 8

    62  athrow

      Exception Table:

        [pc: 8, pc: 39] -> 50 when : any

        [pc: 50, pc: 52] -> 50 when : any

      Line numbers:

        [pc: 0, line: 43]

        [pc: 8, line: 45]

        [pc: 22, line: 46]

        [pc: 26, line: 48]

        [pc: 35, line: 50]

        [pc: 39, line: 52]

      Local variable table:

        [pc: 22, pc: 50] local: wasSync index: 5 type: boolean

        [pc: 26, pc: 50] local: ret index: 6 type: java.lang.String

        [pc: 0, pc: 63] local: this index: 0 type: 
org.apache.cordova.ExposedJsApi

        [pc: 0, pc: 63] local: service index: 1 type: java.lang.String

        [pc: 0, pc: 63] local: action index: 2 type: java.lang.String

        [pc: 0, pc: 63] local: callbackId index: 3 type: java.lang.String

        [pc: 0, pc: 63] local: arguments index: 4 type: java.lang.String

  

  // Method descriptor #37 (I)V

  // Stack: 2, Locals: 2

  @android.webkit.JavascriptInterface

  public void setNativeToJsBridgeMode(int value);

    0  aload_0 [this]

    1  getfield org.apache.cordova.ExposedJsApi.jsMessageQueue : 
org.apache.cordova.NativeToJsMessageQueue [3]

    4  iload_1 [value]

    5  invokevirtual 
org.apache.cordova.NativeToJsMessageQueue.setBridgeMode(int) : void [8]

    8  return

      Line numbers:

        [pc: 0, line: 58]

        [pc: 8, line: 59]

      Local variable table:

        [pc: 0, pc: 9] local: this index: 0 type: 
org.apache.cordova.ExposedJsApi

        [pc: 0, pc: 9] local: value index: 1 type: int

  

  // Method descriptor #41 ()Ljava/lang/String;

  // Stack: 1, Locals: 1

  @android.webkit.JavascriptInterface

  public java.lang.String retrieveJsMessages();

    0  aload_0 [this]

    1  getfield org.apache.cordova.ExposedJsApi.jsMessageQueue : 
org.apache.cordova.NativeToJsMessageQueue [3]

    4  invokevirtual org.apache.cordova.NativeToJsMessageQueue.popAndEncode() : 
java.lang.String [7]

    7  areturn

      Line numbers:

        [pc: 0, line: 63]

      Local variable table:

        [pc: 0, pc: 8] local: this index: 0 type: 
org.apache.cordova.ExposedJsApi

}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to