Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2083)

Unified Diff: ash/system/network/vpn_list_view.cc

Issue 2853143002: Simplify code for VPN entries in system menu (Closed)
Patch Set: Removed unnecessary return Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/system/network/vpn_list_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/network/vpn_list_view.cc
diff --git a/ash/system/network/vpn_list_view.cc b/ash/system/network/vpn_list_view.cc
index e55d64b07f7b1266119e47f5d1521a71bcf84498..c2a6c8d45b0f4776712ad95b57b34a8af527e6b4 100644
--- a/ash/system/network/vpn_list_view.cc
+++ b/ash/system/network/vpn_list_view.cc
@@ -25,6 +25,7 @@
#include "ash/system/tray/tray_constants.h"
#include "ash/system/tray/tray_popup_utils.h"
#include "ash/system/tray/tri_view.h"
+#include "ash/system/tray/view_click_listener.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/logging.h"
@@ -67,25 +68,14 @@ bool VpnProviderMatchesNetwork(const VPNProvider& provider,
provider.extension_id;
}
-// The base class of all list entries, a |HoverHighlightView| with no border.
-class VPNListEntryBase : public HoverHighlightView {
- public:
- // When the user clicks the entry, the |parent|'s OnViewClicked() will be
- // invoked.
- explicit VPNListEntryBase(VPNListView* parent);
-
- private:
- DISALLOW_COPY_AND_ASSIGN(VPNListEntryBase);
-};
-
// A list entry that represents a VPN provider.
class VPNListProviderEntry : public views::ButtonListener, public views::View {
public:
- VPNListProviderEntry(ViewClickListener* parent,
+ VPNListProviderEntry(const VPNProvider& vpn_provider,
bool top_item,
const std::string& name,
int button_accessible_name_id)
- : parent_(parent) {
+ : vpn_provider_(vpn_provider) {
TrayPopupUtils::ConfigureAsStickyHeader(this);
SetLayoutManager(new views::FillLayout);
TriView* tri_view = TrayPopupUtils::CreateSubHeaderRowView(false);
@@ -112,12 +102,23 @@ class VPNListProviderEntry : public views::ButtonListener, public views::View {
protected:
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override {
- parent_->OnViewClicked(this);
+ // If the user clicks on a provider entry, request that the "add network"
+ // dialog for this provider be shown.
+ if (vpn_provider_.third_party) {
+ ShellPort::Get()->RecordUserMetricsAction(
+ UMA_STATUS_AREA_VPN_ADD_THIRD_PARTY_CLICKED);
+ Shell::Get()->system_tray_controller()->ShowThirdPartyVpnCreate(
+ vpn_provider_.extension_id);
+ } else {
+ ShellPort::Get()->RecordUserMetricsAction(
+ UMA_STATUS_AREA_VPN_ADD_BUILT_IN_CLICKED);
+ Shell::Get()->system_tray_controller()->ShowNetworkCreate(
+ shill::kTypeVPN);
+ }
}
private:
- // Our parent to handle events.
- ViewClickListener* parent_;
+ const VPNProvider vpn_provider_;
DISALLOW_COPY_AND_ASSIGN(VPNListProviderEntry);
};
@@ -126,10 +127,10 @@ class VPNListProviderEntry : public views::ButtonListener, public views::View {
// connecting, the icon shown by this list entry will be animated. If the
// network is currently connected, a disconnect button will be shown next to its
// name.
-class VPNListNetworkEntry : public VPNListEntryBase,
+class VPNListNetworkEntry : public HoverHighlightView,
public network_icon::AnimationObserver {
public:
- VPNListNetworkEntry(VPNListView* parent,
+ VPNListNetworkEntry(ViewClickListener* listener,
const chromeos::NetworkState* network);
~VPNListNetworkEntry() override;
@@ -153,12 +154,9 @@ class VPNListNetworkEntry : public VPNListEntryBase,
DISALLOW_COPY_AND_ASSIGN(VPNListNetworkEntry);
};
-VPNListEntryBase::VPNListEntryBase(VPNListView* parent)
- : HoverHighlightView(parent) {}
-
-VPNListNetworkEntry::VPNListNetworkEntry(VPNListView* parent,
+VPNListNetworkEntry::VPNListNetworkEntry(ViewClickListener* listener,
const chromeos::NetworkState* network)
- : VPNListEntryBase(parent), guid_(network->guid()) {
+ : HoverHighlightView(listener), guid_(network->guid()) {
UpdateFromNetworkState(network);
}
@@ -175,7 +173,7 @@ void VPNListNetworkEntry::NetworkIconChanged() {
void VPNListNetworkEntry::ButtonPressed(Button* sender,
const ui::Event& event) {
if (sender != disconnect_button_) {
- VPNListEntryBase::ButtonPressed(sender, event);
+ HoverHighlightView::ButtonPressed(sender, event);
return;
}
@@ -337,34 +335,8 @@ void VPNListView::OnVPNProvidersChanged() {
Update();
}
-void VPNListView::OnViewClicked(views::View* sender) {
- const auto& provider_iter = provider_view_map_.find(sender);
- if (provider_iter != provider_view_map_.end()) {
- // If the user clicks on a provider entry, request that the "add network"
- // dialog for this provider be shown.
- const VPNProvider& provider = provider_iter->second;
- if (provider.third_party) {
- ShellPort::Get()->RecordUserMetricsAction(
- UMA_STATUS_AREA_VPN_ADD_THIRD_PARTY_CLICKED);
- Shell::Get()->system_tray_controller()->ShowThirdPartyVpnCreate(
- provider.extension_id);
- } else {
- ShellPort::Get()->RecordUserMetricsAction(
- UMA_STATUS_AREA_VPN_ADD_BUILT_IN_CLICKED);
- Shell::Get()->system_tray_controller()->ShowNetworkCreate(
- shill::kTypeVPN);
- }
- return;
- }
-
- // If the user clicked on a network entry, let the |delegate_| trigger a
- // connection attempt (if the network is currently disconnected) or show a
- // configuration dialog (if the network is currently connected or connecting).
- detailed_view()->OnNetworkEntryClicked(sender);
-}
-
void VPNListView::AddNetwork(const chromeos::NetworkState* network) {
- views::View* entry(new VPNListNetworkEntry(this, network));
+ views::View* entry(new VPNListNetworkEntry(detailed_view(), network));
container()->AddChildView(entry);
network_view_guid_map_[entry] = network->guid();
list_empty_ = false;
@@ -383,7 +355,7 @@ void VPNListView::AddProviderAndNetworks(
// Add a list entry for the VPN provider.
views::View* provider_view = nullptr;
- provider_view = new VPNListProviderEntry(this, list_empty_, vpn_name,
+ provider_view = new VPNListProviderEntry(vpn_provider, list_empty_, vpn_name,
IDS_ASH_STATUS_TRAY_ADD_CONNECTION);
container()->AddChildView(provider_view);
provider_view_map_[provider_view] = vpn_provider;
« no previous file with comments | « ash/system/network/vpn_list_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698