0

Request VPN list in TrayNetworkStateModel

Currently we do not show the VPN feature pod unless a VPN is connected.
This fixes that by requesting the list of configured VPNs and showing
the button if any exist.

Bug: 982222
Change-Id: I939f2eb9ee74771c47468aad7256b5884640cc5e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1815222
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Auto-Submit: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Kyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#698530}
This commit is contained in:
Steven Bennetts
2019-09-20 17:30:27 +00:00
committed by Commit Bot
parent c0fadd6bd6
commit aa19e2ff73
3 changed files with 25 additions and 1 deletions

@ -59,6 +59,8 @@ TrayNetworkStateModel::TrayNetworkStateModel()
cros_network_config_observer_receiver_.Bind(mojo::MakeRequest(&observer_ptr));
remote_cros_network_config_->AddObserver(std::move(observer_ptr));
GetActiveNetworks();
GetVirtualNetworks();
GetDeviceStateList();
}
@ -105,6 +107,7 @@ void TrayNetworkStateModel::OnNetworkStateChanged(
void TrayNetworkStateModel::OnNetworkStateListChanged() {
NotifyNetworkListChanged();
GetVirtualNetworks();
}
void TrayNetworkStateModel::OnDeviceStateListChanged() {
@ -195,6 +198,20 @@ void TrayNetworkStateModel::UpdateActiveNetworks(
GetConnectingOrConnected(connecting_non_cellular, connected_non_cellular);
}
void TrayNetworkStateModel::GetVirtualNetworks() {
DCHECK(remote_cros_network_config_);
remote_cros_network_config_->GetNetworkStateList(
NetworkFilter::New(FilterType::kConfigured, NetworkType::kVPN,
/*limit=*/0),
base::BindOnce(&TrayNetworkStateModel::OnGetVirtualNetworks,
base::Unretained(this)));
}
void TrayNetworkStateModel::OnGetVirtualNetworks(
std::vector<NetworkStatePropertiesPtr> networks) {
has_vpn_ = !networks.empty();
}
void TrayNetworkStateModel::NotifyNetworkListChanged() {
if (timer_.IsRunning())
return;

@ -64,6 +64,7 @@ class ASH_EXPORT TrayNetworkStateModel
const {
return active_vpn_.get();
}
bool has_vpn() const { return has_vpn_; }
private:
// CrosNetworkConfigObserver
@ -87,6 +88,11 @@ class ASH_EXPORT TrayNetworkStateModel
std::vector<chromeos::network_config::mojom::NetworkStatePropertiesPtr>
networks);
void GetVirtualNetworks();
void OnGetVirtualNetworks(
std::vector<chromeos::network_config::mojom::NetworkStatePropertiesPtr>
networks);
void NotifyNetworkListChanged();
void SendActiveNetworkStateChanged();
void SendNetworkListChanged();
@ -114,6 +120,7 @@ class ASH_EXPORT TrayNetworkStateModel
active_non_cellular_;
chromeos::network_config::mojom::NetworkStatePropertiesPtr active_cellular_;
chromeos::network_config::mojom::NetworkStatePropertiesPtr active_vpn_;
bool has_vpn_ = false;
DISALLOW_COPY_AND_ASSIGN(TrayNetworkStateModel);
};

@ -36,7 +36,7 @@ bool IsVPNVisibleInSystemTray() {
return true;
// Also show the VPN entry if at least one VPN network is configured.
return Shell::Get()->system_tray_model()->network_state_model()->active_vpn();
return Shell::Get()->system_tray_model()->network_state_model()->has_vpn();
}
} // namespace