Implement IndexedDatabase::open up until re-entrance into WebKit.  That (and the
rest of IndexedDB) will be done in subsequent patches.  Included in this patch
is a lot of other infrastructure for making IndexedDB work.  Included is a
conversion from the DOMStorageDispatcherHost into a dispatcher host for all APIs
that have a backend in WebKit.

I named it WebKitAPIDispatcherHost.  Since it's in browser/in_process_webkit and
it is for APIs that connect up to the WebKit API and it's used for APIs whose
backend is implemented in WebKit I thought the name was decent and not _too_
confusing, but if you have better ideas, please let me know.

This includes some code that you've already reviewed (darin), but a lot has
changed so please take a look at all of it.

TEST=Not much to test yet + behind a flag.
BUG=none

Review URL: http://codereview.chromium.org/1599009

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47268 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc
index bccacf6..92b4b80c 100644
--- a/chrome/renderer/render_thread.cc
+++ b/chrome/renderer/render_thread.cc
@@ -50,12 +50,14 @@
 #include "chrome/renderer/extensions/js_only_v8_extensions.h"
 #include "chrome/renderer/extensions/renderer_extension_bindings.h"
 #include "chrome/renderer/external_extension.h"
+#include "chrome/renderer/indexed_db_dispatcher.h"
 #include "chrome/renderer/loadtimes_extension_bindings.h"
 #include "chrome/renderer/net/render_dns_master.h"
 #include "chrome/renderer/plugin_channel_host.h"
 #include "chrome/renderer/render_process_impl.h"
 #include "chrome/renderer/render_view.h"
 #include "chrome/renderer/render_view_visitor.h"
+#include "chrome/renderer/renderer_webindexeddatabase_impl.h"
 #include "chrome/renderer/renderer_webkitclient_impl.h"
 #include "chrome/renderer/spellchecker/spellcheck.h"
 #include "chrome/renderer/user_script_slave.h"
@@ -234,6 +236,7 @@
   dns_master_.reset(new RenderDnsMaster());
   histogram_snapshots_.reset(new RendererHistogramSnapshots());
   appcache_dispatcher_.reset(new AppCacheDispatcher(this));
+  indexed_db_dispatcher_.reset(new IndexedDBDispatcher());
   spellchecker_.reset(new SpellCheck());
 
   devtools_agent_filter_ = new DevToolsAgentFilter();
@@ -522,9 +525,11 @@
 }
 
 void RenderThread::OnControlMessageReceived(const IPC::Message& msg) {
-  // App cache messages are handled by a delegate.
+  // Some messages are handled by delegates.
   if (appcache_dispatcher_->OnMessageReceived(msg))
     return;
+  if (indexed_db_dispatcher_->OnMessageReceived(msg))
+    return;
 
   IPC_BEGIN_MESSAGE_MAP(RenderThread, msg)
     IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_NewTable, OnUpdateVisitedLinks)