blob: 105bd3fa9ca96cc0c74889207e2e3f26a11e835f [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "config.h"
#include "modules/device_orientation/DeviceOrientationInspectorAgent.h"
#include "core/frame/LocalFrame.h"
#include "core/inspector/InspectorController.h"
#include "core/inspector/InspectorState.h"
#include "core/page/Page.h"
#include "modules/device_orientation/DeviceOrientationController.h"
#include "modules/device_orientation/DeviceOrientationData.h"
namespace blink {
namespace DeviceOrientationInspectorAgentState {
static const char alpha[] = "alpha";
static const char beta[] = "beta";
static const char gamma[] = "gamma";
static const char overrideEnabled[] = "overrideEnabled";
}
void DeviceOrientationInspectorAgent::provideTo(Page& page)
{
OwnPtrWillBeRawPtr<DeviceOrientationInspectorAgent> deviceOrientationAgent(adoptPtrWillBeNoop(new DeviceOrientationInspectorAgent(page)));
page.inspectorController().registerModuleAgent(deviceOrientationAgent.release());
}
DeviceOrientationInspectorAgent::~DeviceOrientationInspectorAgent()
{
}
DeviceOrientationInspectorAgent::DeviceOrientationInspectorAgent(Page& page)
: InspectorBaseAgent<DeviceOrientationInspectorAgent>("DeviceOrientation")
, m_page(page)
{
}
DeviceOrientationController& DeviceOrientationInspectorAgent::controller()
{
ASSERT(toLocalFrame(m_page.mainFrame())->document());
return DeviceOrientationController::from(*m_page.deprecatedLocalMainFrame()->document());
}
void DeviceOrientationInspectorAgent::setDeviceOrientationOverride(ErrorString* error, double alpha, double beta, double gamma)
{
m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, true);
m_state->setDouble(DeviceOrientationInspectorAgentState::alpha, alpha);
m_state->setDouble(DeviceOrientationInspectorAgentState::beta, beta);
m_state->setDouble(DeviceOrientationInspectorAgentState::gamma, gamma);
controller().setOverride(DeviceOrientationData::create(true, alpha, true, beta, true, gamma));
}
void DeviceOrientationInspectorAgent::clearDeviceOrientationOverride(ErrorString* error)
{
m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, false);
controller().clearOverride();
}
void DeviceOrientationInspectorAgent::clearFrontend()
{
m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, false);
controller().clearOverride();
}
void DeviceOrientationInspectorAgent::restore()
{
if (m_state->getBoolean(DeviceOrientationInspectorAgentState::overrideEnabled)) {
double alpha = m_state->getDouble(DeviceOrientationInspectorAgentState::alpha);
double beta = m_state->getDouble(DeviceOrientationInspectorAgentState::beta);
double gamma = m_state->getDouble(DeviceOrientationInspectorAgentState::gamma);
controller().setOverride(DeviceOrientationData::create(true, alpha, true, beta, true, gamma));
}
}
void DeviceOrientationInspectorAgent::didCommitLoadForMainFrame()
{
// New document in main frame - apply override there.
// No need to cleanup previous one, as it's already gone.
restore();
}
} // namespace blink