Commit 8ccc1dab authored by haraken's avatar haraken Committed by Commit bot

Remove ContextClient from NavigatorVR

Now that Navigator supplements can get the Navigator object via host(),
the supplements don't need to observe ContextClient.

BUG=610176

Review-Url: https://codereview.chromium.org/2618713002
Cr-Commit-Position: refs/heads/master@{#441828}
parent 0955147b
......@@ -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() {
......
......@@ -6,7 +6,6 @@
#define NavigatorVR_h
#include "bindings/core/v8/ScriptPromise.h"
#include "core/dom/ContextLifecycleObserver.h"
#include "core/frame/LocalDOMWindow.h"
#include "core/frame/Navigator.h"
#include "core/page/PageVisibilityObserver.h"
......@@ -27,7 +26,6 @@ class VRController;
class MODULES_EXPORT NavigatorVR final
: public GarbageCollectedFinalized<NavigatorVR>,
public Supplement<Navigator>,
public ContextClient,
public PageVisibilityObserver,
public LocalDOMWindow::EventListenerObserver {
USING_GARBAGE_COLLECTED_MIXIN(NavigatorVR);
......@@ -64,7 +62,7 @@ class MODULES_EXPORT NavigatorVR final
friend class VRDisplay;
friend class VRGetDevicesCallback;
explicit NavigatorVR(LocalFrame*);
explicit NavigatorVR(Navigator&);
static const char* supplementName();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment