summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-19 23:48:02 +0000
committerchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-19 23:48:02 +0000
commit706e8fa0b6f0392c2fe206cb605f6b738a64cc6b (patch)
treee5587ac66e6a890e39c4a9d865638c50352424e8
parentcdc491e034aa38aaace2fea31a4f412709c4d21d (diff)
downloadchromium_src-706e8fa0b6f0392c2fe206cb605f6b738a64cc6b.zip
chromium_src-706e8fa0b6f0392c2fe206cb605f6b738a64cc6b.tar.gz
chromium_src-706e8fa0b6f0392c2fe206cb605f6b738a64cc6b.tar.bz2
Update icons to show lowdata and very lowdata for 3G data.
BUG=chromium-os:5608 TEST=manual Review URL: http://codereview.chromium.org/3748005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63135 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/theme/statusbar_network_3g.pngbin103 -> 2847 bytes
-rw-r--r--chrome/app/theme/statusbar_network_3g_lowdata.pngbin0 -> 103 bytes
-rw-r--r--chrome/app/theme/statusbar_network_3g_vlowdata.pngbin0 -> 2827 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars1_lowdata.pngbin0 -> 131904 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars1_vlowdata.pngbin0 -> 3016 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars2_lowdata.pngbin0 -> 3093 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars2_vlowdata.pngbin0 -> 3093 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars3_lowdata.pngbin0 -> 3095 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars3_vlowdata.pngbin0 -> 3092 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars4_lowdata.pngbin0 -> 3158 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars4_vlowdata.pngbin0 -> 3154 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars5_lowdata.pngbin0 -> 3147 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars5_vlowdata.pngbin0 -> 3150 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars6_lowdata.pngbin0 -> 3223 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars6_vlowdata.pngbin0 -> 3214 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars7_lowdata.pngbin0 -> 3203 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars7_vlowdata.pngbin0 -> 3204 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars8_lowdata.pngbin0 -> 3255 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars8_vlowdata.pngbin0 -> 3250 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars9_lowdata.pngbin0 -> 3232 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars9_vlowdata.pngbin0 -> 3228 bytes
-rw-r--r--chrome/app/theme/theme_resources.grd20
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc42
-rw-r--r--chrome/browser/chromeos/cros/network_library.h28
-rw-r--r--chrome/browser/chromeos/dom_ui/internet_options_handler.cc14
-rw-r--r--chrome/browser/chromeos/dom_ui/internet_options_handler.h3
-rw-r--r--chrome/browser/chromeos/network_message_observer.cc57
-rw-r--r--chrome/browser/chromeos/network_message_observer.h9
-rw-r--r--chrome/browser/chromeos/status/network_menu.cc101
-rw-r--r--chrome/browser/chromeos/status/network_menu.h10
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.cc33
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.h1
32 files changed, 218 insertions, 100 deletions
diff --git a/chrome/app/theme/statusbar_network_3g.png b/chrome/app/theme/statusbar_network_3g.png
index 556136f..b276ad2 100644
--- a/chrome/app/theme/statusbar_network_3g.png
+++ b/chrome/app/theme/statusbar_network_3g.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_3g_lowdata.png b/chrome/app/theme/statusbar_network_3g_lowdata.png
new file mode 100644
index 0000000..556136f
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_3g_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_3g_vlowdata.png b/chrome/app/theme/statusbar_network_3g_vlowdata.png
new file mode 100644
index 0000000..bcf46aa
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_3g_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars1_lowdata.png b/chrome/app/theme/statusbar_network_bars1_lowdata.png
new file mode 100644
index 0000000..69b6181
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars1_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars1_vlowdata.png b/chrome/app/theme/statusbar_network_bars1_vlowdata.png
new file mode 100644
index 0000000..5932ffd
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars1_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars2_lowdata.png b/chrome/app/theme/statusbar_network_bars2_lowdata.png
new file mode 100644
index 0000000..a58fc13
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars2_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars2_vlowdata.png b/chrome/app/theme/statusbar_network_bars2_vlowdata.png
new file mode 100644
index 0000000..6817f3d
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars2_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars3_lowdata.png b/chrome/app/theme/statusbar_network_bars3_lowdata.png
new file mode 100644
index 0000000..e36b8c6
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars3_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars3_vlowdata.png b/chrome/app/theme/statusbar_network_bars3_vlowdata.png
new file mode 100644
index 0000000..4e1a9038
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars3_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars4_lowdata.png b/chrome/app/theme/statusbar_network_bars4_lowdata.png
new file mode 100644
index 0000000..9e5bc94
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars4_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars4_vlowdata.png b/chrome/app/theme/statusbar_network_bars4_vlowdata.png
new file mode 100644
index 0000000..1ac34f6
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars4_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars5_lowdata.png b/chrome/app/theme/statusbar_network_bars5_lowdata.png
new file mode 100644
index 0000000..a00a902
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars5_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars5_vlowdata.png b/chrome/app/theme/statusbar_network_bars5_vlowdata.png
new file mode 100644
index 0000000..67a03fa
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars5_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars6_lowdata.png b/chrome/app/theme/statusbar_network_bars6_lowdata.png
new file mode 100644
index 0000000..dd002c8
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars6_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars6_vlowdata.png b/chrome/app/theme/statusbar_network_bars6_vlowdata.png
new file mode 100644
index 0000000..629ab40
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars6_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars7_lowdata.png b/chrome/app/theme/statusbar_network_bars7_lowdata.png
new file mode 100644
index 0000000..5ff211d
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars7_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars7_vlowdata.png b/chrome/app/theme/statusbar_network_bars7_vlowdata.png
new file mode 100644
index 0000000..40839fc
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars7_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars8_lowdata.png b/chrome/app/theme/statusbar_network_bars8_lowdata.png
new file mode 100644
index 0000000..21320fa
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars8_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars8_vlowdata.png b/chrome/app/theme/statusbar_network_bars8_vlowdata.png
new file mode 100644
index 0000000..dff8aeb
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars8_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars9_lowdata.png b/chrome/app/theme/statusbar_network_bars9_lowdata.png
new file mode 100644
index 0000000..50b6489
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars9_lowdata.png
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars9_vlowdata.png b/chrome/app/theme/statusbar_network_bars9_vlowdata.png
new file mode 100644
index 0000000..1678f03
--- /dev/null
+++ b/chrome/app/theme/statusbar_network_bars9_vlowdata.png
Binary files differ
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd
index e7d6007..ec967bc 100644
--- a/chrome/app/theme/theme_resources.grd
+++ b/chrome/app/theme/theme_resources.grd
@@ -526,25 +526,45 @@
<include name="IDR_STATUSBAR_FEEDBACK_PRESSED" file="statusbar_feedback_pressed.png" type="BINDATA" />
<include name="IDR_STATUSBAR_MENU" file="statusbar_menu.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_3G" file="statusbar_network_3g.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_3G_LOWDATA" file="statusbar_network_3g_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_3G_VLOWDATA" file="statusbar_network_3g_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS0" file="statusbar_network_bars0.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS1" file="statusbar_network_bars1.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS1_BLACK" file="statusbar_network_bars1b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS1_LOWDATA" file="statusbar_network_bars1_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS1_VLOWDATA" file="statusbar_network_bars1_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS2" file="statusbar_network_bars2.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS2_BLACK" file="statusbar_network_bars2b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS2_LOWDATA" file="statusbar_network_bars2_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS2_VLOWDATA" file="statusbar_network_bars2_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS3" file="statusbar_network_bars3.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS3_BLACK" file="statusbar_network_bars3b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS3_LOWDATA" file="statusbar_network_bars3_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS3_VLOWDATA" file="statusbar_network_bars3_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS4" file="statusbar_network_bars4.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS4_BLACK" file="statusbar_network_bars4b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS4_LOWDATA" file="statusbar_network_bars4_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS4_VLOWDATA" file="statusbar_network_bars4_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS5" file="statusbar_network_bars5.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS5_BLACK" file="statusbar_network_bars5b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS5_LOWDATA" file="statusbar_network_bars5_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS5_VLOWDATA" file="statusbar_network_bars5_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS6" file="statusbar_network_bars6.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS6_BLACK" file="statusbar_network_bars6b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS6_LOWDATA" file="statusbar_network_bars6_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS6_VLOWDATA" file="statusbar_network_bars6_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS7" file="statusbar_network_bars7.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS7_BLACK" file="statusbar_network_bars7b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS7_LOWDATA" file="statusbar_network_bars7_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS7_VLOWDATA" file="statusbar_network_bars7_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS8" file="statusbar_network_bars8.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS8_BLACK" file="statusbar_network_bars8b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS8_LOWDATA" file="statusbar_network_bars8_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS8_VLOWDATA" file="statusbar_network_bars8_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS9" file="statusbar_network_bars9.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS9_BLACK" file="statusbar_network_bars9b.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS9_LOWDATA" file="statusbar_network_bars9_lowdata.png" type="BINDATA" />
+ <include name="IDR_STATUSBAR_NETWORK_BARS9_VLOWDATA" file="statusbar_network_bars9_vlowdata.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_BARS_PRESSED" file="statusbar_network_bars_pressed.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_DISCONNECTED" file="statusbar_network_disconnected.png" type="BINDATA" />
<include name="IDR_STATUSBAR_NETWORK_EDGE" file="statusbar_network_edge.png" type="BINDATA" />
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index a5a53df..5e43c89 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -264,6 +264,35 @@ bool CellularNetwork::is_gsm() const {
network_technology_ != NETWORK_TECHNOLOGY_UNKNOWN;
}
+CellularNetwork::DataLeft CellularNetwork::data_left() const {
+ if (data_plans_.empty())
+ return DATA_NORMAL;
+ CellularDataPlan plan = data_plans_[0];
+ if (plan.plan_type == CELLULAR_DATA_PLAN_UNLIMITED) {
+ int64 remaining = plan.plan_end_time - plan.update_time;
+ if (remaining <= 0)
+ return DATA_NONE;
+ else if (remaining <= kCellularDataVeryLowSecs)
+ return DATA_VERY_LOW;
+ else if (remaining <= kCellularDataLowSecs)
+ return DATA_LOW;
+ else
+ return DATA_NORMAL;
+ } else if (plan.plan_type == CELLULAR_DATA_PLAN_METERED_PAID ||
+ plan.plan_type == CELLULAR_DATA_PLAN_METERED_BASE) {
+ int64 remaining = plan.plan_data_bytes - plan.data_bytes_used;
+ if (remaining <= 0)
+ return DATA_NONE;
+ else if (remaining <= kCellularDataVeryLowBytes)
+ return DATA_VERY_LOW;
+ else if (remaining <= kCellularDataLowBytes)
+ return DATA_LOW;
+ else
+ return DATA_NORMAL;
+ }
+ return DATA_NORMAL;
+}
+
std::string CellularNetwork::GetNetworkTechnologyString() const {
// No need to localize these cellular technology abbreviations.
switch (network_technology_) {
@@ -996,7 +1025,9 @@ class NetworkLibraryImpl : public NetworkLibrary {
test_plan.plan_type = CELLULAR_DATA_PLAN_METERED_PAID;
test_plan.update_time = base::Time::Now().ToInternalValue() /
base::Time::kMicrosecondsPerSecond;
- cellular_data_plans_.push_back(test_plan);
+ chromeos::CellularDataPlanList test_plans;
+ test_plans.push_back(test_plan);
+ cellular_.SetDataPlans(test_plans);
}
void UpdateSystemInfo() {
@@ -1055,9 +1086,7 @@ class NetworkLibraryImpl : public NetworkLibrary {
}
void NotifyCellularDataPlanChanged() {
- FOR_EACH_OBSERVER(Observer, observers_,
- CellularDataPlanChanged(cellular_.service_path(),
- cellular_data_plans_));
+ FOR_EACH_OBSERVER(Observer, observers_, CellularDataPlanChanged(this));
}
void UpdateNetworkStatus() {
@@ -1113,7 +1142,7 @@ class NetworkLibraryImpl : public NetworkLibrary {
}
void UpdateCellularDataPlan(const CellularDataPlanList& data_plans) {
- cellular_data_plans_ = data_plans;
+ cellular_.SetDataPlans(data_plans);
NotifyCellularDataPlanChanged();
}
@@ -1143,9 +1172,6 @@ class NetworkLibraryImpl : public NetworkLibrary {
// The current connected (or connecting) cellular network.
CellularNetwork cellular_;
- // The data plan for the current cellular network.
- CellularDataPlanList cellular_data_plans_;
-
// The remembered cellular networks.
CellularNetworkVector remembered_cellular_networks_;
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h
index 7f7a7b1..4a672d5 100644
--- a/chrome/browser/chromeos/cros/network_library.h
+++ b/chrome/browser/chromeos/cros/network_library.h
@@ -17,6 +17,18 @@
namespace chromeos {
+// Cellular network is considered low data when less than 60 minues.
+static const int kCellularDataLowSecs = 60 * 60;
+
+// Cellular network is considered low data when less than 30 minues.
+static const int kCellularDataVeryLowSecs = 30 * 60;
+
+// Cellular network is considered low data when less than 100MB.
+static const int kCellularDataLowBytes = 100 * 1024 * 1024;
+
+// Cellular network is considered very low data when less than 50MB.
+static const int kCellularDataVeryLowBytes = 50 * 1024 * 1024;
+
class Network {
public:
const std::string& service_path() const { return service_path_; }
@@ -118,6 +130,13 @@ class WirelessNetwork : public Network {
class CellularNetwork : public WirelessNetwork {
public:
+ enum DataLeft {
+ DATA_NORMAL,
+ DATA_LOW,
+ DATA_VERY_LOW,
+ DATA_NONE
+ };
+
CellularNetwork();
explicit CellularNetwork(const ServiceInfo& service)
: WirelessNetwork() {
@@ -150,6 +169,7 @@ class CellularNetwork : public WirelessNetwork {
const std::string& last_update() const { return last_update_; }
const unsigned int prl_version() const { return prl_version_; }
bool is_gsm() const;
+ DataLeft data_left() const;
// WirelessNetwork overrides.
virtual void Clear();
@@ -159,7 +179,7 @@ class CellularNetwork : public WirelessNetwork {
return data_plans_;
}
- void SetDataPlans(CellularDataPlanList& data_plans) {
+ void SetDataPlans(const CellularDataPlanList& data_plans) {
data_plans_ = data_plans;
}
// Return a string representation of network technology.
@@ -303,8 +323,7 @@ class NetworkLibrary {
// Called when the network has changed. (wifi networks, and ethernet)
virtual void NetworkChanged(NetworkLibrary* obj) = 0;
// Called when the cellular data plan has changed.
- virtual void CellularDataPlanChanged(const std::string& service_path,
- const CellularDataPlanList& plans) {}
+ virtual void CellularDataPlanChanged(NetworkLibrary* obj) {}
};
virtual ~NetworkLibrary() {}
@@ -388,8 +407,7 @@ class NetworkLibrary {
// Initiates cellular data plan refresh. Plan data will be passed through
// Network::Observer::CellularDataPlanChanged callback.
- virtual void RefreshCellularDataPlans(
- const CellularNetwork& network) = 0;
+ virtual void RefreshCellularDataPlans(const CellularNetwork& network) = 0;
// Disconnect from the specified wireless (either cellular or wifi) network.
virtual void DisconnectFromWirelessNetwork(
diff --git a/chrome/browser/chromeos/dom_ui/internet_options_handler.cc b/chrome/browser/chromeos/dom_ui/internet_options_handler.cc
index c98733b..b9e6fdc 100644
--- a/chrome/browser/chromeos/dom_ui/internet_options_handler.cc
+++ b/chrome/browser/chromeos/dom_ui/internet_options_handler.cc
@@ -23,7 +23,6 @@
#include "chrome/browser/browser_window.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/status/network_menu.h"
-#include "chrome/browser/chromeos/network_message_observer.h"
#include "chrome/browser/dom_ui/dom_ui_util.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_contents_view.h"
@@ -326,10 +325,11 @@ void InternetOptionsHandler::NetworkChanged(chromeos::NetworkLibrary* cros) {
}
void InternetOptionsHandler::CellularDataPlanChanged(
- const std::string& service_path,
- const chromeos::CellularDataPlanList& plans) {
+ chromeos::NetworkLibrary* obj) {
if (!dom_ui_)
return;
+ const chromeos::CellularNetwork cellular = obj->cellular_network();
+ const chromeos::CellularDataPlanList& plans = cellular.GetDataPlans();
DictionaryValue connection_plans;
ListValue* plan_list = new ListValue();
for (chromeos::CellularDataPlanList::const_iterator iter = plans.begin();
@@ -337,7 +337,7 @@ void InternetOptionsHandler::CellularDataPlanChanged(
++iter) {
plan_list->Append(CellularDataPlanToDictionary(*iter));
}
- connection_plans.SetString("servicePath", service_path);
+ connection_plans.SetString("servicePath", cellular.service_path());
connection_plans.Set("plans", plan_list);
dom_ui_->CallJavascriptFunction(
L"options.InternetOptions.updateCellularPlans", connection_plans);
@@ -416,7 +416,7 @@ string16 InternetOptionsHandler::GetPlanWarning(
if (time_left <= 0) {
return l10n_util::GetStringFUTF16(
IDS_NETWORK_MINUTES_REMAINING_MESSAGE, ASCIIToUTF16("0"));
- } else if (time_left <= chromeos::kDataNearingExpirationSecs) {
+ } else if (time_left <= chromeos::kCellularDataVeryLowSecs) {
return l10n_util::GetStringFUTF16(
IDS_NETWORK_MINUTES_UNTIL_EXPIRATION_MESSAGE,
UTF8ToUTF16(base::Int64ToString(time_left/60)));
@@ -428,10 +428,10 @@ string16 InternetOptionsHandler::GetPlanWarning(
if (bytes_remaining <= 0) {
return l10n_util::GetStringFUTF16(
IDS_NETWORK_DATA_REMAINING_MESSAGE, ASCIIToUTF16("0"));
- } else if (bytes_remaining <= chromeos::kDataLowDataBytes) {
+ } else if (bytes_remaining <= chromeos::kCellularDataVeryLowBytes) {
return l10n_util::GetStringFUTF16(
IDS_NETWORK_DATA_REMAINING_MESSAGE,
- UTF8ToUTF16(base::Int64ToString(bytes_remaining/1024)));
+ UTF8ToUTF16(base::Int64ToString(bytes_remaining/(1024*1024))));
}
}
return string16();
diff --git a/chrome/browser/chromeos/dom_ui/internet_options_handler.h b/chrome/browser/chromeos/dom_ui/internet_options_handler.h
index 658791d..f960121 100644
--- a/chrome/browser/chromeos/dom_ui/internet_options_handler.h
+++ b/chrome/browser/chromeos/dom_ui/internet_options_handler.h
@@ -30,8 +30,7 @@ class InternetOptionsHandler : public OptionsPageUIHandler,
// NetworkLibrary::Observer implementation.
virtual void NetworkChanged(chromeos::NetworkLibrary* obj);
- virtual void CellularDataPlanChanged(const std::string& service_path,
- const chromeos::CellularDataPlanList& plans);
+ virtual void CellularDataPlanChanged(chromeos::NetworkLibrary* obj);
private:
// Passes data needed to show details overlay for network.
diff --git a/chrome/browser/chromeos/network_message_observer.cc b/chrome/browser/chromeos/network_message_observer.cc
index c4df580..438f433 100644
--- a/chrome/browser/chromeos/network_message_observer.cc
+++ b/chrome/browser/chromeos/network_message_observer.cc
@@ -143,15 +143,16 @@ void NetworkMessageObserver::NetworkChanged(NetworkLibrary* obj) {
CreateModalPopup(view);
}
-void NetworkMessageObserver::CellularDataPlanChanged(
- const std::string& service_path, const CellularDataPlanList& plans) {
+void NetworkMessageObserver::CellularDataPlanChanged(NetworkLibrary* obj) {
+ const CellularNetwork& cellular = obj->cellular_network();
// Active plan is the first one in the list. Use empty one if none found.
+ const CellularDataPlanList& plans = cellular.GetDataPlans();
CellularDataPlan plan = plans.empty() ? CellularDataPlan() : plans[0];
// If connected cellular network changed, or data plan is different, then
// it's a new network. Then hide all previous notifications.
bool new_plan = false;
- if (service_path != cellular_service_path_) {
- cellular_service_path_ = service_path;
+ if (cellular.service_path() != cellular_service_path_) {
+ cellular_service_path_ = cellular.service_path();
new_plan = true;
} else if (plan.plan_name != cellular_data_plan_.plan_name ||
plan.plan_type != cellular_data_plan_.plan_type) {
@@ -178,50 +179,32 @@ void NetworkMessageObserver::CellularDataPlanChanged(
}
}
- if (plan.plan_type == CELLULAR_DATA_PLAN_UNLIMITED) {
- // Time based plan. Show nearing expiration and data expiration.
- int64 time_left = plan.plan_end_time - plan.update_time;
- if (time_left <= 0) {
+ if (plan.plan_type != CELLULAR_DATA_PLAN_UNKNOWN) {
+ if (cellular.data_left() == CellularNetwork::DATA_NONE) {
notification_low_data_.Hide();
+ int message = plan.plan_type == CELLULAR_DATA_PLAN_UNLIMITED ?
+ IDS_NETWORK_MINUTES_REMAINING_MESSAGE :
+ IDS_NETWORK_DATA_REMAINING_MESSAGE;
notification_no_data_.Show(l10n_util::GetStringFUTF16(
- IDS_NETWORK_MINUTES_REMAINING_MESSAGE, ASCIIToUTF16("0")),
+ message, ASCIIToUTF16("0")),
l10n_util::GetStringUTF16(IDS_NETWORK_PURCHASE_MORE_MESSAGE),
NewCallback(this, &NetworkMessageObserver::MobileSetup),
false, false);
- } else if (time_left <= kDataNearingExpirationSecs) {
+ } else if (cellular.data_left() == CellularNetwork::DATA_VERY_LOW) {
notification_no_data_.Hide();
+ int message = plan.plan_type == CELLULAR_DATA_PLAN_UNLIMITED ?
+ IDS_NETWORK_MINUTES_REMAINING_MESSAGE :
+ IDS_NETWORK_DATA_REMAINING_MESSAGE;
+ int64 remaining = plan.plan_type == CELLULAR_DATA_PLAN_UNLIMITED ?
+ (plan.plan_end_time - plan.update_time) / 60 :
+ (plan.plan_data_bytes - plan.data_bytes_used) / (1024 * 1024);
notification_low_data_.Show(l10n_util::GetStringFUTF16(
- IDS_NETWORK_MINUTES_UNTIL_EXPIRATION_MESSAGE,
- UTF8ToUTF16(base::Int64ToString(time_left/60))),
+ message, UTF8ToUTF16(base::Int64ToString(remaining))),
l10n_util::GetStringUTF16(IDS_NETWORK_PURCHASE_MORE_MESSAGE),
NewCallback(this, &NetworkMessageObserver::MobileSetup),
false, false);
} else {
- // Got more data, so hide notifications.
- notification_low_data_.Hide();
- notification_no_data_.Hide();
- }
- } else if (plan.plan_type == CELLULAR_DATA_PLAN_METERED_PAID ||
- plan.plan_type == CELLULAR_DATA_PLAN_METERED_BASE) {
- // Metered plan. Show low data and out of data.
- int64 bytes_remaining = plan.plan_data_bytes - plan.data_bytes_used;
- if (bytes_remaining <= 0) {
- notification_low_data_.Hide();
- notification_no_data_.Show(l10n_util::GetStringFUTF16(
- IDS_NETWORK_DATA_REMAINING_MESSAGE, ASCIIToUTF16("0")),
- l10n_util::GetStringUTF16(IDS_NETWORK_PURCHASE_MORE_MESSAGE),
- NewCallback(this, &NetworkMessageObserver::MobileSetup),
- false, false);
- } else if (bytes_remaining <= kDataLowDataBytes) {
- notification_no_data_.Hide();
- notification_low_data_.Show(l10n_util::GetStringFUTF16(
- IDS_NETWORK_DATA_REMAINING_MESSAGE,
- UTF8ToUTF16(base::Int64ToString(bytes_remaining/1024))),
- l10n_util::GetStringUTF16(IDS_NETWORK_PURCHASE_MORE_MESSAGE),
- NewCallback(this, &NetworkMessageObserver::MobileSetup),
- false, false);
- } else {
- // Got more data, so hide notifications.
+ // Got data, so hide notifications.
notification_low_data_.Hide();
notification_no_data_.Hide();
}
diff --git a/chrome/browser/chromeos/network_message_observer.h b/chrome/browser/chromeos/network_message_observer.h
index c92f6e2..8cf603a 100644
--- a/chrome/browser/chromeos/network_message_observer.h
+++ b/chrome/browser/chromeos/network_message_observer.h
@@ -20,12 +20,6 @@ class WindowDelegate;
namespace chromeos {
-// We show nearing expiration notification when less than 30 minutes.
-static const int kDataNearingExpirationSecs = 30 * 60;
-
-// We show low data notification when less than 50MB.
-static const int kDataLowDataBytes = 50 * 1024;
-
// The network message observer displays a system notification for network
// messages.
@@ -42,8 +36,7 @@ class NetworkMessageObserver : public NetworkLibrary::Observer {
// NetworkLibrary::Observer implementation.
virtual void NetworkChanged(NetworkLibrary* obj);
- virtual void CellularDataPlanChanged(const std::string& service_path,
- const CellularDataPlanList& plans);
+ virtual void CellularDataPlanChanged(NetworkLibrary* obj);
bool initialized_;
// Wifi networks by service path.
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc
index d23e7ff..ad9caf2 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -45,6 +45,57 @@ namespace chromeos {
// static
const int NetworkMenu::kNumWifiImages = 9;
+// NOTE: Use an array rather than just calculating a resource number to avoid
+// creating implicit ordering dependencies on the resource values.
+// static
+const int NetworkMenu::kBarsImages[kNumWifiImages] = {
+ IDR_STATUSBAR_NETWORK_BARS1,
+ IDR_STATUSBAR_NETWORK_BARS2,
+ IDR_STATUSBAR_NETWORK_BARS3,
+ IDR_STATUSBAR_NETWORK_BARS4,
+ IDR_STATUSBAR_NETWORK_BARS5,
+ IDR_STATUSBAR_NETWORK_BARS6,
+ IDR_STATUSBAR_NETWORK_BARS7,
+ IDR_STATUSBAR_NETWORK_BARS8,
+ IDR_STATUSBAR_NETWORK_BARS9,
+};
+// static
+const int NetworkMenu::kBarsImagesBlack[kNumWifiImages] = {
+ IDR_STATUSBAR_NETWORK_BARS1_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS2_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS3_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS4_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS5_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS6_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS7_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS8_BLACK,
+ IDR_STATUSBAR_NETWORK_BARS9_BLACK,
+};
+// static
+const int NetworkMenu::kBarsImagesLowData[kNumWifiImages] = {
+ IDR_STATUSBAR_NETWORK_BARS1_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS2_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS3_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS4_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS5_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS6_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS7_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS8_LOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS9_LOWDATA,
+};
+// static
+const int NetworkMenu::kBarsImagesVLowData[kNumWifiImages] = {
+ IDR_STATUSBAR_NETWORK_BARS1_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS2_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS3_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS4_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS5_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS6_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS7_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS8_VLOWDATA,
+ IDR_STATUSBAR_NETWORK_BARS9_VLOWDATA,
+};
+
NetworkMenu::NetworkMenu()
: min_width_(-1) {
network_menu_.reset(NetworkMenuUI::CreateMenu2(this));
@@ -320,36 +371,32 @@ void NetworkMenu::UpdateMenu() {
// static
SkBitmap NetworkMenu::IconForNetworkStrength(int strength, bool black) {
// Compose wifi icon by superimposing various icons.
- // NOTE: Use an array rather than just calculating a resource number to avoid
- // creating implicit ordering dependencies on the resource values.
- static const int kBarsImages[kNumWifiImages] = {
- IDR_STATUSBAR_NETWORK_BARS1,
- IDR_STATUSBAR_NETWORK_BARS2,
- IDR_STATUSBAR_NETWORK_BARS3,
- IDR_STATUSBAR_NETWORK_BARS4,
- IDR_STATUSBAR_NETWORK_BARS5,
- IDR_STATUSBAR_NETWORK_BARS6,
- IDR_STATUSBAR_NETWORK_BARS7,
- IDR_STATUSBAR_NETWORK_BARS8,
- IDR_STATUSBAR_NETWORK_BARS9,
- };
- static const int kBarsBlackImages[kNumWifiImages] = {
- IDR_STATUSBAR_NETWORK_BARS1_BLACK,
- IDR_STATUSBAR_NETWORK_BARS2_BLACK,
- IDR_STATUSBAR_NETWORK_BARS3_BLACK,
- IDR_STATUSBAR_NETWORK_BARS4_BLACK,
- IDR_STATUSBAR_NETWORK_BARS5_BLACK,
- IDR_STATUSBAR_NETWORK_BARS6_BLACK,
- IDR_STATUSBAR_NETWORK_BARS7_BLACK,
- IDR_STATUSBAR_NETWORK_BARS8_BLACK,
- IDR_STATUSBAR_NETWORK_BARS9_BLACK,
- };
-
int index = static_cast<int>(strength / 100.0 *
nextafter(static_cast<float>(kNumWifiImages), 0));
index = std::max(std::min(index, kNumWifiImages - 1), 0);
- return *ResourceBundle::GetSharedInstance().GetBitmapNamed(
- black ? kBarsBlackImages[index] : kBarsImages[index]);
+ const int* images = black ? kBarsImagesBlack : kBarsImages;
+ return *ResourceBundle::GetSharedInstance().GetBitmapNamed(images[index]);
+}
+
+SkBitmap NetworkMenu::IconForNetworkStrength(CellularNetwork cellular) {
+ // Compose wifi icon by superimposing various icons.
+ int index = static_cast<int>(cellular.strength() / 100.0 *
+ nextafter(static_cast<float>(kNumWifiImages), 0));
+ index = std::max(std::min(index, kNumWifiImages - 1), 0);
+ const int* images;
+ switch (cellular.data_left()) {
+ case CellularNetwork::DATA_NONE:
+ case CellularNetwork::DATA_VERY_LOW:
+ images = kBarsImagesVLowData;
+ break;
+ case CellularNetwork::DATA_LOW:
+ images = kBarsImagesLowData;
+ break;
+ case CellularNetwork::DATA_NORMAL:
+ images = kBarsImages;
+ break;
+ }
+ return *ResourceBundle::GetSharedInstance().GetBitmapNamed(images[index]);
}
// static
diff --git a/chrome/browser/chromeos/status/network_menu.h b/chrome/browser/chromeos/status/network_menu.h
index 8419cfe..3c8d322 100644
--- a/chrome/browser/chromeos/status/network_menu.h
+++ b/chrome/browser/chromeos/status/network_menu.h
@@ -114,6 +114,10 @@ class NetworkMenu : public views::ViewMenuDelegate,
// on a light background or a white icon for display on a dark background.
static SkBitmap IconForNetworkStrength(int strength, bool black);
+ // Returns the Icon for a network strength for CellularNetwork |cellular|.
+ // This returns different colored bars depending on cellular data left.
+ static SkBitmap IconForNetworkStrength(CellularNetwork cellular);
+
// This method will convert the |icon| bitmap to the correct size for display.
// If the |badge| icon is not empty, it will draw that on top of the icon.
static SkBitmap IconForDisplay(SkBitmap icon, SkBitmap badge);
@@ -190,6 +194,12 @@ class NetworkMenu : public views::ViewMenuDelegate,
// The number of wifi strength images.
static const int kNumWifiImages;
+ // Bars image resources.
+ static const int kBarsImages[];
+ static const int kBarsImagesBlack[];
+ static const int kBarsImagesLowData[];
+ static const int kBarsImagesVLowData[];
+
// Our menu items.
MenuItemVector menu_items_;
diff --git a/chrome/browser/chromeos/status/network_menu_button.cc b/chrome/browser/chromeos/status/network_menu_button.cc
index c16383e..3d43f18 100644
--- a/chrome/browser/chromeos/status/network_menu_button.cc
+++ b/chrome/browser/chromeos/status/network_menu_button.cc
@@ -120,11 +120,16 @@ void NetworkMenuButton::NetworkChanged(NetworkLibrary* cros) {
IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
UTF8ToWide(cros->wifi_network().name())));
} else if (cros->cellular_connected()) {
- SetIcon(IconForNetworkStrength(
- cros->cellular_network().strength(), false));
+ const CellularNetwork& cellular = cros->cellular_network();
+ if (cellular.data_left() == CellularNetwork::DATA_NONE) {
+ // If no data, then we show 0 bars.
+ SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
+ } else {
+ SetIcon(IconForNetworkStrength(cellular));
+ }
SetTooltipText(l10n_util::GetStringF(
IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
- UTF8ToWide(cros->cellular_network().name())));
+ UTF8ToWide(cellular.name())));
} else {
SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
SetTooltipText(l10n_util::GetString(
@@ -136,9 +141,20 @@ void NetworkMenuButton::NetworkChanged(NetworkLibrary* cros) {
SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED));
} else if (!cros->ethernet_connected() && !cros->wifi_connected() &&
(cros->cellular_connecting() || cros->cellular_connected())) {
- // TODO(chocobo): Check cellular network 3g/edge.
- SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G));
-// SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE));
+ int id;
+ switch (cros->cellular_network().data_left()) {
+ case CellularNetwork::DATA_NONE:
+ case CellularNetwork::DATA_VERY_LOW:
+ id = IDR_STATUSBAR_NETWORK_3G_VLOWDATA;
+ break;
+ case CellularNetwork::DATA_LOW:
+ id = IDR_STATUSBAR_NETWORK_3G_LOWDATA;
+ break;
+ case CellularNetwork::DATA_NORMAL:
+ id = IDR_STATUSBAR_NETWORK_3G;
+ break;
+ }
+ SetBadge(*rb.GetBitmapNamed(id));
} else {
SetBadge(SkBitmap());
}
@@ -153,6 +169,11 @@ void NetworkMenuButton::NetworkChanged(NetworkLibrary* cros) {
UpdateMenu();
}
+void NetworkMenuButton::CellularDataPlanChanged(NetworkLibrary* cros) {
+ // Call NetworkChanged which will update the icon.
+ NetworkChanged(cros);
+}
+
void NetworkMenuButton::SetBadge(const SkBitmap& badge) {
badge_ = badge;
}
diff --git a/chrome/browser/chromeos/status/network_menu_button.h b/chrome/browser/chromeos/status/network_menu_button.h
index bb5ff96..79c5cdb 100644
--- a/chrome/browser/chromeos/status/network_menu_button.h
+++ b/chrome/browser/chromeos/status/network_menu_button.h
@@ -56,6 +56,7 @@ class NetworkMenuButton : public StatusAreaButton,
// NetworkLibrary::Observer implementation.
virtual void NetworkChanged(NetworkLibrary* obj);
+ virtual void CellularDataPlanChanged(NetworkLibrary* obj);
// Sets the badge icon.
void SetBadge(const SkBitmap& badge);