Home | History | Annotate | Download | only in device_orientation
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "config.h"
      6 #include "modules/device_orientation/DeviceOrientationInspectorAgent.h"
      7 
      8 #include "core/dom/Document.h"
      9 #include "core/frame/LocalFrame.h"
     10 #include "core/inspector/InspectorController.h"
     11 #include "core/inspector/InspectorState.h"
     12 #include "core/page/Page.h"
     13 
     14 #include "modules/device_orientation/DeviceOrientationController.h"
     15 #include "modules/device_orientation/DeviceOrientationData.h"
     16 
     17 namespace WebCore {
     18 
     19 namespace DeviceOrientationInspectorAgentState {
     20 static const char alpha[] = "alpha";
     21 static const char beta[] = "beta";
     22 static const char gamma[] = "gamma";
     23 static const char overrideEnabled[] = "overrideEnabled";
     24 }
     25 
     26 void DeviceOrientationInspectorAgent::provideTo(Page& page)
     27 {
     28     OwnPtr<DeviceOrientationInspectorAgent> deviceOrientationAgent(adoptPtr(new DeviceOrientationInspectorAgent(page)));
     29     page.inspectorController().registerModuleAgent(deviceOrientationAgent.release());
     30 }
     31 
     32 DeviceOrientationInspectorAgent::~DeviceOrientationInspectorAgent()
     33 {
     34 }
     35 
     36 DeviceOrientationInspectorAgent::DeviceOrientationInspectorAgent(Page& page)
     37     : InspectorBaseAgent<DeviceOrientationInspectorAgent>("DeviceOrientation")
     38     , m_page(page)
     39 {
     40 }
     41 
     42 DeviceOrientationController& DeviceOrientationInspectorAgent::controller()
     43 {
     44     ASSERT(toLocalFrame(m_page.mainFrame())->document());
     45     return DeviceOrientationController::from(*m_page.deprecatedLocalMainFrame()->document());
     46 }
     47 
     48 void DeviceOrientationInspectorAgent::setDeviceOrientationOverride(ErrorString* error, double alpha, double beta, double gamma)
     49 {
     50     m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, true);
     51     m_state->setDouble(DeviceOrientationInspectorAgentState::alpha, alpha);
     52     m_state->setDouble(DeviceOrientationInspectorAgentState::beta, beta);
     53     m_state->setDouble(DeviceOrientationInspectorAgentState::gamma, gamma);
     54     controller().setOverride(DeviceOrientationData::create(true, alpha, true, beta, true, gamma).get());
     55 }
     56 
     57 void DeviceOrientationInspectorAgent::clearDeviceOrientationOverride(ErrorString* error)
     58 {
     59     m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, false);
     60     controller().clearOverride();
     61 }
     62 
     63 void DeviceOrientationInspectorAgent::clearFrontend()
     64 {
     65     m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, false);
     66     controller().clearOverride();
     67 }
     68 
     69 void DeviceOrientationInspectorAgent::restore()
     70 {
     71     if (m_state->getBoolean(DeviceOrientationInspectorAgentState::overrideEnabled)) {
     72         double alpha = m_state->getDouble(DeviceOrientationInspectorAgentState::alpha);
     73         double beta = m_state->getDouble(DeviceOrientationInspectorAgentState::beta);
     74         double gamma = m_state->getDouble(DeviceOrientationInspectorAgentState::gamma);
     75         controller().setOverride(DeviceOrientationData::create(true, alpha, true, beta, true, gamma).get());
     76     }
     77 }
     78 
     79 void DeviceOrientationInspectorAgent::didCommitLoadForMainFrame()
     80 {
     81     // New document in main frame - apply override there.
     82     // No need to cleanup previous one, as it's already gone.
     83     restore();
     84 }
     85 
     86 } // namespace WebCore
     87