chromium/chromeos/ash/components/network/network_configuration_observer.h

// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_CONFIGURATION_OBSERVER_H_
#define CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_CONFIGURATION_OBSERVER_H_

#include <string>

#include "base/component_export.h"
#include "base/values.h"

namespace ash {

// Observer class for network configuration events (remove only).
class COMPONENT_EXPORT(CHROMEOS_NETWORK) NetworkConfigurationObserver {
 public:
  NetworkConfigurationObserver& operator=(const NetworkConfigurationObserver&) =
      delete;

  // Called after a new network configuration is created successfully.
  virtual void OnConfigurationCreated(const std::string& service_path,
                                      const std::string& guid);

  // Called whenever properties on a network configuration are modified.
  virtual void OnConfigurationModified(const std::string& service_path,
                                       const std::string& guid,
                                       const base::Value::Dict* set_properties);

  // Called before a delete is attempted.
  virtual void OnBeforeConfigurationRemoved(const std::string& service_path,
                                            const std::string& guid);

  // Called whenever a network configuration is removed. |service_path|
  // provides the Shill current identifier for the network. |guid| will be set
  // to the corresponding GUID for the network if known at the time of removal,
  // otherwise it will be empty.
  virtual void OnConfigurationRemoved(const std::string& service_path,
                                      const std::string& guid);

  // Called just before the object is destroyed so that observers
  // can safely stop observing.
  virtual void OnShuttingDown();

 protected:
  virtual ~NetworkConfigurationObserver();
};

}  // namespace ash

#endif  // CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_CONFIGURATION_OBSERVER_H_