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

Unified Diff: chrome/browser/chromeos/cros_network_library.cc

Issue 341044: Move chromeos code to namespace chromeos. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 2 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
Index: chrome/browser/chromeos/cros_network_library.cc
===================================================================
--- chrome/browser/chromeos/cros_network_library.cc (revision 30488)
+++ chrome/browser/chromeos/cros_network_library.cc (working copy)
@@ -1,237 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/cros_network_library.h"
-
-#include <algorithm>
-
-#include "base/string_util.h"
-#include "chrome/browser/chrome_thread.h"
-#include "chrome/browser/chromeos/cros_library.h"
-#include "net/url_request/url_request_job.h"
-
-// Allows InvokeLater without adding refcounting. This class is a Singleton and
-// won't be deleted until it's last InvokeLater is run.
-template <>
-struct RunnableMethodTraits<CrosNetworkLibrary> {
- void RetainCallee(CrosNetworkLibrary* obj) {}
- void ReleaseCallee(CrosNetworkLibrary* obj) {}
-};
-
-////////////////////////////////////////////////////////////////////////////////
-// CrosNetworkLibrary
-
-// static
-const int CrosNetworkLibrary::kNetworkTrafficeTimerSecs = 1;
-
-CrosNetworkLibrary::CrosNetworkLibrary()
- : traffic_type_(0),
- ethernet_connected_(false) {
- if (CrosLibrary::loaded()) {
- Init();
- }
- g_url_request_job_tracker.AddObserver(this);
-}
-
-CrosNetworkLibrary::~CrosNetworkLibrary() {
- if (CrosLibrary::loaded()) {
- chromeos::DisconnectNetworkStatus(network_status_connection_);
- }
- g_url_request_job_tracker.RemoveObserver(this);
-}
-
-// static
-CrosNetworkLibrary* CrosNetworkLibrary::Get() {
- return Singleton<CrosNetworkLibrary>::get();
-}
-
-// static
-bool CrosNetworkLibrary::loaded() {
- return CrosLibrary::loaded();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// CrosNetworkLibrary, URLRequestJobTracker::JobObserver implementation:
-
-void CrosNetworkLibrary::OnJobAdded(URLRequestJob* job) {
- CheckNetworkTraffic(false);
-}
-
-void CrosNetworkLibrary::OnJobRemoved(URLRequestJob* job) {
- CheckNetworkTraffic(false);
-}
-
-void CrosNetworkLibrary::OnJobDone(URLRequestJob* job,
- const URLRequestStatus& status) {
- CheckNetworkTraffic(false);
-}
-
-void CrosNetworkLibrary::OnJobRedirect(URLRequestJob* job, const GURL& location,
- int status_code) {
- CheckNetworkTraffic(false);
-}
-
-void CrosNetworkLibrary::OnBytesRead(URLRequestJob* job, int byte_count) {
- CheckNetworkTraffic(true);
-}
-
-void CrosNetworkLibrary::AddObserver(Observer* observer) {
- observers_.AddObserver(observer);
-}
-
-void CrosNetworkLibrary::RemoveObserver(Observer* observer) {
- observers_.RemoveObserver(observer);
-}
-
-static const char* GetEncryptionString(chromeos::EncryptionType encryption) {
- switch (encryption) {
- case chromeos::NONE:
- return "none";
- case chromeos::RSN:
- return "rsn";
- case chromeos::WEP:
- return "wep";
- case chromeos::WPA:
- return "wpa";
- }
- return "none";
-}
-
-void CrosNetworkLibrary::ConnectToWifiNetwork(WifiNetwork network,
- const string16& password) {
- if (CrosLibrary::loaded()) {
- // This call kicks off a request to connect to this network, the results of
- // which we'll hear about through the monitoring we've set up in Init();
- chromeos::ConnectToWifiNetwork(
- network.ssid.c_str(),
- password.empty() ? NULL : UTF16ToUTF8(password).c_str(),
- GetEncryptionString(network.encryption));
- }
-}
-
-// static
-void CrosNetworkLibrary::NetworkStatusChangedHandler(void* object,
- const chromeos::ServiceStatus& service_status) {
- CrosNetworkLibrary* network = static_cast<CrosNetworkLibrary*>(object);
- WifiNetworkVector networks;
- bool ethernet_connected;
- ParseNetworks(service_status, &networks, &ethernet_connected);
- network->UpdateNetworkStatus(networks, ethernet_connected);
-}
-
-// static
-void CrosNetworkLibrary::ParseNetworks(
- const chromeos::ServiceStatus& service_status, WifiNetworkVector* networks,
- bool* ethernet_connected) {
- *ethernet_connected = false;
- for (int i = 0; i < service_status.size; i++) {
- const chromeos::ServiceInfo& service = service_status.services[i];
- DLOG(INFO) << "Parse " << service.ssid <<
- " typ=" << service.type <<
- " sta=" << service.state <<
- " pas=" << service.needs_passphrase <<
- " enc=" << service.encryption <<
- " sig=" << service.signal_strength;
- if (service.type == chromeos::TYPE_ETHERNET) {
- // Get the ethernet status.
- *ethernet_connected = service.state == chromeos::STATE_READY;
- } else if (service.type == chromeos::TYPE_WIFI) {
- bool connecting = service.state == chromeos::STATE_ASSOCIATION ||
- service.state == chromeos::STATE_CONFIGURATION;
- bool connected = service.state == chromeos::STATE_READY;
- networks->push_back(WifiNetwork(service.ssid,
- service.needs_passphrase,
- service.encryption,
- service.signal_strength,
- connecting,
- connected));
- }
- }
-}
-
-void CrosNetworkLibrary::Init() {
- // First, get the currently available networks. This data is cached
- // on the connman side, so the call should be quick.
- chromeos::ServiceStatus* service_status = chromeos::GetAvailableNetworks();
- if (service_status) {
- LOG(INFO) << "Getting initial CrOS network info.";
- WifiNetworkVector networks;
- bool ethernet_connected;
- ParseNetworks(*service_status, &networks, &ethernet_connected);
- UpdateNetworkStatus(networks, ethernet_connected);
- chromeos::FreeServiceStatus(service_status);
- }
- LOG(INFO) << "Registering for network status updates.";
- // Now, register to receive updates on network status.
- network_status_connection_ = chromeos::MonitorNetworkStatus(
- &NetworkStatusChangedHandler, this);
-}
-
-void CrosNetworkLibrary::UpdateNetworkStatus(
- const WifiNetworkVector& networks, bool ethernet_connected) {
- // Make sure we run on UI thread.
- if (!ChromeThread::CurrentlyOn(ChromeThread::UI)) {
- ChromeThread::PostTask(
- ChromeThread::UI, FROM_HERE,
- NewRunnableMethod(this,
- &CrosNetworkLibrary::UpdateNetworkStatus, networks,
- ethernet_connected));
- return;
- }
-
- ethernet_connected_ = ethernet_connected;
- wifi_networks_ = networks;
- // Sort the list of wifi networks by ssid.
- std::sort(wifi_networks_.begin(), wifi_networks_.end());
- wifi_ = WifiNetwork();
- for (size_t i = 0; i < wifi_networks_.size(); i++) {
- if (wifi_networks_[i].connecting || wifi_networks_[i].connected) {
- wifi_ = wifi_networks_[i];
- break; // There is only one connected or connecting wifi network.
- }
- }
- FOR_EACH_OBSERVER(Observer, observers_, NetworkChanged(this));
-}
-
-void CrosNetworkLibrary::CheckNetworkTraffic(bool download) {
- // If we already have a pending upload and download notification, then
- // shortcut and return.
- if (traffic_type_ == (Observer::TRAFFIC_DOWNLOAD | Observer::TRAFFIC_UPLOAD))
- return;
- // Figure out if we are uploading and/or downloading. We are downloading
- // if download == true. We are uploading if we have upload progress.
- if (download)
- traffic_type_ |= Observer::TRAFFIC_DOWNLOAD;
- if ((traffic_type_ & Observer::TRAFFIC_UPLOAD) == 0) {
- URLRequestJobTracker::JobIterator it;
- for (it = g_url_request_job_tracker.begin();
- it != g_url_request_job_tracker.end();
- ++it) {
- URLRequestJob* job = *it;
- if (job->GetUploadProgress() > 0) {
- traffic_type_ |= Observer::TRAFFIC_UPLOAD;
- break;
- }
- }
- }
- // If we have new traffic data to send out and the timer is not currently
- // running, then start a new timer.
- if (traffic_type_ && !timer_.IsRunning()) {
- timer_.Start(base::TimeDelta::FromSeconds(kNetworkTrafficeTimerSecs), this,
- &CrosNetworkLibrary::NetworkTrafficTimerFired);
- }
-}
-
-void CrosNetworkLibrary:: NetworkTrafficTimerFired() {
- ChromeThread::PostTask(
- ChromeThread::UI, FROM_HERE,
- NewRunnableMethod(this, &CrosNetworkLibrary::NotifyNetworkTraffic,
- traffic_type_));
- // Reset traffic type so that we don't send the same data next time.
- traffic_type_ = 0;
-}
-
-void CrosNetworkLibrary::NotifyNetworkTraffic(int traffic_type) {
- FOR_EACH_OBSERVER(Observer, observers_, NetworkTraffic(this, traffic_type));
-}

Powered by Google App Engine
This is Rietveld 408576698