IndexedDB: Bind browser-side IDB mojo interfaces on IDB task runner

Previously, browser-side IndexedDB mojo interfaces were bound on the IO
thread, while most of the IndexedDB work was performed on the IDB task
runner.  This design required lots of sequence/thread hops to switch
between the mojo invocation, our IDB code, and back to the mojo invocation
for callbacks.

This change binds the browser-side IDB mojo interfaces on the IDB task
runner, instead.  A later change will remove the helper code that
abstracted the task runner switching.

As part of this change, commit 6fd05b6 is reverted.  That commit changed our
ownership from scoped_refptr<ChromeBlobStorageContext> to
WeakPtr<storage::BlobStorageContext>.  This caused issues, however,
since we couldn't guarantee that IndexedDBDispatcherHost would be
initialized properly on the IO thread before the calls in the IDB task
runner would trigger and need access to the weak pointer.

Bug: 717812
Change-Id: Id9eacbaf091c61462c341672f6d3667b35ce1e76
Reviewed-on: https://chromium-review.googlesource.com/c/1405718
Commit-Queue: Chase Phillips <cmp@chromium.org>
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#634018}
21 files changed