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/frame/LocalFrame.h"
      9 #include "core/inspector/InspectorController.h"
     10 #include "core/inspector/InspectorState.h"
     11 #include "core/page/Page.h"
     12 
     13 #include "modules/device_orientation/DeviceOrientationController.h"
     14 #include "modules/device_orientation/DeviceOrientationData.h"
     15 
     16 namespace blink {
     17 
     18 namespace DeviceOrientationInspectorAgentState {
     19 static const char alpha[] = "alpha";
     20 static const char beta[] = "beta";
     21 static const char gamma[] = "gamma";
     22 static const char overrideEnabled[] = "overrideEnabled";
     23 }
     24 
     25 void DeviceOrientationInspectorAgent::provideTo(Page& page)
     26 {
     27     OwnPtrWillBeRawPtr<DeviceOrientationInspectorAgent> deviceOrientationAgent(adoptPtrWillBeNoop(new DeviceOrientationInspectorAgent(page)));
     28     page.inspectorController().registerModuleAgent(deviceOrientationAgent.release());
     29 }
     30 
     31 DeviceOrientationInspectorAgent::~DeviceOrientationInspectorAgent()
     32 {
     33 }
     34 
     35 DeviceOrientationInspectorAgent::DeviceOrientationInspectorAgent(Page& page)
     36     : InspectorBaseAgent<DeviceOrientationInspectorAgent>("DeviceOrientation")
     37     , m_page(page)
     38 {
     39 }
     40 
     41 DeviceOrientationController& DeviceOrientationInspectorAgent::controller()
     42 {
     43     ASSERT(toLocalFrame(m_page.mainFrame())->document());
     44     return DeviceOrientationController::from(*m_page.deprecatedLocalMainFrame()->document());
     45 }
     46 
     47 void DeviceOrientationInspectorAgent::setDeviceOrientationOverride(ErrorString* error, double alpha, double beta, double gamma)
     48 {
     49     m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, true);
     50     m_state->setDouble(DeviceOrientationInspectorAgentState::alpha, alpha);
     51     m_state->setDouble(DeviceOrientationInspectorAgentState::beta, beta);
     52     m_state->setDouble(DeviceOrientationInspectorAgentState::gamma, gamma);
     53     controller().setOverride(DeviceOrientationData::create(true, alpha, true, beta, true, gamma));
     54 }
     55 
     56 void DeviceOrientationInspectorAgent::clearDeviceOrientationOverride(ErrorString* error)
     57 {
     58     m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, false);
     59     controller().clearOverride();
     60 }
     61 
     62 void DeviceOrientationInspectorAgent::clearFrontend()
     63 {
     64     m_state->setBoolean(DeviceOrientationInspectorAgentState::overrideEnabled, false);
     65     controller().clearOverride();
     66 }
     67 
     68 void DeviceOrientationInspectorAgent::restore()
     69 {
     70     if (m_state->getBoolean(DeviceOrientationInspectorAgentState::overrideEnabled)) {
     71         double alpha = m_state->getDouble(DeviceOrientationInspectorAgentState::alpha);
     72         double beta = m_state->getDouble(DeviceOrientationInspectorAgentState::beta);
     73         double gamma = m_state->getDouble(DeviceOrientationInspectorAgentState::gamma);
     74         controller().setOverride(DeviceOrientationData::create(true, alpha, true, beta, true, gamma));
     75     }
     76 }
     77 
     78 void DeviceOrientationInspectorAgent::didCommitLoadForMainFrame()
     79 {
     80     // New document in main frame - apply override there.
     81     // No need to cleanup previous one, as it's already gone.
     82     restore();
     83 }
     84 
     85 } // namespace blink
     86