// Copyright (c) 2011 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. #include "remoting/client/plugin/pepper_xmpp_proxy.h" #include "base/message_loop.h" #include "base/message_loop_proxy.h" #include "remoting/client/plugin/chromoting_scriptable_object.h" #include "remoting/client/plugin/pepper_util.h" namespace remoting { PepperXmppProxy::PepperXmppProxy( base::WeakPtr<ChromotingScriptableObject> scriptable_object, base::MessageLoopProxy* callback_message_loop) : scriptable_object_(scriptable_object), callback_message_loop_(callback_message_loop) { CHECK(CurrentlyOnPluginThread()); } PepperXmppProxy::~PepperXmppProxy() { } void PepperXmppProxy::AttachCallback(base::WeakPtr<ResponseCallback> callback) { DCHECK(callback_message_loop_->BelongsToCurrentThread()); callback_ = callback; } void PepperXmppProxy::DetachCallback() { callback_.reset(); } void PepperXmppProxy::SendIq(const std::string& request_xml) { if (!CurrentlyOnPluginThread()) { RunTaskOnPluginThread(NewRunnableMethod(this, &PepperXmppProxy::SendIq, request_xml)); return; } if (scriptable_object_) { scriptable_object_->SendIq(request_xml); } } void PepperXmppProxy::OnIq(const std::string& response_xml) { if (!callback_message_loop_->BelongsToCurrentThread()) { callback_message_loop_->PostTask( FROM_HERE,NewRunnableMethod(this, &PepperXmppProxy::OnIq, response_xml)); return; } if (callback_) { callback_->OnIq(response_xml); } } } // namespace remoting