blob: b040e70e291cf3a18b8d8f159cc433428f2fe8df [file] [log] [blame]
// Copyright 2015 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.
#ifndef ASH_SYSTEM_NETWORKING_CONFIG_DELEGATE_H_
#define ASH_SYSTEM_NETWORKING_CONFIG_DELEGATE_H_
#include <memory>
#include <string>
#include "ash/ash_export.h"
#include "base/macros.h"
namespace ash {
// This delegate allows the UI code in ash, e.g. |NetworkStateListDetailedView|,
// to access the |NetworkingConfigService| in order to determine whether the
// configuration of a network identified by its |guid| is controlled by
// an extension.
// TODO(crbug.com/651157): Eliminate this delegate. Information about extension
// controlled networks should be provided by a mojo service that caches data at
// the NetworkState level.
class NetworkingConfigDelegate {
public:
// A struct that provides information about the extension controlling the
// configuration of a network.
struct ASH_EXPORT ExtensionInfo {
ExtensionInfo(const std::string& id, const std::string& name);
~ExtensionInfo();
std::string extension_id;
std::string extension_name;
};
virtual ~NetworkingConfigDelegate() {}
// Returns information about the extension registered to control configuration
// of the network |guid|. Returns null if no extension is registered.
virtual std::unique_ptr<const ExtensionInfo> LookUpExtensionForNetwork(
const std::string& guid) = 0;
private:
DISALLOW_ASSIGN(NetworkingConfigDelegate);
};
} // namespace ash
#endif // ASH_SYSTEM_NETWORKING_CONFIG_DELEGATE_H_