diff options
author | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-04 17:31:16 +0000 |
---|---|---|
committer | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-04 17:31:16 +0000 |
commit | 05f06dfc585db57c544bca907e74d5e6d4ca6982 (patch) | |
tree | 7883e1182168ebbcb5dc3bb9bcac514a1ad77dd6 | |
parent | a1b99ebf12b47406407e50ced6f28130dfa753fe (diff) | |
download | chromium_src-05f06dfc585db57c544bca907e74d5e6d4ca6982.zip chromium_src-05f06dfc585db57c544bca907e74d5e6d4ca6982.tar.gz chromium_src-05f06dfc585db57c544bca907e74d5e6d4ca6982.tar.bz2 |
Submitting http://codereview.chromium.org/4116010 on behalf of jglasgow@chromium.org:
Change the libcros API for cellular data plans keep all memory
allocation and deletion within libcros.
BUG=chromium-os:8297
TEST=ad hoc
Review URL: http://codereview.chromium.org/4270004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65073 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/boot_times_loader.cc | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/network_library.cc | 40 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/network_library.h | 43 | ||||
-rw-r--r-- | chrome/browser/chromeos/dom_ui/internet_options_handler.cc | 23 | ||||
-rw-r--r-- | chrome/browser/chromeos/network_message_observer.cc | 6 |
5 files changed, 66 insertions, 49 deletions
diff --git a/chrome/browser/chromeos/boot_times_loader.cc b/chrome/browser/chromeos/boot_times_loader.cc index 62b958c..5fc7414 100644 --- a/chrome/browser/chromeos/boot_times_loader.cc +++ b/chrome/browser/chromeos/boot_times_loader.cc @@ -17,6 +17,7 @@ #include "base/string_util.h" #include "base/stringprintf.h" #include "base/thread.h" +#include "base/thread_restrictions.h" #include "base/time.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_thread.h" @@ -281,7 +282,7 @@ BootTimesLoader::Stats BootTimesLoader::GetCurrentStats() { const FilePath kProcUptime("/proc/uptime"); const FilePath kDiskStat("/sys/block/sda/stat"); Stats stats; - + base::ThreadRestrictions::ScopedAllowIO allow_io; file_util::ReadFileToString(kProcUptime, &stats.uptime); file_util::ReadFileToString(kDiskStat, &stats.disk); return stats; diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc index feb4d49..645279f 100644 --- a/chrome/browser/chromeos/cros/network_library.cc +++ b/chrome/browser/chromeos/cros/network_library.cc @@ -284,6 +284,9 @@ CellularNetwork::CellularNetwork(const ServiceInfo* service) type_ = TYPE_CELLULAR; } +CellularNetwork::~CellularNetwork() { +} + bool CellularNetwork::StartActivation() const { if (!EnsureCrosLoaded()) return false; @@ -323,14 +326,15 @@ bool CellularNetwork::is_gsm() const { CellularNetwork::DataLeft CellularNetwork::data_left() const { if (data_plans_.empty()) return DATA_NORMAL; - CellularDataPlan plan = data_plans_[0]; + const 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) + base::TimeDelta remaining = plan.plan_end_time - plan.update_time; + if (remaining <= base::TimeDelta::FromSeconds(0)) return DATA_NONE; - else if (remaining <= kCellularDataVeryLowSecs) + else if (remaining <= + base::TimeDelta::FromSeconds(kCellularDataVeryLowSecs)) return DATA_VERY_LOW; - else if (remaining <= kCellularDataLowSecs) + else if (remaining <= base::TimeDelta::FromSeconds(kCellularDataLowSecs)) return DATA_LOW; else return DATA_NORMAL; @@ -996,7 +1000,7 @@ class NetworkLibraryImpl : public NetworkLibrary { if (network->cellular_network()->service_path() .compare(modem_service_path) == 0) { if (dataplan != NULL) { - network->UpdateCellularDataPlan(*dataplan); + network->UpdateCellularDataPlan(dataplan); } } } @@ -1128,23 +1132,6 @@ class NetworkLibraryImpl : public NetworkLibrary { enabled_devices_ = devices; connected_devices_ = devices; offline_mode_ = false; - - chromeos::CellularDataPlan test_plan; - test_plan.plan_name = "Fake plan"; - test_plan.data_bytes_used = 5LL * 1024LL * 1024LL * 1024LL; - test_plan.plan_start_time = - (base::Time::Now() - base::TimeDelta::FromDays(15)).ToInternalValue() / - base::Time::kMicrosecondsPerSecond; - test_plan.plan_end_time = - (base::Time::Now() + base::TimeDelta::FromDays(12)).ToInternalValue() / - base::Time::kMicrosecondsPerSecond; - test_plan.plan_data_bytes = 20LL * 1024LL * 1024LL * 1024LL; - test_plan.plan_type = CELLULAR_DATA_PLAN_METERED_PAID; - test_plan.update_time = base::Time::Now().ToInternalValue() / - base::Time::kMicrosecondsPerSecond; - chromeos::CellularDataPlanList test_plans; - test_plans.push_back(test_plan); - cellular_->SetDataPlans(test_plans); } void UpdateSystemInfo() { @@ -1275,9 +1262,10 @@ class NetworkLibraryImpl : public NetworkLibrary { // If new cellular, then update data plan list. if (cellular_networks_[i]->service_path() != prev_cellular_service_path) { - CellularDataPlanList list; - RetrieveCellularDataPlans(cellular_->service_path().c_str(), &list); + CellularDataPlanList* list = RetrieveCellularDataPlans( + cellular_->service_path().c_str()); UpdateCellularDataPlan(list); + FreeCellularDataPlanList(list); } break; // There is only one connected or connecting cellular network. } @@ -1292,7 +1280,7 @@ class NetworkLibraryImpl : public NetworkLibrary { FreeSystemInfo(system); } - void UpdateCellularDataPlan(const CellularDataPlanList& data_plans) { + void UpdateCellularDataPlan(const CellularDataPlanList* data_plans) { DCHECK(cellular_); cellular_->SetDataPlans(data_plans); NotifyCellularDataPlanChanged(); diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h index 65574ed..a54aba4 100644 --- a/chrome/browser/chromeos/cros/network_library.h +++ b/chrome/browser/chromeos/cros/network_library.h @@ -135,13 +135,40 @@ class WirelessNetwork : public Network { favorite_(false) {} explicit WirelessNetwork(const WirelessNetwork& network); explicit WirelessNetwork(const ServiceInfo* service); - + virtual ~WirelessNetwork() {} std::string name_; int strength_; bool auto_connect_; bool favorite_; }; +class CellularDataPlan { + public: + CellularDataPlan() : + plan_name("Unknown"), + plan_type(CELLULAR_DATA_PLAN_UNLIMITED), + plan_data_bytes(0), + data_bytes_used(0) { } + explicit CellularDataPlan(const CellularDataPlanInfo &plan) : + plan_name(plan.plan_name?plan.plan_name:""), + plan_type(plan.plan_type), + update_time(base::Time::FromInternalValue(plan.update_time)), + plan_start_time(base::Time::FromInternalValue(plan.plan_start_time)), + plan_end_time(base::Time::FromInternalValue(plan.plan_end_time)), + plan_data_bytes(plan.plan_data_bytes), + data_bytes_used(plan.data_bytes_used) { } + + std::string plan_name; + CellularDataPlanType plan_type; + base::Time update_time; + base::Time plan_start_time; + base::Time plan_end_time; + int64 plan_data_bytes; + int64 data_bytes_used; +}; + +typedef std::vector<CellularDataPlan> CellularDataPlanVector; + class CellularNetwork : public WirelessNetwork { public: enum DataLeft { @@ -154,7 +181,7 @@ class CellularNetwork : public WirelessNetwork { CellularNetwork(); explicit CellularNetwork(const CellularNetwork& network); explicit CellularNetwork(const ServiceInfo* service); - + virtual ~CellularNetwork(); // Starts device activation process. Returns false if the device state does // not permit activation. bool StartActivation() const; @@ -192,12 +219,16 @@ class CellularNetwork : public WirelessNetwork { // WirelessNetwork overrides. virtual void Clear(); - const CellularDataPlanList& GetDataPlans() const { + const CellularDataPlanVector& GetDataPlans() const { return data_plans_; } - void SetDataPlans(const CellularDataPlanList& data_plans) { - data_plans_ = data_plans; + void SetDataPlans(const CellularDataPlanList* data_plan_list) { + data_plans_.clear(); + for (size_t i = 0; i < data_plan_list->plans_size; i++) { + const CellularDataPlanInfo* info(data_plan_list->GetCellularDataPlan(i)); + data_plans_.push_back(CellularDataPlan(*info)); + } } // Return a string representation of network technology. std::string GetNetworkTechnologyString() const; @@ -233,7 +264,7 @@ class CellularNetwork : public WirelessNetwork { std::string hardware_revision_; std::string last_update_; unsigned int prl_version_; - CellularDataPlanList data_plans_; + CellularDataPlanVector data_plans_; }; class WifiNetwork : public WirelessNetwork { diff --git a/chrome/browser/chromeos/dom_ui/internet_options_handler.cc b/chrome/browser/chromeos/dom_ui/internet_options_handler.cc index d3b1972..f9989aa 100644 --- a/chrome/browser/chromeos/dom_ui/internet_options_handler.cc +++ b/chrome/browser/chromeos/dom_ui/internet_options_handler.cc @@ -380,10 +380,10 @@ void InternetOptionsHandler::CellularDataPlanChanged( chromeos::CellularNetwork* cellular = obj->cellular_network(); if (!cellular) return; - const chromeos::CellularDataPlanList& plans = cellular->GetDataPlans(); + const chromeos::CellularDataPlanVector& plans = cellular->GetDataPlans(); DictionaryValue connection_plans; ListValue* plan_list = new ListValue(); - for (chromeos::CellularDataPlanList::const_iterator iter = plans.begin(); + for (chromeos::CellularDataPlanVector::const_iterator iter = plans.begin(); iter != plans.end(); ++iter) { plan_list->Append(CellularDataPlanToDictionary(*iter)); @@ -410,9 +410,8 @@ DictionaryValue* InternetOptionsHandler::CellularDataPlanToDictionary( case chromeos::CELLULAR_DATA_PLAN_UNLIMITED: { description = l10n_util::GetStringFUTF16( IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PURCHASE_UNLIMITED_DATA, - WideToUTF16(base::TimeFormatFriendlyDate( - base::Time::FromInternalValue(plan.plan_start_time * - base::Time::kMicrosecondsPerSecond)))); + WideToUTF16(base::TimeFormatFriendlyDate(plan.plan_start_time))); + remaining = l10n_util::GetStringUTF16( IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_UNLIMITED); break; @@ -424,8 +423,7 @@ DictionaryValue* InternetOptionsHandler::CellularDataPlanToDictionary( GetByteDisplayUnits(plan.plan_data_bytes), true), WideToUTF16(base::TimeFormatFriendlyDate( - base::Time::FromInternalValue(plan.plan_start_time * - base::Time::kMicrosecondsPerSecond)))); + plan.plan_start_time))); remaining = FormatBytes(plan.plan_data_bytes - plan.data_bytes_used, GetByteDisplayUnits(plan.plan_data_bytes - plan.data_bytes_used), true); @@ -438,8 +436,7 @@ DictionaryValue* InternetOptionsHandler::CellularDataPlanToDictionary( GetByteDisplayUnits(plan.plan_data_bytes), true), WideToUTF16(base::TimeFormatFriendlyDate( - base::Time::FromInternalValue(plan.plan_start_time * - base::Time::kMicrosecondsPerSecond)))); + plan.plan_start_time))); remaining = FormatBytes(plan.plan_data_bytes - plan.data_bytes_used, GetByteDisplayUnits(plan.plan_data_bytes - plan.data_bytes_used), true); @@ -447,10 +444,7 @@ DictionaryValue* InternetOptionsHandler::CellularDataPlanToDictionary( } } string16 expiration = TimeFormat::TimeRemaining( - base::TimeDelta::FromSeconds( - plan.plan_end_time - (base::Time::Now().ToInternalValue() / - base::Time::kMicrosecondsPerSecond))); - + plan.plan_end_time - base::Time::Now()); plan_dict->SetString("name", plan.plan_name); plan_dict->SetString("planSummary", description); plan_dict->SetString("dataRemaining", remaining); @@ -463,7 +457,8 @@ string16 InternetOptionsHandler::GetPlanWarning( const chromeos::CellularDataPlan& plan) { if (plan.plan_type == chromeos::CELLULAR_DATA_PLAN_UNLIMITED) { // Time based plan. Show nearing expiration and data expiration. - int64 time_left = plan.plan_end_time - plan.update_time; + int64 time_left = base::TimeDelta( + plan.plan_end_time - plan.update_time).InSeconds(); if (time_left <= 0) { return l10n_util::GetStringFUTF16( IDS_NETWORK_MINUTES_REMAINING_MESSAGE, ASCIIToUTF16("0")); diff --git a/chrome/browser/chromeos/network_message_observer.cc b/chrome/browser/chromeos/network_message_observer.cc index 92bc85a..db3a82f 100644 --- a/chrome/browser/chromeos/network_message_observer.cc +++ b/chrome/browser/chromeos/network_message_observer.cc @@ -155,7 +155,7 @@ void NetworkMessageObserver::CellularDataPlanChanged(NetworkLibrary* obj) { if (!cellular) return; // Active plan is the first one in the list. Use empty one if none found. - const CellularDataPlanList& plans = cellular->GetDataPlans(); + const CellularDataPlanVector& 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. @@ -204,8 +204,10 @@ void NetworkMessageObserver::CellularDataPlanChanged(NetworkLibrary* obj) { int message = plan.plan_type == CELLULAR_DATA_PLAN_UNLIMITED ? IDS_NETWORK_MINUTES_REMAINING_MESSAGE : IDS_NETWORK_DATA_REMAINING_MESSAGE; + int64 remaining_minutes = + base::TimeDelta(plan.plan_end_time - plan.update_time).InMinutes(); int64 remaining = plan.plan_type == CELLULAR_DATA_PLAN_UNLIMITED ? - (plan.plan_end_time - plan.update_time) / 60 : + remaining_minutes : (plan.plan_data_bytes - plan.data_bytes_used) / (1024 * 1024); notification_low_data_.Show(l10n_util::GetStringFUTF16( message, UTF8ToUTF16(base::Int64ToString(remaining))), |