// Copyright (c) 2012 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. #ifndef CONTENT_BROWSER_DEVICE_ORIENTATION_ORIENTATION_H_ #define CONTENT_BROWSER_DEVICE_ORIENTATION_ORIENTATION_H_ #include "base/compiler_specific.h" #include "content/browser/device_orientation/device_data.h" #include "content/common/content_export.h" namespace content { class Orientation : public DeviceData { public: // alpha, beta, gamma and absolute are the rotations around the axes as // specified in http://dev.w3.org/geo/api/spec-source-orientation.html // // can_provide_{alpha,beta,gamma,absolute} is true if data can be provided // for that variable. CONTENT_EXPORT Orientation(); // From DeviceData. virtual IPC::Message* CreateIPCMessage(int render_view_id) const OVERRIDE; virtual bool ShouldFireEvent(const DeviceData* old_data) const OVERRIDE; void set_alpha(double alpha) { can_provide_alpha_ = true; alpha_ = alpha; } bool can_provide_alpha() const { return can_provide_alpha_; } double alpha() const { return alpha_; } void set_beta(double beta) { can_provide_beta_ = true; beta_ = beta; } bool can_provide_beta() const { return can_provide_beta_; } double beta() const { return beta_; } void set_gamma(double gamma) { can_provide_gamma_ = true; gamma_ = gamma; } bool can_provide_gamma() const { return can_provide_gamma_; } double gamma() const { return gamma_; } void set_absolute(bool absolute) { can_provide_absolute_ = true; absolute_ = absolute; } bool can_provide_absolute() const { return can_provide_absolute_; } bool absolute() const { return absolute_; } private: virtual ~Orientation(); static bool IsElementSignificantlyDifferent(bool can_provide_element1, bool can_provide_element2, double element1, double element2); double alpha_; double beta_; double gamma_; bool absolute_; bool can_provide_alpha_; bool can_provide_beta_; bool can_provide_gamma_; bool can_provide_absolute_; }; } // namespace content #endif // CONTENT_BROWSER_DEVICE_ORIENTATION_ORIENTATION_H_