| Index: chrome/browser/device_orientation/message_filter.cc
|
| ===================================================================
|
| --- chrome/browser/device_orientation/message_filter.cc (revision 68877)
|
| +++ chrome/browser/device_orientation/message_filter.cc (working copy)
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/device_orientation/dispatcher_host.h"
|
| +#include "chrome/browser/device_orientation/message_filter.h"
|
|
|
| #include "base/scoped_ptr.h"
|
| #include "chrome/browser/browser_thread.h"
|
| @@ -16,24 +16,21 @@
|
|
|
| namespace device_orientation {
|
|
|
| -DispatcherHost::DispatcherHost(int process_id)
|
| - : process_id_(process_id),
|
| - observers_map_(),
|
| - provider_(NULL) {
|
| +MessageFilter::MessageFilter() : provider_(NULL) {
|
| }
|
|
|
| -DispatcherHost::~DispatcherHost() {
|
| +MessageFilter::~MessageFilter() {
|
| }
|
|
|
| -class DispatcherHost::ObserverDelegate
|
| +class MessageFilter::ObserverDelegate
|
| : public base::RefCounted<ObserverDelegate>, public Provider::Observer {
|
| public:
|
| // Create ObserverDelegate that observes provider and forwards updates to
|
| // render_view_id in process_id.
|
| // Will stop observing provider when destructed.
|
| ObserverDelegate(Provider* provider,
|
| - int process_id,
|
| - int render_view_id);
|
| + int render_view_id,
|
| + IPC::Message::Sender* sender);
|
|
|
| // From Provider::Observer.
|
| virtual void OnOrientationUpdate(const Orientation& orientation);
|
| @@ -43,26 +40,26 @@
|
| virtual ~ObserverDelegate();
|
|
|
| scoped_refptr<Provider> provider_;
|
| - int process_id_;
|
| int render_view_id_;
|
| + IPC::Message::Sender* sender_; // Weak pointer.
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ObserverDelegate);
|
| };
|
|
|
| -DispatcherHost::ObserverDelegate::ObserverDelegate(Provider* provider,
|
| - int process_id,
|
| - int render_view_id)
|
| +MessageFilter::ObserverDelegate::ObserverDelegate(Provider* provider,
|
| + int render_view_id,
|
| + IPC::Message::Sender* sender)
|
| : provider_(provider),
|
| - process_id_(process_id),
|
| - render_view_id_(render_view_id) {
|
| + render_view_id_(render_view_id),
|
| + sender_(sender) {
|
| provider_->AddObserver(this);
|
| }
|
|
|
| -DispatcherHost::ObserverDelegate::~ObserverDelegate() {
|
| +MessageFilter::ObserverDelegate::~ObserverDelegate() {
|
| provider_->RemoveObserver(this);
|
| }
|
|
|
| -void DispatcherHost::ObserverDelegate::OnOrientationUpdate(
|
| +void MessageFilter::ObserverDelegate::OnOrientationUpdate(
|
| const Orientation& orientation) {
|
| ViewMsg_DeviceOrientationUpdated_Params params;
|
| params.can_provide_alpha = orientation.can_provide_alpha_;
|
| @@ -72,17 +69,14 @@
|
| params.can_provide_gamma = orientation.can_provide_gamma_;
|
| params.gamma = orientation.gamma_;
|
|
|
| - IPC::Message* message = new ViewMsg_DeviceOrientationUpdated(render_view_id_,
|
| - params);
|
| - CallRenderViewHost(process_id_, render_view_id_, &RenderViewHost::Send,
|
| - message);
|
| + sender_->Send(new ViewMsg_DeviceOrientationUpdated(render_view_id_, params));
|
| }
|
|
|
| -bool DispatcherHost::OnMessageReceived(const IPC::Message& msg,
|
| - bool* msg_was_ok) {
|
| +bool MessageFilter::OnMessageReceived(const IPC::Message& message,
|
| + bool* message_was_ok) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP_EX(DispatcherHost, msg, *msg_was_ok)
|
| + IPC_BEGIN_MESSAGE_MAP_EX(MessageFilter, message, *message_was_ok)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_DeviceOrientation_StartUpdating,
|
| OnStartUpdating)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_DeviceOrientation_StopUpdating,
|
| @@ -92,18 +86,18 @@
|
| return handled;
|
| }
|
|
|
| -void DispatcherHost::OnStartUpdating(int render_view_id) {
|
| +void MessageFilter::OnStartUpdating(int render_view_id) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| if (!provider_)
|
| provider_ = Provider::GetInstance();
|
|
|
| observers_map_[render_view_id] = new ObserverDelegate(provider_,
|
| - process_id_,
|
| - render_view_id);
|
| + render_view_id,
|
| + this);
|
| }
|
|
|
| -void DispatcherHost::OnStopUpdating(int render_view_id) {
|
| +void MessageFilter::OnStopUpdating(int render_view_id) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| observers_map_.erase(render_view_id);
|
|
|