148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org// Copyright (c) 2013 The Chromium Authors. All rights reserved.
248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org// Use of this source code is governed by a BSD-style license that can be
348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org// found in the LICENSE file.
448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include "content/child/thread_safe_sender.h"
648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include "base/message_loop/message_loop_proxy.h"
848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include "content/child/child_thread.h"
948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include "ipc/ipc_sync_message_filter.h"
1048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
1148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgnamespace content {
1248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
1348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgThreadSafeSender::ThreadSafeSender(
1448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org    const scoped_refptr<base::MessageLoopProxy>& main_loop,
1548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org    const scoped_refptr<IPC::SyncMessageFilter>& sync_filter)
1648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org    : main_loop_(main_loop), sync_filter_(sync_filter) {
1748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
1848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
1948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgThreadSafeSender::~ThreadSafeSender() {
2048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
2148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
2248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgbool ThreadSafeSender::Send(IPC::Message* msg) {
2348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  if (main_loop_->BelongsToCurrentThread())
2448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org    return ChildThread::current()->Send(msg);
2548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  return sync_filter_->Send(msg);
2648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
2748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
2848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}  // namespace content
2948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org