]> git.eshelyaron.com Git - emacs.git/commitdiff
Include more information in Android bug reports
authorPo Lu <luangruo@yahoo.com>
Fri, 17 Mar 2023 13:39:15 +0000 (21:39 +0800)
committerPo Lu <luangruo@yahoo.com>
Fri, 17 Mar 2023 13:39:15 +0000 (21:39 +0800)
* src/androidfns.c (Fx_server_vendor, Fx_server_version): New
functions.
(syms_of_androidfns): Define new functions.
* src/androidterm.c (android_set_build_fingerprint)
(syms_of_androidterm): Set new variable
Vandroid_build_manufacturer.
* src/xfns.c (Fx_server_vendor, Fx_server_version): Update doc
strings.

src/androidfns.c
src/androidterm.c
src/xfns.c

index e1d423ab3ebcf7ec0229e71eb78a5862ab110889..3367ebdf75584a34088969c8b62d9fb3cf652739 100644 (file)
@@ -1234,6 +1234,32 @@ DEFUN ("x-display-color-cells", Fx_display_color_cells, Sx_display_color_cells,
   return make_fixnum (1 << nr_planes);
 }
 
+DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
+       doc: /* SKIP: real doc in xfns.c.  */)
+  (Lisp_Object terminal)
+{
+#ifdef ANDROID_STUBIFY
+  error ("Android cross-compilation stub called!");
+  return Qnil;
+#else
+  check_android_display_info (terminal);
+  return Vandroid_build_manufacturer;
+#endif
+}
+
+DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0,
+       doc: /* SKIP: real doc in xfns.c.  */)
+  (Lisp_Object terminal)
+{
+#ifdef ANDROID_STUBIFY
+  error ("Android cross-compilation stub called!");
+  return Qnil;
+#else
+  check_android_display_info (terminal);
+  return list3i (android_get_current_api_level (), 0, 0);
+#endif
+}
+
 DEFUN ("x-display-screens", Fx_display_screens, Sx_display_screens,
        0, 1, 0, doc: /* SKIP: real doc in xfns.c.  */)
   (Lisp_Object terminal)
@@ -3114,6 +3140,8 @@ using the volume down button.  */);
   defsubr (&Sx_hide_tip);
   defsubr (&Sandroid_detect_mouse);
   defsubr (&Sandroid_toggle_on_screen_keyboard);
+  defsubr (&Sx_server_vendor);
+  defsubr (&Sx_server_version);
 #ifndef ANDROID_STUBIFY
   defsubr (&Sandroid_query_battery);
 
index 0110c4b6dd84d1dbf4355a350f9f9a48542e0e87..1cf9bc4afded9097e033d28cc68dea5bc4cea7a5 100644 (file)
@@ -5786,7 +5786,8 @@ android_term_init (void)
 
 \f
 
-/* Set Vandroid_build_fingerprint to a reasonable value.  */
+/* Set Vandroid_build_fingerprint to a reasonable value, and also
+   Vandroid_build_manufacturer.  */
 
 static void
 android_set_build_fingerprint (void)
@@ -5847,6 +5848,39 @@ android_set_build_fingerprint (void)
       Vandroid_build_fingerprint = build_string_from_utf8 (data);
       (*android_java_env)->ReleaseStringUTFChars (android_java_env,
                                                  string, data);
+
+      /* Now obtain Build.MANUFACTURER.  */
+
+      ANDROID_DELETE_LOCAL_REF (string);
+      string = NULL;
+
+      field = (*android_java_env)->GetStaticFieldID (android_java_env,
+                                                    class,
+                                                    "MANUFACTURER",
+                                                    "Ljava/lang/String;");
+      (*android_java_env)->ExceptionClear (android_java_env);
+
+      if (!field)
+       goto fail;
+
+      string
+       = (*android_java_env)->GetStaticObjectField (android_java_env,
+                                                    class, field);
+      (*android_java_env)->ExceptionClear (android_java_env);
+
+      if (!string)
+       goto fail;
+
+      data = (*android_java_env)->GetStringUTFChars (android_java_env,
+                                                    string, NULL);
+      (*android_java_env)->ExceptionClear (android_java_env);
+
+      if (!data)
+       goto fail;
+
+      Vandroid_build_manufacturer = build_string_from_utf8 (data);
+      (*android_java_env)->ReleaseStringUTFChars (android_java_env,
+                                                 string, data);
     }
 
   if (string)
@@ -5861,6 +5895,7 @@ android_set_build_fingerprint (void)
     ANDROID_DELETE_LOCAL_REF (class);
 
   Vandroid_build_fingerprint = Qnil;
+  Vandroid_build_manufacturer = Qnil;
 #endif
 }
 
@@ -5899,6 +5934,10 @@ This is a string that uniquely identifies the version of Android
 Emacs is running on.  */);
   Vandroid_build_fingerprint = Qnil;
 
+  DEFVAR_LISP ("android-build-manufacturer", Vandroid_build_manufacturer,
+    doc: /* Name of the developer of the running version of Android.  */);
+  Vandroid_build_manufacturer = Qnil;
+
   /* Only defined so loadup.el loads scroll-bar.el.  */
   DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars,
     doc: /* SKIP: real doc in xterm.c.  */);
index 0e4a25de04a78a4777f6fd9c1d5be807501233ff..b7000462e84f5c7b1882ac91daab264678de0a6d 100644 (file)
@@ -5673,6 +5673,8 @@ that operating systems cannot be developed and distributed noncommercially.)
 The optional argument TERMINAL specifies which display to ask about.
 
 For GNU and Unix systems, this queries the X server software.
+For Android systems, value is the manufacturer who developed the Android
+system that is being used.
 For MS Windows and Nextstep the result is hard-coded.
 
 TERMINAL should be a terminal object, a frame or a display name (a string).
@@ -5696,7 +5698,8 @@ Protocol used on TERMINAL and the 3rd number is the distributor-specific
 release number.  For MS Windows, the 3 numbers report the OS major and
 minor version and build number.  For Nextstep, the first 2 numbers are
 hard-coded and the 3rd represents the OS version.  For Haiku, all 3
-numbers are hard-coded.
+numbers are hard-coded.  For Android, the first number represents the
+Android API level, and the next two numbers are all zero.
 
 See also the function `x-server-vendor'.