Adding Chrome-side WebVR interface

WebVR Spec: http://mozvr.github.io/webvr-spec/webvr.html

For the Blink half of this CL, see https://codereview.chromium.org/848053002

Provides the basic plumbing required to get data from Javascript to the right place in the browser process and back.

BUG=389343

Committed: https://crrev.com/4ab52def6d1861a55fd9864b47f56c16e4b423a0
Cr-Commit-Position: refs/heads/master@{#335062}

Review URL: https://codereview.chromium.org/829803003

Cr-Commit-Position: refs/heads/master@{#335561}
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 9c3b29b..8940e64 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -114,6 +114,7 @@
 struct ResourceResponseHead;
 struct StartNavigationParams;
 struct StreamOverrideParameters;
+class VRDispatcher;
 
 class CONTENT_EXPORT RenderFrameImpl
     : public RenderFrame,
@@ -530,6 +531,10 @@
   virtual blink::WebPermissionClient* permissionClient();
   virtual blink::WebAppBannerClient* appBannerClient();
 
+#if defined(ENABLE_WEBVR)
+  blink::WebVRClient* webVRClient() override;
+#endif
+
   // WebMediaPlayerDelegate implementation:
   void DidPlay(blink::WebMediaPlayer* player) override;
   void DidPause(blink::WebMediaPlayer* player) override;
@@ -972,6 +977,11 @@
 
   scoped_ptr<blink::WebAppBannerClient> app_banner_client_;
 
+#if defined(ENABLE_WEBVR)
+  // The VR dispatcher attached to the frame, lazily initialized.
+  scoped_ptr<VRDispatcher> vr_dispatcher_;
+#endif
+
 #if defined(OS_MACOSX) || defined(OS_ANDROID)
   // The external popup for the currently showing select popup.
   scoped_ptr<ExternalPopupMenu> external_popup_menu_;