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

Unified Diff: ash/system/chromeos/network/tray_network_state_observer.cc

Issue 811623002: Add logging for slow device events, limit network UI update rate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@patch_441650
Patch Set: Feedback Created 6 years 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/chromeos/network/tray_network_state_observer.h ('k') | ash/system/chromeos/network/tray_vpn.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/chromeos/network/tray_network_state_observer.cc
diff --git a/ash/system/chromeos/network/tray_network_state_observer.cc b/ash/system/chromeos/network/tray_network_state_observer.cc
index 4239be295bbdc7a8d52beb56e91caa4608058cfe..8ec157a6f341656ba56ff27118a79f9fccafe4b5 100644
--- a/ash/system/chromeos/network/tray_network_state_observer.cc
+++ b/ash/system/chromeos/network/tray_network_state_observer.cc
@@ -8,6 +8,7 @@
#include <string>
#include "base/location.h"
+#include "chromeos/device_event_log.h"
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
@@ -15,37 +16,43 @@
using chromeos::NetworkHandler;
+namespace {
+
+const int kUpdateFrequencyMs = 1000;
+
+} // namespace
+
namespace ash {
TrayNetworkStateObserver::TrayNetworkStateObserver(Delegate* delegate)
- : delegate_(delegate) {
+ : delegate_(delegate), purge_icons_(false) {
if (NetworkHandler::IsInitialized()) {
- NetworkHandler::Get()->network_state_handler()->AddObserver(
- this, FROM_HERE);
+ NetworkHandler::Get()->network_state_handler()->AddObserver(this,
+ FROM_HERE);
}
}
TrayNetworkStateObserver::~TrayNetworkStateObserver() {
if (NetworkHandler::IsInitialized()) {
- NetworkHandler::Get()->network_state_handler()->RemoveObserver(
- this, FROM_HERE);
+ NetworkHandler::Get()->network_state_handler()->RemoveObserver(this,
+ FROM_HERE);
}
}
void TrayNetworkStateObserver::NetworkListChanged() {
- delegate_->NetworkStateChanged(true);
- ui::network_icon::PurgeNetworkIconCache();
+ purge_icons_ = true;
+ SignalUpdate();
}
void TrayNetworkStateObserver::DeviceListChanged() {
- delegate_->NetworkStateChanged(false);
+ SignalUpdate();
}
// Any change to the Default (primary connected) network, including Strength
// changes, should trigger a NetworkStateChanged update.
void TrayNetworkStateObserver::DefaultNetworkChanged(
const chromeos::NetworkState* network) {
- delegate_->NetworkStateChanged(true);
+ SignalUpdate();
}
// Any change to the Connection State should trigger a NetworkStateChanged
@@ -53,7 +60,7 @@ void TrayNetworkStateObserver::DefaultNetworkChanged(
// connected.
void TrayNetworkStateObserver::NetworkConnectionStateChanged(
const chromeos::NetworkState* network) {
- delegate_->NetworkStateChanged(true);
+ SignalUpdate();
}
// This tracks Strength and other property changes for all networks. It will
@@ -61,13 +68,22 @@ void TrayNetworkStateObserver::NetworkConnectionStateChanged(
// changes.
void TrayNetworkStateObserver::NetworkPropertiesUpdated(
const chromeos::NetworkState* network) {
- if (network ==
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork()) {
- // Trigger NetworkStateChanged in case the Strength property of the
- // Default network changed.
- delegate_->NetworkStateChanged(true);
+ SignalUpdate();
+}
+
+void TrayNetworkStateObserver::SignalUpdate() {
+ if (timer_.IsRunning())
+ return;
+ timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(kUpdateFrequencyMs),
+ this, &TrayNetworkStateObserver::SendNetworkStateChanged);
+}
+
+void TrayNetworkStateObserver::SendNetworkStateChanged() {
+ delegate_->NetworkStateChanged();
+ if (purge_icons_) {
+ ui::network_icon::PurgeNetworkIconCache();
+ purge_icons_ = false;
}
- delegate_->NetworkServiceChanged(network);
}
} // namespace ash
« no previous file with comments | « ash/system/chromeos/network/tray_network_state_observer.h ('k') | ash/system/chromeos/network/tray_vpn.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698