Chromium Code Reviews| Index: content/browser/device_orientation/orientation_message_filter.cc |
| diff --git a/content/browser/device_orientation/orientation_message_filter.cc b/content/browser/device_orientation/orientation_message_filter.cc |
| index 11b1e06aea610bd7cceac3f21df397d3866beeac..630fa47a14e11d258a7e03c536b5bb817b8a745e 100644 |
| --- a/content/browser/device_orientation/orientation_message_filter.cc |
| +++ b/content/browser/device_orientation/orientation_message_filter.cc |
| @@ -29,10 +29,11 @@ class OrientationMessageFilter::ObserverDelegate |
| // Will stop observing provider when destructed. |
| ObserverDelegate(Provider* provider, |
| int render_view_id, |
| - IPC::Sender* sender); |
| + IPC::Sender* sender, |
| + DeviceData::DeviceDataType device_data_type); |
| // From Provider::Observer. |
| - virtual void OnOrientationUpdate(const Orientation& orientation); |
| + virtual void OnDeviceDataUpdate(const DeviceData* device_data); |
| private: |
| friend class base::RefCounted<ObserverDelegate>; |
| @@ -46,29 +47,36 @@ class OrientationMessageFilter::ObserverDelegate |
| }; |
| OrientationMessageFilter::ObserverDelegate::ObserverDelegate(Provider* provider, |
| - int render_view_id, |
| - IPC::Sender* sender) |
| - : provider_(provider), |
| - render_view_id_(render_view_id), |
| - sender_(sender) { |
| + int render_view_id, IPC::Sender* sender, |
| + DeviceData::DeviceDataType device_data_type) |
| + : provider_(provider), |
|
bulach
2012/07/12 10:43:27
nit: I think the initializer list needs to be inde
aousterh
2012/07/12 17:13:57
Done.
|
| + render_view_id_(render_view_id), |
| + sender_(sender) { |
| provider_->AddObserver(this); |
| + device_data_type_ = device_data_type; |
| } |
| OrientationMessageFilter::ObserverDelegate::~ObserverDelegate() { |
| provider_->RemoveObserver(this); |
| } |
| -void OrientationMessageFilter::ObserverDelegate::OnOrientationUpdate( |
| - const Orientation& orientation) { |
| +void OrientationMessageFilter::ObserverDelegate::OnDeviceDataUpdate( |
| + const DeviceData* device_data) { |
| DeviceOrientationMsg_Updated_Params params; |
| - params.can_provide_alpha = orientation.can_provide_alpha(); |
| - params.alpha = orientation.alpha(); |
| - params.can_provide_beta = orientation.can_provide_beta(); |
| - params.beta = orientation.beta(); |
| - params.can_provide_gamma = orientation.can_provide_gamma(); |
| - params.gamma = orientation.gamma(); |
| - params.can_provide_absolute = orientation.can_provide_absolute(); |
| - params.absolute = orientation.absolute(); |
| + |
| + const Orientation* orientation = static_cast<const Orientation*>(device_data); |
|
bulach
2012/07/12 10:43:27
hmm... I'm not a 100% of this suggestion, but here
aousterh
2012/07/12 17:13:57
Done.
|
| + const Orientation empty_orientation; |
| + if (orientation == NULL) |
| + orientation = &empty_orientation; |
| + |
| + params.can_provide_alpha = orientation->can_provide_alpha(); |
| + params.alpha = orientation->alpha(); |
| + params.can_provide_beta = orientation->can_provide_beta(); |
| + params.beta = orientation->beta(); |
| + params.can_provide_gamma = orientation->can_provide_gamma(); |
| + params.gamma = orientation->gamma(); |
| + params.can_provide_absolute = orientation->can_provide_absolute(); |
| + params.absolute = orientation->absolute(); |
| sender_->Send(new DeviceOrientationMsg_Updated(render_view_id_, params)); |
| } |
| @@ -92,8 +100,7 @@ void OrientationMessageFilter::OnStartUpdating(int render_view_id) { |
| provider_ = Provider::GetInstance(); |
| observers_map_[render_view_id] = new ObserverDelegate(provider_, |
| - render_view_id, |
| - this); |
| + render_view_id, this, DeviceData::kDeviceOrientationData); |
| } |
| void OrientationMessageFilter::OnStopUpdating(int render_view_id) { |