Although typically the case, the main thread of an android app is not
necessarily the thread in which the View is hosted (the Android "UI"
thread). Update base.ThreadUtils to be able to specify a non-main thread
UI thread, and update places in the code that make this assumption to
use the refactored ThreadUtils class.

It is a bug to use Looper.getMainLooper(),  need to change to ThreadUtils.getUiThreadLooper.
Previously there was a bug reported to upstream

https://codereview.chromium.org/26424003.