The changes are as follows:

1. InputDeviceManager becomes a thread-local singleton instead of a global
   singleton. UI Service instantiates DeviceDataManager, which is the service-
   side implementation of InputDeviceManager, while the browser uses
   InputDeviceClient, which is the client-side implementation.

2. PlatformEventSource also becomes a thread-local singleton. This is to prevent
   ash and the browser from executing code on the UI Service's thread by
   registering PlatformEventObservers (e.g. via UserActivityDetector). In the
   futurer we may need a client-side implementation of PlatformEventSource.

3. GPU Service checks if a PowerMonitor singleton exists before creating one.
   This is temporary until GPU Service runs in a separate process from the UI
   Service. (crbug.com/609317).

BUG=722527

Review-Url: https://codereview.chromium.org/2978873002
Cr-Commit-Position: refs/heads/master@{#486534}
6 files changed