Index: chrome/browser/android/vr_shell/vr_shell_delegate.cc |
diff --git a/chrome/browser/android/vr_shell/vr_shell_delegate.cc b/chrome/browser/android/vr_shell/vr_shell_delegate.cc |
index ae4acc523ce7317b1e0c39f8bad9a523af61170c..45a8bcee37667fd14a9e96d952ecfaa51277306a 100644 |
--- a/chrome/browser/android/vr_shell/vr_shell_delegate.cc |
+++ b/chrome/browser/android/vr_shell/vr_shell_delegate.cc |
@@ -67,17 +67,28 @@ void VrShellDelegate::ExitWebVRIfNecessary(JNIEnv* env, jobject obj) { |
device_provider_->OnGvrDelegateRemoved(); |
} |
-bool VrShellDelegate::RequestWebVRPresent( |
- base::WeakPtr<device::GvrDeviceProvider> device_provider) { |
- // Only set one device provider at a time |
+void VrShellDelegate::SetPresentResult(JNIEnv* env, jobject obj, |
+ jboolean result) { |
+ CHECK(!present_callback_.is_null()); |
+ present_callback_.Run(result); |
+ present_callback_.Reset(); |
+} |
+ |
+void VrShellDelegate::RequestWebVRPresent( |
+ base::WeakPtr<device::GvrDeviceProvider> device_provider, |
+ const base::Callback<void(bool)>& callback) { |
+ // Only set one device provider at a time. |
DCHECK(!device_provider_); |
+ |
+ // Only one RequestPresent request at a time. |
+ DCHECK(present_callback_.is_null()); |
+ |
device_provider_ = device_provider; |
+ present_callback_ = callback; |
- // If/When VRShell is ready for use it will call OnVrShellReady. |
+ // If/When VRShell is ready for use it will call SetPresentResult. |
JNIEnv* env = AttachCurrentThread(); |
- Java_VrShellDelegate_enterVRIfNecessary(env, j_vr_shell_delegate_.obj(), |
- true); |
- return true; |
+ Java_VrShellDelegate_presentRequested(env, j_vr_shell_delegate_.obj(), true); |
} |
void VrShellDelegate::ExitWebVRPresent() { |