11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/services/gcm/chromeos_gcm_connection_observer.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/logging.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chromeos/dbus/dbus_thread_manager.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chromeos/dbus/shill_manager_client.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace gcm {
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeOSGCMConnectionObserver::ChromeOSGCMConnectionObserver() {
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeOSGCMConnectionObserver::~ChromeOSGCMConnectionObserver() {
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ChromeOSGCMConnectionObserver::ErrorCallback(
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const std::string& error_name,
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const std::string& error) {
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  LOG(ERROR) << "GCM D-Bus method error " << error_name << ": " << error;
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ChromeOSGCMConnectionObserver::OnConnected(
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const net::IPEndPoint& ip_endpoint) {
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ip_endpoint_ = ip_endpoint;
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  chromeos::DBusThreadManager::Get()->
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      GetShillManagerClient()->
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      AddWakeOnPacketConnection(
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          ip_endpoint,
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          base::Bind(&base::DoNothing),
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          base::Bind(&ChromeOSGCMConnectionObserver::ErrorCallback));
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ChromeOSGCMConnectionObserver::OnDisconnected() {
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  chromeos::DBusThreadManager::Get()->
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      GetShillManagerClient()->
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      RemoveWakeOnPacketConnection(
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          ip_endpoint_,
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          base::Bind(&base::DoNothing),
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          base::Bind(&ChromeOSGCMConnectionObserver::ErrorCallback));
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace gcm
48