OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_H_ | 5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_H_ |
6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_H_ | 6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_H_ |
7 | 7 |
8 #include <jni.h> | 8 #include <jni.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 | 11 |
12 #include "base/android/jni_weak_ref.h" | 12 #include "base/android/jni_weak_ref.h" |
13 #include "base/callback.h" | 13 #include "base/callback.h" |
14 #include "base/macros.h" | 14 #include "base/macros.h" |
15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
16 #include "base/single_thread_task_runner.h" | 16 #include "base/single_thread_task_runner.h" |
17 #include "chrome/browser/android/vr_shell/ui_interface.h" | 17 #include "chrome/browser/android/vr_shell/ui_interface.h" |
18 #include "chrome/browser/android/vr_shell/vr_controller_model.h" | 18 #include "chrome/browser/android/vr_shell/vr_controller_model.h" |
19 #include "content/public/browser/web_contents_observer.h" | 19 #include "content/public/browser/web_contents_observer.h" |
| 20 #include "device/vr/android/gvr/cardboard_gamepad_data_provider.h" |
20 #include "device/vr/android/gvr/gvr_delegate.h" | 21 #include "device/vr/android/gvr/gvr_delegate.h" |
21 #include "device/vr/android/gvr/gvr_gamepad_data_provider.h" | 22 #include "device/vr/android/gvr/gvr_gamepad_data_provider.h" |
22 #include "device/vr/vr_service.mojom.h" | 23 #include "device/vr/vr_service.mojom.h" |
23 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr.h" | 24 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr.h" |
24 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr_types.h" | 25 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr_types.h" |
25 | 26 |
26 namespace blink { | 27 namespace blink { |
27 class WebInputEvent; | 28 class WebInputEvent; |
28 } | 29 } |
29 | 30 |
(...skipping 27 matching lines...) Expand all Loading... |
57 SHOW_TAB, | 58 SHOW_TAB, |
58 OPEN_NEW_TAB, | 59 OPEN_NEW_TAB, |
59 EXIT_PRESENT, | 60 EXIT_PRESENT, |
60 }; | 61 }; |
61 | 62 |
62 class VrMetricsHelper; | 63 class VrMetricsHelper; |
63 | 64 |
64 // The native instance of the Java VrShell. This class is not threadsafe and | 65 // The native instance of the Java VrShell. This class is not threadsafe and |
65 // must only be used on the UI thread. | 66 // must only be used on the UI thread. |
66 class VrShell : public device::PresentingGvrDelegate, | 67 class VrShell : public device::PresentingGvrDelegate, |
67 device::GvrGamepadDataProvider { | 68 device::GvrGamepadDataProvider, |
| 69 device::CardboardGamepadDataProvider { |
68 public: | 70 public: |
69 VrShell(JNIEnv* env, | 71 VrShell(JNIEnv* env, |
70 jobject obj, | 72 jobject obj, |
71 ui::WindowAndroid* window, | 73 ui::WindowAndroid* window, |
72 bool for_web_vr, | 74 bool for_web_vr, |
73 bool in_cct, | 75 bool in_cct, |
74 VrShellDelegate* delegate, | 76 VrShellDelegate* delegate, |
75 gvr_context* gvr_api, | 77 gvr_context* gvr_api, |
76 bool reprojected_rendering); | 78 bool reprojected_rendering); |
77 void SwapContents( | 79 void SwapContents( |
78 JNIEnv* env, | 80 JNIEnv* env, |
79 const base::android::JavaParamRef<jobject>& obj, | 81 const base::android::JavaParamRef<jobject>& obj, |
80 const base::android::JavaParamRef<jobject>& web_contents, | 82 const base::android::JavaParamRef<jobject>& web_contents, |
81 const base::android::JavaParamRef<jobject>& touch_event_synthesizer); | 83 const base::android::JavaParamRef<jobject>& touch_event_synthesizer); |
82 void LoadUIContent(JNIEnv* env, | 84 void LoadUIContent(JNIEnv* env, |
83 const base::android::JavaParamRef<jobject>& obj); | 85 const base::android::JavaParamRef<jobject>& obj); |
84 void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); | 86 void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); |
85 void OnTriggerEvent(JNIEnv* env, | 87 void OnTriggerEvent(JNIEnv* env, |
86 const base::android::JavaParamRef<jobject>& obj); | 88 const base::android::JavaParamRef<jobject>& obj, |
| 89 bool touched); |
87 void OnPause(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); | 90 void OnPause(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); |
88 void OnResume(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); | 91 void OnResume(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); |
89 void SetSurface(JNIEnv* env, | 92 void SetSurface(JNIEnv* env, |
90 const base::android::JavaParamRef<jobject>& obj, | 93 const base::android::JavaParamRef<jobject>& obj, |
91 const base::android::JavaParamRef<jobject>& surface); | 94 const base::android::JavaParamRef<jobject>& surface); |
92 void SetWebVrMode(JNIEnv* env, | 95 void SetWebVrMode(JNIEnv* env, |
93 const base::android::JavaParamRef<jobject>& obj, | 96 const base::android::JavaParamRef<jobject>& obj, |
94 bool enabled); | 97 bool enabled); |
95 bool GetWebVrMode(JNIEnv* env, | 98 bool GetWebVrMode(JNIEnv* env, |
96 const base::android::JavaParamRef<jobject>& obj); | 99 const base::android::JavaParamRef<jobject>& obj); |
(...skipping 10 matching lines...) Expand all Loading... |
107 jboolean incognito, | 110 jboolean incognito, |
108 jint id, | 111 jint id, |
109 jstring jtitle); | 112 jstring jtitle); |
110 void OnTabRemoved(JNIEnv* env, | 113 void OnTabRemoved(JNIEnv* env, |
111 const base::android::JavaParamRef<jobject>& obj, | 114 const base::android::JavaParamRef<jobject>& obj, |
112 jboolean incognito, | 115 jboolean incognito, |
113 jint id); | 116 jint id); |
114 void OnContentPaused(bool paused); | 117 void OnContentPaused(bool paused); |
115 void NavigateBack(); | 118 void NavigateBack(); |
116 void ExitCct(); | 119 void ExitCct(); |
| 120 void ToggleCardboardGamepad(bool enabled); |
117 base::android::ScopedJavaGlobalRef<jobject> TakeContentSurface( | 121 base::android::ScopedJavaGlobalRef<jobject> TakeContentSurface( |
118 JNIEnv* env, | 122 JNIEnv* env, |
119 const base::android::JavaParamRef<jobject>& obj); | 123 const base::android::JavaParamRef<jobject>& obj); |
120 void RestoreContentSurface(JNIEnv* env, | 124 void RestoreContentSurface(JNIEnv* env, |
121 const base::android::JavaParamRef<jobject>& obj); | 125 const base::android::JavaParamRef<jobject>& obj); |
122 void SetHistoryButtonsEnabled(JNIEnv* env, | 126 void SetHistoryButtonsEnabled(JNIEnv* env, |
123 const base::android::JavaParamRef<jobject>& obj, | 127 const base::android::JavaParamRef<jobject>& obj, |
124 jboolean can_go_back, | 128 jboolean can_go_back, |
125 jboolean can_go_forward); | 129 jboolean can_go_forward); |
126 | 130 |
(...skipping 30 matching lines...) Expand all Loading... |
157 void ForceExitVr(); | 161 void ForceExitVr(); |
158 void ExitPresent(); | 162 void ExitPresent(); |
159 void ExitFullscreen(); | 163 void ExitFullscreen(); |
160 void ExitVrDueToUnsupportedMode(); | 164 void ExitVrDueToUnsupportedMode(); |
161 | 165 |
162 void ProcessContentGesture(std::unique_ptr<blink::WebInputEvent> event); | 166 void ProcessContentGesture(std::unique_ptr<blink::WebInputEvent> event); |
163 void SubmitControllerModel(std::unique_ptr<VrControllerModel> model); | 167 void SubmitControllerModel(std::unique_ptr<VrControllerModel> model); |
164 | 168 |
165 // device::GvrGamepadDataProvider implementation. | 169 // device::GvrGamepadDataProvider implementation. |
166 void UpdateGamepadData(device::GvrGamepadData) override; | 170 void UpdateGamepadData(device::GvrGamepadData) override; |
167 void RegisterGamepadDataFetcher(device::GvrGamepadDataFetcher*) override; | 171 void RegisterGvrGamepadDataFetcher(device::GvrGamepadDataFetcher*) override; |
| 172 |
| 173 // device::CardboardGamepadDataProvider implementation. |
| 174 void RegisterCardboardGamepadDataFetcher( |
| 175 device::CardboardGamepadDataFetcher*) override; |
168 | 176 |
169 private: | 177 private: |
170 ~VrShell() override; | 178 ~VrShell() override; |
171 void WaitForGlThread(); | 179 void WaitForGlThread(); |
172 void PostToGlThread(const tracked_objects::Location& from_here, | 180 void PostToGlThread(const tracked_objects::Location& from_here, |
173 const base::Closure& task); | 181 const base::Closure& task); |
174 void SetUiState(); | 182 void SetUiState(); |
175 | 183 |
176 // device::GvrDelegate implementation. | 184 // device::GvrDelegate implementation. |
177 void SetWebVRSecureOrigin(bool secure_origin) override; | 185 void SetWebVRSecureOrigin(bool secure_origin) override; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 base::CancelableClosure poll_capturing_media_task_; | 237 base::CancelableClosure poll_capturing_media_task_; |
230 bool is_capturing_audio_ = false; | 238 bool is_capturing_audio_ = false; |
231 bool is_capturing_video_ = false; | 239 bool is_capturing_video_ = false; |
232 bool is_capturing_screen_ = false; | 240 bool is_capturing_screen_ = false; |
233 | 241 |
234 // TODO(mthiesse): Remove the need for this to be stored here. | 242 // TODO(mthiesse): Remove the need for this to be stored here. |
235 // crbug.com/674594 | 243 // crbug.com/674594 |
236 gvr_context* gvr_api_; | 244 gvr_context* gvr_api_; |
237 | 245 |
238 // Are we currently providing a gamepad factory to the gamepad manager? | 246 // Are we currently providing a gamepad factory to the gamepad manager? |
239 bool gamepad_source_active_ = false; | 247 bool gvr_gamepad_source_active_ = false; |
240 // Registered fetcher, must remain alive for UpdateGamepadData calls. | 248 bool cardboard_gamepad_source_active_ = false; |
| 249 |
| 250 // Registered fetchers, must remain alive for UpdateGamepadData calls. |
241 // That's ok since the fetcher is only destroyed from VrShell's destructor. | 251 // That's ok since the fetcher is only destroyed from VrShell's destructor. |
242 device::GvrGamepadDataFetcher* gamepad_data_fetcher_ = nullptr; | 252 device::GvrGamepadDataFetcher* gvr_gamepad_data_fetcher_ = nullptr; |
| 253 device::CardboardGamepadDataFetcher* cardboard_gamepad_data_fetcher_ = |
| 254 nullptr; |
| 255 int64_t cardboard_gamepad_timer_ = 0; |
243 | 256 |
244 base::WeakPtrFactory<VrShell> weak_ptr_factory_; | 257 base::WeakPtrFactory<VrShell> weak_ptr_factory_; |
245 | 258 |
246 DISALLOW_COPY_AND_ASSIGN(VrShell); | 259 DISALLOW_COPY_AND_ASSIGN(VrShell); |
247 }; | 260 }; |
248 | 261 |
249 bool RegisterVrShell(JNIEnv* env); | 262 bool RegisterVrShell(JNIEnv* env); |
250 | 263 |
251 } // namespace vr_shell | 264 } // namespace vr_shell |
252 | 265 |
253 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_H_ | 266 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_H_ |
OLD | NEW |