| Index: ash/common/system/chromeos/network/vpn_list_view.cc
|
| diff --git a/ash/common/system/chromeos/network/vpn_list_view.cc b/ash/common/system/chromeos/network/vpn_list_view.cc
|
| index c1c1c6e7fa384fcddbd46a1a0069458646c42ea7..efd85704714dae23aac226620199ff58638607bf 100644
|
| --- a/ash/common/system/chromeos/network/vpn_list_view.cc
|
| +++ b/ash/common/system/chromeos/network/vpn_list_view.cc
|
| @@ -58,6 +58,9 @@ bool UseMd() {
|
| return MaterialDesignController::IsSystemTrayMenuMaterial();
|
| }
|
|
|
| +void IgnoreDisconnectError(const std::string& error_name,
|
| + std::unique_ptr<base::DictionaryValue> error_data) {}
|
| +
|
| // Indicates whether |network| belongs to this VPN provider.
|
| bool VpnProviderMatchesNetwork(const VPNProvider& provider,
|
| const chromeos::NetworkState& network) {
|
| @@ -156,6 +159,9 @@ class VPNListNetworkEntry : public VPNListEntryBase,
|
| // network_icon::AnimationObserver:
|
| void NetworkIconChanged() override;
|
|
|
| + // views::ButtonListener:
|
| + void ButtonPressed(Button* sender, const ui::Event& event) override;
|
| +
|
| private:
|
| void UpdateFromNetworkState(const chromeos::NetworkState* network);
|
| void SetupConnectedItemMd(const base::string16& text,
|
| @@ -192,6 +198,26 @@ void VPNListNetworkEntry::NetworkIconChanged() {
|
| ->GetNetworkStateFromGuid(guid_));
|
| }
|
|
|
| +void VPNListNetworkEntry::ButtonPressed(Button* sender,
|
| + const ui::Event& event) {
|
| + if (sender != disconnect_button_) {
|
| + VPNListEntryBase::ButtonPressed(sender, event);
|
| + return;
|
| + }
|
| +
|
| + const chromeos::NetworkState* network = chromeos::NetworkHandler::Get()
|
| + ->network_state_handler()
|
| + ->GetNetworkStateFromGuid(guid_);
|
| + if (!network)
|
| + return;
|
| + WmShell::Get()->RecordUserMetricsAction(
|
| + UMA_STATUS_AREA_VPN_DISCONNECT_CLICKED);
|
| + chromeos::NetworkHandler::Get()
|
| + ->network_connection_handler()
|
| + ->DisconnectNetwork(network->path(), base::Bind(&base::DoNothing),
|
| + base::Bind(&IgnoreDisconnectError));
|
| +}
|
| +
|
| void VPNListNetworkEntry::UpdateFromNetworkState(
|
| const chromeos::NetworkState* network) {
|
| if (network && network->IsConnectingState())
|
|
|