New issue
Advanced search Search tips

Issue 591735 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Feature

Blocked on:
issue 605716

Blocking:
issue 601627



Sign in to add a comment

WebUSB Android choosr UI

Project Member Reported by juncai@chromium.org, Mar 3 2016

Issue description

Implement a chooser UI on Android for WebUSB.



 
WebUSB_Android_chooser_UI_no_device.png
61.7 KB View Download
WebUSB_Android_chooser_UI_device_found.png
63.4 KB View Download
WebUSB_Android_chooser_UI_device_selected.png
63.9 KB View Download
Labels: -Type-Launch-OWP Type-Feature
Project Member

Comment 3 by bugdroid1@chromium.org, Mar 25 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4cbad6ed5522e60cda2aa728c08e3aa80545e360

commit 4cbad6ed5522e60cda2aa728c08e3aa80545e360
Author: juncai <juncai@chromium.org>
Date: Fri Mar 25 20:40:35 2016

WebUsb Android chooser UI

This patch added code to display a chooser UI on Android for WebUsb.

BUG= 591735 

Review URL: https://codereview.chromium.org/1739523002

Cr-Commit-Position: refs/heads/master@{#383351}

[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/android/java/src/org/chromium/chrome/browser/ItemChooserDialog.java
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/android/java/src/org/chromium/chrome/browser/UsbChooserDialog.java
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/android/java/strings/android_chrome_strings.grd
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/android/javatests/src/org/chromium/chrome/browser/BluetoothChooserDialogTest.java
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/android/chrome_jni_registrar.cc
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/android/usb/web_usb_chooser_service_android.cc
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/android/usb/web_usb_chooser_service_android.h
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/ui/android/bluetooth_chooser_android.cc
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/ui/android/usb_chooser_dialog_android.cc
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/ui/android/usb_chooser_dialog_android.h
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/usb/usb_chooser_bubble_controller.cc
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/usb/usb_tab_helper.cc
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/usb/usb_tab_helper.h
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/usb/web_usb_histograms.cc
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/browser/usb/web_usb_histograms.h
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/chrome_browser.gypi
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/chrome/chrome_browser_ui.gypi
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/device/usb/webusb_descriptors.cc
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/device/usb/webusb_descriptors.h
[modify] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/ui/android/BUILD.gn
[add] https://crrev.com/4cbad6ed5522e60cda2aa728c08e3aa80545e360/ui/android/java/src/org/chromium/ui/text/NoUnderlineClickableSpan.java

Cc: agrieve@chromium.org
Hmm, I think this broke ToT incremental builds:


03-25 15:36:15.718  8132  8173 W System.err: java.lang.ClassNotFoundException: Didn't find class "org.chromium.chrome.browser.UsbChooserDialog" on path: DexPathList[[zip file "/data/app/org.chromium.chrome-2/base.apk", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/components.dom_distiller.android.dom_distiller_core_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_tools.android_support_v7_recyclerview_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/content.public.android.content_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/device.vibration.android.vibration_manager_android.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/components.bookmarks.common.android.bookmarks_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/components.service_tab_launcher.service_tab_launcher_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/components.gcm_driver.android.gcm_driver_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/media.base.android.media_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_protobuf.protobuf_nano_javalib.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.jsr-305.jsr_305_javalib.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_tools.android_support_v13_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_tools.android_gcm_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_tools.android_support_v7_appcompat_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/device.battery.android.battery_monitor_android.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.WebKit.public.blink_headers_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/device.bluetooth.java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/device.vibration.mojo_bindings_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/ui.android.ui_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_media.android_media_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/ui.accessibility.ui_accessibility_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_tools.android_support_multidex_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_tools.android_support_v7_mediarouter_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.gif_player.gif_player_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/mojo.public.java.bindings.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/components.invalidation.impl.java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/device.usb.java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/net.android.net_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/components.web_contents_delegate_android.web_contents_delegate_android_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/chrome.android.document_tab_model_info_proto_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/device.battery.mojo_bindings_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/base.base_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/third_party.android_tools.google_play_services_default_java.dex.jar", zip file "/data/local/tmp/incremental-app-org.chromium.chrome/dex/media.midi.midi_
03-25 15:36:15.723  8132  8173 W System.err: 	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
03-25 15:36:15.723  8132  8173 W System.err: 	at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
03-25 15:36:15.723  8132  8173 W System.err: 	at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
03-25 15:36:15.723  8132  8173 W System.err: 	at java.lang.Runtime.nativeLoad(Native Method)
03-25 15:36:15.723  8132  8173 W System.err: 	at java.lang.Runtime.doLoad(Runtime.java:435)
03-25 15:36:15.723  8132  8173 W System.err: 	at java.lang.Runtime.loadLibrary(Runtime.java:370)
03-25 15:36:15.723  8132  8173 W System.err: 	at java.lang.System.loadLibrary(System.java:1076)
03-25 15:36:15.723  8132  8173 W System.err: 	at org.chromium.base.library_loader.LibraryLoader.loadAlreadyLocked(LibraryLoader.java:271)
03-25 15:36:15.723  8132  8173 W System.err: 	at org.chromium.base.library_loader.LibraryLoader.ensureInitialized(LibraryLoader.java:123)
03-25 15:36:15.723  8132  8173 W System.err: 	at org.chromium.chrome.browser.init.NativeInitializationController$1.run(NativeInitializationController.java:85)
03-25 15:36:15.723  8132  8173 W System.err: 	Suppressed: java.lang.ClassNotFoundException: org.chromium.chrome.browser.UsbChooserDialog
03-25 15:36:15.725  8132  8173 W System.err: 		at java.lang.Class.classForName(Native Method)
03-25 15:36:15.725  8132  8173 W System.err: 		at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
03-25 15:36:15.725  8132  8173 W System.err: 		at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
03-25 15:36:15.725  8132  8173 W System.err: 		at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
03-25 15:36:15.725  8132  8173 W System.err: 		... 8 more
03-25 15:36:15.725  8132  8173 W System.err: 	Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
03-25 15:36:15.753  8132  8173 F chromium: [0325/153615:FATAL:jni_android.cc(122)] Check failed: !ClearException(env) && clazz. Failed to find class org/

Comment 5 by juncai@chromium.org, Mar 25 2016

I think I need to add the UsbChooserDialog.java to the java_sources.gni
similar to BluetoothChooserDialog.java:

https://code.google.com/p/chromium/codesearch#chromium/src/chrome/android/java_sources.gni&q=BluetoothChooserDialog.java&sq=package:chromium&type=cs&l=15

It seems that java_sources.gni was added this Wednesday.

Comment 6 by juncai@chromium.org, Mar 25 2016

I created a patch for it:
https://codereview.chromium.org/1827243005/
Project Member

Comment 7 by bugdroid1@chromium.org, Mar 25 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/97b28b83bbc4069e994d778fe22809baa53fb736

commit 97b28b83bbc4069e994d778fe22809baa53fb736
Author: juncai <juncai@chromium.org>
Date: Fri Mar 25 23:54:34 2016

Add UsbChooserDialog.java to //chrome/android/java_sources.gni

This patch added UsbChooserDialog.java to //chrome/android/java_sources.gni

BUG= 591735 

Review URL: https://codereview.chromium.org/1827243005

Cr-Commit-Position: refs/heads/master@{#383412}

[modify] https://crrev.com/97b28b83bbc4069e994d778fe22809baa53fb736/chrome/android/java_sources.gni

Project Member

Comment 8 by bugdroid1@chromium.org, Mar 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1004ae2da751e390402d4a7228bb8132121de167

commit 1004ae2da751e390402d4a7228bb8132121de167
Author: juncai <juncai@chromium.org>
Date: Tue Mar 29 17:50:59 2016

UsbChooserDialogAndroid::Select should return when guid is found

At UsbChooserDialogAndroid::Select, when guid is found in the for loop,
the function should return, no need to continue the for loop.

BUG= 591735 

Review URL: https://codereview.chromium.org/1838233002

Cr-Commit-Position: refs/heads/master@{#383762}

[modify] https://crrev.com/1004ae2da751e390402d4a7228bb8132121de167/chrome/browser/ui/android/usb_chooser_dialog_android.cc

Blocking: -492204 601627
Status: Fixed (was: Started)
Blockedon: 605716
Project Member

Comment 13 by bugdroid1@chromium.org, Apr 21 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/17e34ed9008b1b1bedebbbbac4db62e8b983d690

commit 17e34ed9008b1b1bedebbbbac4db62e8b983d690
Author: juncai <juncai@chromium.org>
Date: Thu Apr 21 23:04:00 2016

WebUSB Android chooser should be closed when "Get help" button is pressed

When "Get help" button is pressed and a new tab is opened, the WebUSB
Android chooser dialog box is not closed and it overlaps the top part of
the new tab. This patch added code to close the dialog box.

BUG= 605716 ,  591735 

Review URL: https://codereview.chromium.org/1906183002

Cr-Commit-Position: refs/heads/master@{#388939}

[modify] https://crrev.com/17e34ed9008b1b1bedebbbbac4db62e8b983d690/chrome/browser/ui/android/usb_chooser_dialog_android.cc

Sign in to add a comment