This CL may cause a small binary size increase, roughly proportional
to how long it's been since our last AFDO profile roll. For larger
increases (around or exceeding 100KB), please file a bug against
gbiv@chromium.org. Additional context: https://crbug.com/805539

Please note that, despite rolling to chrome/android, this profile is
used for both Linux and Android.

The AutoRoll server is located here: https://autoroll.skia.org/r/afdo-chromium-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

As part of the Onion Soup effort to move the PushMessaging feature
into Blink, we need to get rid of this class now that is no longer
used, since the implementation of mojom::PushMessaging inside of
//content/browser (content::PushMessagingManager) communicates now
directly with Blink's blink::PushProvider.

Reason for revert: It broke some builds with:
The file:
//out/Release_x64/win_clang_x86/browser_switcher_bho.dll.pdb
is listed as an input or source for the target:
//chrome/browser/browser_switcher/bho:copy_browser_switcher_binaries
but no targets in the build generate that file.
See for instance https://ci.chromium.org/p/chromium/builders/ci/Jumbo%20Win%20x64/35757

Note: Given that Polymer 3 usage in WebUI is still at an early
exploration phase, its resources are only included in the build for
optimize_webui=false, to not affect release builds for now, while
allowing making progress on other fronts like
- type checking
- bundling
- HTML-to-JS automation
- testing JS module based code wit js2gtest infra

* Switch to using CHROMEG_CALLBACK in GtkUi.
* Remove code that's conditional on GTK version < 3.10. The earlist supported
version is now 3.10.8.
* Ensure correct ordering of NativeThemeGtk::OnThemeChanged and
GtkUi::OnThemeChanged. The ordering was correct before, but was dependent on
glib dispatching events in the right order. Changed GtkUi::OnThemeChanged()
to call NativeThemeGtk::OnThemeChanged().

Implement PushProvider in Blink and update PushManager and PushSubscription

This CL implements a version of content::PushProvider inside Blink itself
that communicates directly via Mojo-based IPC with the implementation of
blink::mojom::PushMessaging in //content/browser (i.e. PushMessagingManager),
and update callers in Blink's PushManager and PushSubscription to use this
new implementation instead of the old one, to be removed in a follow-up CL.

This is less efficient in some cases, but simpler, and a better API map to the
underlying capabilities of TreeNode. It's possible there's a way to make it no
less efficient (by being able to return TreeNode::children() directly), but I
can't figure it out.

Note to sheriffs: This CL imports external tests and adds
expectations for those tests; if this CL is large and causes
a few new failures, please fix the failures by adding new
lines to TestExpectations rather than reverting. See:
https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md

This CL creates DirectSharedImageVideoProvider, which does a hop to
the gpu main thread for every SharedImageVideo request. This is
almost identical to what was happening before, just refactored.

GpuVideoFrameFactory is now an implementation detail of the provider
rather than VideoFrameFactoryImpl.

A follow-up CL will provide an implementation of
SharedImageVideoProvider that maintains a pool of SharedImageVideo
objects to provide without hopping to the gpu main thread on the
critical path. It will still post a "MaybeRenderEarly" to the main
thread, but that doesn't need to hold up delivery of the VideoFrame
to the renderer.

Added UI test with same logic of user's journey.
- Added test for rendering a new tab after user inspecting a device.
- Added test for displaying the device descriptors correcty with correct
response and short response. Make sure two views and error can
displayed well, and the mapping effect works.
Also added fake UsbDeviceProxy class to implement the functions that
needed for test.