| Index: third_party/WebKit/Source/modules/vr/VRController.cpp
|
| diff --git a/third_party/WebKit/Source/modules/vr/VRController.cpp b/third_party/WebKit/Source/modules/vr/VRController.cpp
|
| index 58cdf5ccd050a5644c5e958cc5a600655792d71d..0f6b8e5d0f276e2a6528afc35b8418af8c2bcbb0 100644
|
| --- a/third_party/WebKit/Source/modules/vr/VRController.cpp
|
| +++ b/third_party/WebKit/Source/modules/vr/VRController.cpp
|
| @@ -23,8 +23,6 @@
|
| m_binding(this) {
|
| navigatorVR->document()->frame()->interfaceProvider()->getInterface(
|
| mojo::MakeRequest(&m_service));
|
| - m_service.set_connection_error_handler(convertToBaseCallback(
|
| - WTF::bind(&VRController::dispose, wrapWeakPersistent(this))));
|
| m_service->SetClient(
|
| m_binding.CreateInterfacePtrAndBind(),
|
| convertToBaseCallback(
|
| @@ -34,10 +32,15 @@
|
| VRController::~VRController() {}
|
|
|
| void VRController::getDisplays(ScriptPromiseResolver* resolver) {
|
| - // If we've previously synced the VRDisplays or no longer have a valid service
|
| - // connection just return the current list. In the case of the service being
|
| - // disconnected this will be an empty array.
|
| - if (!m_service || m_displaySynced) {
|
| + if (!m_service) {
|
| + DOMException* exception = DOMException::create(
|
| + InvalidStateError, "The service is no longer active.");
|
| + resolver->reject(exception);
|
| + return;
|
| + }
|
| +
|
| + // If we've previously synced the VRDisplays just return the current list.
|
| + if (m_displaySynced) {
|
| resolver->resolve(m_displays);
|
| return;
|
| }
|
| @@ -103,11 +106,6 @@
|
| // Shutdown all displays' message pipe
|
| for (size_t i = 0; i < m_displays.size(); ++i)
|
| m_displays[i]->dispose();
|
| -
|
| - m_displays.clear();
|
| -
|
| - // Ensure that any outstanding getDisplays promises are resolved.
|
| - onGetDisplays();
|
| }
|
|
|
| DEFINE_TRACE(VRController) {
|
|
|