| 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() {
|
|
|