| Index: chromeos/dbus/fake_shill_third_party_vpn_driver_client.cc | 
| diff --git a/chromeos/dbus/fake_shill_third_party_vpn_driver_client.cc b/chromeos/dbus/fake_shill_third_party_vpn_driver_client.cc | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..2638813e64131d03621fc281b60e4f5ed15797a2 | 
| --- /dev/null | 
| +++ b/chromeos/dbus/fake_shill_third_party_vpn_driver_client.cc | 
| @@ -0,0 +1,96 @@ | 
| +// Copyright 2014 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 "chromeos/dbus/fake_shill_third_party_vpn_driver_client.h" | 
| + | 
| +#include "base/bind.h" | 
| +#include "base/message_loop/message_loop.h" | 
| +#include "chromeos/dbus/shill_third_party_vpn_observer.h" | 
| +#include "dbus/object_proxy.h" | 
| + | 
| +namespace chromeos { | 
| + | 
| +FakeShillThirdPartyVpnDriverClient::FakeShillThirdPartyVpnDriverClient() { | 
| +} | 
| + | 
| +FakeShillThirdPartyVpnDriverClient::~FakeShillThirdPartyVpnDriverClient() { | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::Init(dbus::Bus* bus) { | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::AddShillThirdPartyVpnObserver( | 
| +    const dbus::ObjectPath& object_path, | 
| +    ShillThirdPartyVpnObserver* observer) { | 
| +  if (observer_map_.find(object_path.value()) != observer_map_.end()) { | 
| +    VLOG(2) << "Observer exists."; | 
| +    return; | 
| +  } | 
| +  observer_map_[object_path.value()] = observer; | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::RemoveShillThirdPartyVpnObserver( | 
| +    const dbus::ObjectPath& object_path) { | 
| +  if (observer_map_.find(object_path.value()) == observer_map_.end()) { | 
| +    VLOG(2) << "Observer does not exist."; | 
| +    return; | 
| +  } | 
| +  observer_map_.erase(object_path.value()); | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::SetParameters( | 
| +    const dbus::ObjectPath& object_path, | 
| +    const base::DictionaryValue& parameters, | 
| +    const base::Closure& callback, | 
| +    const ShillClientHelper::ErrorCallback& error_callback) { | 
| +  base::MessageLoop::current()->PostTask(FROM_HERE, callback); | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::UpdateConnectionState( | 
| +    const dbus::ObjectPath& object_path, | 
| +    const uint32 connection_state, | 
| +    const base::Closure& callback, | 
| +    const ShillClientHelper::ErrorCallback& error_callback) { | 
| +  base::MessageLoop::current()->PostTask(FROM_HERE, callback); | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::SendPacket( | 
| +    const dbus::ObjectPath& object_path, | 
| +    const std::string& ip_packet, | 
| +    const base::Closure& callback, | 
| +    const ShillClientHelper::ErrorCallback& error_callback) { | 
| +  base::MessageLoop::current()->PostTask(FROM_HERE, callback); | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::OnPacketReceived( | 
| +    const dbus::ObjectPath& object_path, | 
| +    const uint8* data, | 
| +    size_t length) { | 
| +  ObserverMap::iterator it = observer_map_.find(object_path.value()); | 
| +  if (it == observer_map_.end()) { | 
| +    LOG(ERROR) << "Unexpected OnPacketReceived for " << object_path.value(); | 
| +    return; | 
| +  } | 
| + | 
| +  it->second->OnPacketReceived(data, length); | 
| +} | 
| + | 
| +void FakeShillThirdPartyVpnDriverClient::OnPlatformMessage( | 
| +    const dbus::ObjectPath& object_path, | 
| +    uint32 message) { | 
| +  ObserverMap::iterator it = observer_map_.find(object_path.value()); | 
| +  if (it == observer_map_.end()) { | 
| +    LOG(ERROR) << "Unexpected OnPlatformMessage for " << object_path.value(); | 
| +    return; | 
| +  } | 
| + | 
| +  it->second->OnPlatformMessage(message); | 
| +} | 
| + | 
| +ShillThirdPartyVpnDriverClient::TestInterface* | 
| +FakeShillThirdPartyVpnDriverClient::GetTestInterface() { | 
| +  return this; | 
| +} | 
| + | 
| +}  // namespace chromeos | 
|  |