| Index: third_party/WebKit/Source/modules/vr/NavigatorVR.cpp
|
| diff --git a/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp b/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp
|
| index 77a2f29dbdca2c5928e3e40c474af6430de2a556..a0169b014c0888227d127aa1df652a4a1fab927c 100644
|
| --- a/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp
|
| +++ b/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp
|
| @@ -35,7 +35,7 @@ NavigatorVR& NavigatorVR::from(Navigator& navigator) {
|
| NavigatorVR* supplement = static_cast<NavigatorVR*>(
|
| Supplement<Navigator>::from(navigator, supplementName()));
|
| if (!supplement) {
|
| - supplement = new NavigatorVR(navigator.frame());
|
| + supplement = new NavigatorVR(navigator);
|
| provideTo(navigator, supplementName(), supplement);
|
| }
|
| return *supplement;
|
| @@ -50,21 +50,20 @@ ScriptPromise NavigatorVR::getVRDisplays(ScriptState* scriptState) {
|
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
|
| ScriptPromise promise = resolver->promise();
|
|
|
| - Document* document = frame() ? frame()->document() : 0;
|
| -
|
| - if (!document || !controller()) {
|
| + if (!document()) {
|
| DOMException* exception = DOMException::create(
|
| InvalidStateError, "The object is no longer associated to a document.");
|
| resolver->reject(exception);
|
| return promise;
|
| }
|
|
|
| - UseCounter::count(*document, UseCounter::VRGetDisplays);
|
| + UseCounter::count(*document(), UseCounter::VRGetDisplays);
|
| ExecutionContext* executionContext = scriptState->getExecutionContext();
|
| if (!executionContext->isSecureContext())
|
| - UseCounter::count(*document, UseCounter::VRGetDisplaysInsecureOrigin);
|
| + UseCounter::count(*document(), UseCounter::VRGetDisplaysInsecureOrigin);
|
|
|
| - Platform::current()->recordRapporURL("VR.WebVR.GetDisplays", document->url());
|
| + Platform::current()->recordRapporURL("VR.WebVR.GetDisplays",
|
| + document()->url());
|
|
|
| controller()->getDisplays(resolver);
|
|
|
| @@ -72,7 +71,7 @@ ScriptPromise NavigatorVR::getVRDisplays(ScriptState* scriptState) {
|
| }
|
|
|
| VRController* NavigatorVR::controller() {
|
| - if (!frame())
|
| + if (!host()->frame())
|
| return 0;
|
|
|
| if (!m_controller) {
|
| @@ -83,20 +82,19 @@ VRController* NavigatorVR::controller() {
|
| }
|
|
|
| Document* NavigatorVR::document() {
|
| - return frame() ? frame()->document() : 0;
|
| + return host()->frame() ? host()->frame()->document() : nullptr;
|
| }
|
|
|
| DEFINE_TRACE(NavigatorVR) {
|
| visitor->trace(m_controller);
|
| -
|
| Supplement<Navigator>::trace(visitor);
|
| - ContextClient::trace(visitor);
|
| PageVisibilityObserver::trace(visitor);
|
| }
|
|
|
| -NavigatorVR::NavigatorVR(LocalFrame* frame)
|
| - : ContextClient(frame), PageVisibilityObserver(frame->page()) {
|
| - frame->domWindow()->registerEventListenerObserver(this);
|
| +NavigatorVR::NavigatorVR(Navigator& navigator)
|
| + : Supplement<Navigator>(navigator),
|
| + PageVisibilityObserver(navigator.frame()->page()) {
|
| + navigator.frame()->domWindow()->registerEventListenerObserver(this);
|
| }
|
|
|
| NavigatorVR::~NavigatorVR() {}
|
| @@ -106,20 +104,20 @@ const char* NavigatorVR::supplementName() {
|
| }
|
|
|
| void NavigatorVR::enqueueVREvent(VRDisplayEvent* event) {
|
| - // TODO(dcheng): Why does this need to check both frame and domWindow?
|
| - if (frame() && frame()->domWindow()) {
|
| - frame()->domWindow()->enqueueWindowEvent(event);
|
| + if (host()->frame()) {
|
| + host()->frame()->domWindow()->enqueueWindowEvent(event);
|
| }
|
| }
|
|
|
| void NavigatorVR::dispatchVRGestureEvent(VRDisplayEvent* event) {
|
| - // TODO(dcheng): Why does this need to check both frame and domWindow?
|
| - if (frame() && frame()->domWindow()) {
|
| - UserGestureIndicator gestureIndicator(
|
| - DocumentUserGestureToken::create(frame()->document()));
|
| - event->setTarget(frame()->domWindow());
|
| - frame()->domWindow()->dispatchEvent(event);
|
| - }
|
| + if (host()->frame())
|
| + return;
|
| + UserGestureIndicator gestureIndicator(
|
| + DocumentUserGestureToken::create(document()));
|
| + LocalDOMWindow* window = host()->frame()->domWindow();
|
| + DCHECK(window);
|
| + event->setTarget(window);
|
| + window->dispatchEvent(event);
|
| }
|
|
|
| void NavigatorVR::pageVisibilityChanged() {
|
|
|