summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordilmah@chromium.org <dilmah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-27 13:31:11 +0000
committerdilmah@chromium.org <dilmah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-27 13:31:11 +0000
commit95012e07da3e85d6f9e0568d0670b6d03e3ebc32 (patch)
treeaa13a3a997408814bd13e8ae26e436448a240d97 /chrome
parent34e40e29ac6fa6b07478ba2c940604cb9f83065d (diff)
downloadchromium_src-95012e07da3e85d6f9e0568d0670b6d03e3ebc32.zip
chromium_src-95012e07da3e85d6f9e0568d0670b6d03e3ebc32.tar.gz
chromium_src-95012e07da3e85d6f9e0568d0670b6d03e3ebc32.tar.bz2
Merge 83046 - Show hardware addresses for wifi and ethernet networks.Network menu (in status area button) is modified in following way:In oobe and login screen we add "More..." submenu and show hardware addresses in submenu.In login screen we additionally show proxy settings in this submenu.In browser this menu is unchanged because:(1) we assume that there is no need in those hardware addresses since login was successful.(2) user can see them via other means.We add some methods (GetWifiDevice and GetEthernetDevice) to login_library because we need to obtain hardware addresses for ethernet and wifi even if there is no visible wi-fi networks and if ethernet is disconected.BUG=chromium-os:13010TEST=ManualReview URL: http://codereview.chromium.org/6899025
TBR=dilmah@chromium.org Review URL: http://codereview.chromium.org/6905056 git-svn-id: svn://svn.chromium.org/chrome/branches/742/src@83146 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/cros/mock_network_library.h7
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc47
-rw-r--r--chrome/browser/chromeos/cros/network_library.h17
-rw-r--r--chrome/browser/chromeos/login/network_screen_browsertest.cc4
-rw-r--r--chrome/browser/chromeos/login/update_screen_browsertest.cc7
-rw-r--r--chrome/browser/chromeos/status/network_menu.cc160
-rw-r--r--chrome/browser/chromeos/status/network_menu.h16
-rw-r--r--chrome/browser/ui/views/about_ipc_dialog.cc2
-rw-r--r--chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc27
9 files changed, 209 insertions, 78 deletions
diff --git a/chrome/browser/chromeos/cros/mock_network_library.h b/chrome/browser/chromeos/cros/mock_network_library.h
index 728d789..0f28a4b 100644
--- a/chrome/browser/chromeos/cros/mock_network_library.h
+++ b/chrome/browser/chromeos/cros/mock_network_library.h
@@ -64,6 +64,8 @@ class MockNetworkLibrary : public NetworkLibrary {
MOCK_CONST_METHOD1(FindNetworkDeviceByPath,
NetworkDevice*(const std::string&));
MOCK_CONST_METHOD0(FindCellularDevice, const NetworkDevice*(void));
+ MOCK_CONST_METHOD0(FindWifiDevice, const NetworkDevice*(void));
+ MOCK_CONST_METHOD0(FindEthernetDevice, const NetworkDevice*(void));
MOCK_CONST_METHOD1(FindNetworkByPath,
Network*(const std::string&));
MOCK_CONST_METHOD1(FindWifiNetworkByPath,
@@ -127,8 +129,9 @@ class MockNetworkLibrary : public NetworkLibrary {
MOCK_METHOD1(EnableWifiNetworkDevice, void(bool));
MOCK_METHOD1(EnableCellularNetworkDevice, void(bool));
MOCK_METHOD1(EnableOfflineMode, void(bool));
- MOCK_METHOD2(GetIPConfigs, NetworkIPConfigVector(const std::string&,
- std::string*));
+ MOCK_METHOD3(GetIPConfigs, NetworkIPConfigVector(const std::string&,
+ std::string*,
+ HardwareAddressFormat));
MOCK_METHOD1(GetHtmlInfo, std::string(int));
};
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index dbe04ce..6b923ac 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -2216,6 +2216,24 @@ class NetworkLibraryImpl : public NetworkLibrary {
return NULL;
}
+ virtual const NetworkDevice* FindEthernetDevice() const {
+ for (NetworkDeviceMap::const_iterator iter = device_map_.begin();
+ iter != device_map_.end(); ++iter) {
+ if (iter->second->type() == TYPE_ETHERNET)
+ return iter->second;
+ }
+ return NULL;
+ }
+
+ virtual const NetworkDevice* FindWifiDevice() const {
+ for (NetworkDeviceMap::const_iterator iter = device_map_.begin();
+ iter != device_map_.end(); ++iter) {
+ if (iter->second->type() == TYPE_WIFI)
+ return iter->second;
+ }
+ return NULL;
+ }
+
virtual Network* FindNetworkByPath(const std::string& path) const {
NetworkMap::const_iterator iter = network_map_.find(path);
if (iter != network_map_.end())
@@ -2790,7 +2808,9 @@ class NetworkLibraryImpl : public NetworkLibrary {
}
virtual NetworkIPConfigVector GetIPConfigs(const std::string& device_path,
- std::string* hardware_address) {
+ std::string* hardware_address,
+ HardwareAddressFormat format) {
+ DCHECK(hardware_address);
hardware_address->clear();
NetworkIPConfigVector ipconfig_vector;
if (EnsureCrosLoaded() && !device_path.empty()) {
@@ -2809,6 +2829,22 @@ class NetworkLibraryImpl : public NetworkLibrary {
std::sort(ipconfig_vector.begin(), ipconfig_vector.end());
}
}
+
+ for (size_t i = 0; i < hardware_address->size(); ++i)
+ (*hardware_address)[i] = toupper((*hardware_address)[i]);
+ if (format == FORMAT_COLON_SEPARATED_HEX) {
+ if (hardware_address->size() % 2 == 0) {
+ std::string output;
+ for (size_t i = 0; i < hardware_address->size(); ++i) {
+ if ((i != 0) && (i % 2 == 0))
+ output.push_back(':');
+ output.push_back((*hardware_address)[i]);
+ }
+ *hardware_address = output;
+ }
+ } else {
+ DCHECK(format == FORMAT_RAW_HEX);
+ }
return ipconfig_vector;
}
@@ -4153,6 +4189,12 @@ class NetworkLibraryStubImpl : public NetworkLibrary {
virtual const NetworkDevice* FindCellularDevice() const {
return NULL;
}
+ virtual const NetworkDevice* FindEthernetDevice() const {
+ return NULL;
+ }
+ virtual const NetworkDevice* FindWifiDevice() const {
+ return NULL;
+ }
virtual Network* FindNetworkByPath(
const std::string& path) const { return NULL; }
virtual WifiNetwork* FindWifiNetworkByPath(
@@ -4215,7 +4257,8 @@ class NetworkLibraryStubImpl : public NetworkLibrary {
virtual void EnableCellularNetworkDevice(bool enable) {}
virtual void EnableOfflineMode(bool enable) {}
virtual NetworkIPConfigVector GetIPConfigs(const std::string& device_path,
- std::string* hardware_address) {
+ std::string* hardware_address,
+ HardwareAddressFormat) {
hardware_address->clear();
return NetworkIPConfigVector();
}
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h
index 0c1ebf3..ee471dc 100644
--- a/chrome/browser/chromeos/cros/network_library.h
+++ b/chrome/browser/chromeos/cros/network_library.h
@@ -847,6 +847,11 @@ typedef std::vector<NetworkIPConfig> NetworkIPConfigVector;
// library like this: chromeos::CrosLibrary::Get()->GetNetworkLibrary()
class NetworkLibrary {
public:
+ enum HardwareAddressFormat {
+ FORMAT_RAW_HEX,
+ FORMAT_COLON_SEPARATED_HEX
+ };
+
class NetworkManagerObserver {
public:
// Called when the state of the network manager has changed,
@@ -980,10 +985,15 @@ class NetworkLibrary {
virtual const NetworkDevice* FindNetworkDeviceByPath(
const std::string& path) const = 0;
- // Returns device with TYPE_CELLULAR. Returns NULL if such a device doesn't
- // exist.
+ // Returns device with TYPE_CELLULAR. Returns NULL if none exists.
virtual const NetworkDevice* FindCellularDevice() const = 0;
+ // Returns device with TYPE_ETHERNET. Returns NULL if none exists.
+ virtual const NetworkDevice* FindEthernetDevice() const = 0;
+
+ // Returns device with TYPE_WIFI. Returns NULL if none exists.
+ virtual const NetworkDevice* FindWifiDevice() const = 0;
+
// Return a pointer to the network, if it exists, or NULL.
// NOTE: Never store these results, store service paths instead.
// The pattern for doing an operation on a Network is:
@@ -1126,7 +1136,8 @@ class NetworkLibrary {
// found.
virtual NetworkIPConfigVector GetIPConfigs(
const std::string& device_path,
- std::string* hardware_address) = 0;
+ std::string* hardware_address,
+ HardwareAddressFormat) = 0;
// Factory function, creates a new instance and returns ownership.
// For normal usage, access the singleton via CrosLibrary::Get().
diff --git a/chrome/browser/chromeos/login/network_screen_browsertest.cc b/chrome/browser/chromeos/login/network_screen_browsertest.cc
index d3de156..5c625b0 100644
--- a/chrome/browser/chromeos/login/network_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/network_screen_browsertest.cc
@@ -76,6 +76,10 @@ class NetworkScreenTest : public WizardInProcessBrowserTest {
EXPECT_CALL(*mock_network_library_, cellular_connected())
.Times(1)
.WillRepeatedly(Return(false));
+ EXPECT_CALL(*mock_network_library_, FindWifiDevice())
+ .Times(AnyNumber());
+ EXPECT_CALL(*mock_network_library_, FindEthernetDevice())
+ .Times(AnyNumber());
cros_mock_->SetStatusAreaMocksExpectations();
diff --git a/chrome/browser/chromeos/login/update_screen_browsertest.cc b/chrome/browser/chromeos/login/update_screen_browsertest.cc
index c6897bd..9004b8b 100644
--- a/chrome/browser/chromeos/login/update_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/update_screen_browsertest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -13,6 +13,7 @@
namespace chromeos {
using ::testing::_;
+using ::testing::AnyNumber;
using ::testing::AtLeast;
using ::testing::Return;
using ::testing::ReturnRef;
@@ -63,6 +64,10 @@ class UpdateScreenTest : public WizardInProcessBrowserTest {
EXPECT_CALL(*mock_network_library_, AddNetworkManagerObserver(_))
.Times(1)
.RetiresOnSaturation();
+ EXPECT_CALL(*mock_network_library_, FindWifiDevice())
+ .Times(AnyNumber());
+ EXPECT_CALL(*mock_network_library_, FindEthernetDevice())
+ .Times(AnyNumber());
}
virtual void TearDownInProcessBrowserTestFixture() {
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc
index 7f5d05c..285ccbe 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -30,19 +30,18 @@
namespace chromeos {
-class MainMenuModel : public NetworkMenuModel {
+class MoreMenuModel : public NetworkMenuModel {
public:
- explicit MainMenuModel(NetworkMenu* owner);
- virtual ~MainMenuModel() {}
+ explicit MoreMenuModel(NetworkMenu* owner);
+ virtual ~MoreMenuModel() {}
// NetworkMenuModel implementation.
virtual void InitMenuItems(bool is_browser_mode,
bool should_open_button_options);
private:
- scoped_ptr<NetworkMenuModel> vpn_menu_model_;
-
- DISALLOW_COPY_AND_ASSIGN(MainMenuModel);
+ friend class MainMenuModel;
+ DISALLOW_COPY_AND_ASSIGN(MoreMenuModel);
};
class VPNMenuModel : public NetworkMenuModel {
@@ -60,6 +59,22 @@ class VPNMenuModel : public NetworkMenuModel {
DISALLOW_COPY_AND_ASSIGN(VPNMenuModel);
};
+class MainMenuModel : public NetworkMenuModel {
+ public:
+ explicit MainMenuModel(NetworkMenu* owner);
+ virtual ~MainMenuModel() {}
+
+ // NetworkMenuModel implementation.
+ virtual void InitMenuItems(bool is_browser_mode,
+ bool should_open_button_options);
+
+ private:
+ scoped_ptr<NetworkMenuModel> vpn_menu_model_;
+ scoped_ptr<MoreMenuModel> more_menu_model_;
+
+ DISALLOW_COPY_AND_ASSIGN(MainMenuModel);
+};
+
////////////////////////////////////////////////////////////////////////////////
// NetworkMenuModel, public methods:
@@ -290,8 +305,9 @@ void NetworkMenuModel::ShowOtherCellular() const {
// MainMenuModel
MainMenuModel::MainMenuModel(NetworkMenu* owner)
- : NetworkMenuModel(owner) {
- vpn_menu_model_.reset(new VPNMenuModel(owner));
+ : NetworkMenuModel(owner),
+ vpn_menu_model_(new VPNMenuModel(owner)),
+ more_menu_model_(new MoreMenuModel(owner)) {
}
void MainMenuModel::InitMenuItems(bool is_browser_mode,
@@ -509,7 +525,9 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode,
ui::MenuModel::TYPE_SUBMENU,
l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_PRIVATE_NETWORKS),
VPNMenuModel::IconForDisplay(connected_network),
- vpn_menu_model_.get(), FLAG_PRIVATE_NETWORKS));
+ vpn_menu_model_.get(), FLAG_NONE));
+ vpn_menu_model_->InitMenuItems(
+ is_browser_mode, should_open_button_options);
}
}
@@ -562,34 +580,24 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode,
// l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE),
// SkBitmap(), std::string(), FLAG_TOGGLE_OFFLINE));
- bool connected = cros->Connected(); // always call for test expectations.
- bool oobe = !should_open_button_options; // we don't show options for OOBE.
- // Network settings. (And IP Address)
- if (!oobe) {
- menu_items_.push_back(MenuItem()); // Separator
-
- if (connected) {
- std::string ip_address = cros->IPAddress();
- if (!ip_address.empty()) {
- menu_items_.push_back(MenuItem(ui::MenuModel::TYPE_COMMAND,
- ASCIIToUTF16(cros->IPAddress()), SkBitmap(), std::string(),
- FLAG_DISABLED));
- }
- }
-
- label = l10n_util::GetStringUTF16(is_browser_mode ?
- IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG :
- IDS_STATUSBAR_NETWORK_OPEN_PROXY_SETTINGS_DIALOG);
- menu_items_.push_back(MenuItem(ui::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), std::string(), FLAG_OPTIONS));
- }
-
- // Recursively call each submenu to populate its own menu items.
- for (size_t i = 0; i < menu_items_.size(); ++i) {
- if (menu_items_[i].type == ui::MenuModel::TYPE_SUBMENU &&
- menu_items_[i].sub_menu_model) {
- menu_items_[i].sub_menu_model->InitMenuItems(is_browser_mode,
- should_open_button_options);
+ // Additional links like:
+ // * Network settings;
+ // * IP Address on active interface;
+ // * Hardware addresses for wifi and ethernet.
+ menu_items_.push_back(MenuItem()); // Separator
+ more_menu_model_->InitMenuItems(is_browser_mode, should_open_button_options);
+ if (is_browser_mode) {
+ // In browser mode we do not want separate submenu, inline items.
+ menu_items_.insert(
+ menu_items_.end(),
+ more_menu_model_->menu_items_.begin(),
+ more_menu_model_->menu_items_.end());
+ } else {
+ if (!more_menu_model_->menu_items_.empty()) {
+ menu_items_.push_back(MenuItem(
+ ui::MenuModel::TYPE_SUBMENU,
+ l10n_util::GetStringUTF16(IDS_LANGUAGES_MORE),
+ SkBitmap(), more_menu_model_.get(), FLAG_NONE));
}
}
}
@@ -703,6 +711,79 @@ SkBitmap VPNMenuModel::IconForDisplay(const Network* network) {
}
////////////////////////////////////////////////////////////////////////////////
+// MoreMenuModel
+
+MoreMenuModel::MoreMenuModel(NetworkMenu* owner)
+ : NetworkMenuModel(owner) {
+}
+
+void MoreMenuModel::InitMenuItems(
+ bool is_browser_mode, bool should_open_button_options) {
+ // This gets called on initialization, so any changes should be reflected
+ // in CrosMock::SetNetworkLibraryStatusAreaExpectations().
+
+ menu_items_.clear();
+ MenuItemVector link_items;
+ MenuItemVector address_items;
+
+ NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
+ bool oobe = !should_open_button_options; // we don't show options for OOBE.
+ if (!oobe) {
+ string16 label = l10n_util::GetStringUTF16(is_browser_mode ?
+ IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG :
+ IDS_STATUSBAR_NETWORK_OPEN_PROXY_SETTINGS_DIALOG);
+ link_items.push_back(MenuItem(ui::MenuModel::TYPE_COMMAND, label,
+ SkBitmap(), std::string(), FLAG_OPTIONS));
+ }
+
+ bool connected = cros->Connected(); // always call for test expectations.
+ if (connected) {
+ std::string ip_address = cros->IPAddress();
+ if (!ip_address.empty()) {
+ address_items.push_back(MenuItem(ui::MenuModel::TYPE_COMMAND,
+ ASCIIToUTF16(cros->IPAddress()), SkBitmap(), std::string(),
+ FLAG_DISABLED));
+ }
+ }
+
+ if (!is_browser_mode) {
+ const NetworkDevice* ether = cros->FindEthernetDevice();
+ if (ether) {
+ std::string hardware_address;
+ cros->GetIPConfigs(ether->device_path(), &hardware_address,
+ NetworkLibrary::FORMAT_COLON_SEPARATED_HEX);
+ if (!hardware_address.empty()) {
+ std::string label = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET) + " " + hardware_address;
+ address_items.push_back(MenuItem(ui::MenuModel::TYPE_COMMAND,
+ UTF8ToUTF16(label), SkBitmap(), std::string(), FLAG_DISABLED));
+ }
+ }
+
+ if (cros->wifi_enabled()) {
+ const NetworkDevice* wifi = cros->FindWifiDevice();
+ if (wifi) {
+ std::string hardware_address;
+ cros->GetIPConfigs(wifi->device_path(),
+ &hardware_address, NetworkLibrary::FORMAT_COLON_SEPARATED_HEX);
+ if (!hardware_address.empty()) {
+ std::string label = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_WIFI) + " " + hardware_address;
+ address_items.push_back(MenuItem(ui::MenuModel::TYPE_COMMAND,
+ UTF8ToUTF16(label), SkBitmap(), std::string(), FLAG_DISABLED));
+ }
+ }
+ }
+ }
+
+ menu_items_ = link_items;
+ if (!menu_items_.empty() && address_items.size() > 1)
+ menu_items_.push_back(MenuItem()); // Separator
+ menu_items_.insert(menu_items_.end(),
+ address_items.begin(), address_items.end());
+}
+
+////////////////////////////////////////////////////////////////////////////////
// NetworkMenu
// static
@@ -750,8 +831,7 @@ SkBitmap NetworkMenu::kAnimatingImages[kNumAnimatingImages];
// static
SkBitmap NetworkMenu::kAnimatingImagesBlack[kNumAnimatingImages];
-NetworkMenu::NetworkMenu()
- : min_width_(-1) {
+NetworkMenu::NetworkMenu() : min_width_(-1) {
main_menu_model_.reset(new MainMenuModel(this));
network_menu_.reset(new views::Menu2(main_menu_model_.get()));
}
@@ -994,3 +1074,5 @@ void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) {
}
} // namespace chromeos
+
+
diff --git a/chrome/browser/chromeos/status/network_menu.h b/chrome/browser/chromeos/status/network_menu.h
index 62c1a8e..893bdbc 100644
--- a/chrome/browser/chromeos/status/network_menu.h
+++ b/chrome/browser/chromeos/status/network_menu.h
@@ -63,7 +63,7 @@ class NetworkMenuModel : public ui::MenuModel {
// Called by NetworkMenu::RunMenu to initialize list of menu items.
virtual void InitMenuItems(bool is_browser_mode,
- bool should_open_button_options) {}
+ bool should_open_button_options) = 0;
// ui::MenuModel implementation.
virtual bool HasIcons() const { return true; }
@@ -90,6 +90,7 @@ class NetworkMenuModel : public ui::MenuModel {
protected:
enum MenuItemFlags {
+ FLAG_NONE = 0,
FLAG_DISABLED = 1 << 0,
FLAG_TOGGLE_ETHERNET = 1 << 1,
FLAG_TOGGLE_WIFI = 1 << 2,
@@ -99,13 +100,12 @@ class NetworkMenuModel : public ui::MenuModel {
FLAG_ETHERNET = 1 << 6,
FLAG_WIFI = 1 << 7,
FLAG_CELLULAR = 1 << 8,
- FLAG_PRIVATE_NETWORKS = 1 << 9,
- FLAG_OPTIONS = 1 << 10,
- FLAG_ADD_WIFI = 1 << 11,
- FLAG_ADD_CELLULAR = 1 << 12,
- FLAG_VPN = 1 << 13,
- FLAG_ADD_VPN = 1 << 14,
- FLAG_DISCONNECT_VPN = 1 << 15,
+ FLAG_OPTIONS = 1 << 9,
+ FLAG_ADD_WIFI = 1 << 10,
+ FLAG_ADD_CELLULAR = 1 << 11,
+ FLAG_VPN = 1 << 12,
+ FLAG_ADD_VPN = 1 << 13,
+ FLAG_DISCONNECT_VPN = 1 << 14,
};
struct MenuItem {
diff --git a/chrome/browser/ui/views/about_ipc_dialog.cc b/chrome/browser/ui/views/about_ipc_dialog.cc
index 1215473..fb1fdc4 100644
--- a/chrome/browser/ui/views/about_ipc_dialog.cc
+++ b/chrome/browser/ui/views/about_ipc_dialog.cc
@@ -219,7 +219,7 @@ void AboutIPCDialog::RunDialog() {
views::Window::CreateChromeWindow(NULL, gfx::Rect(),
g_active_dialog)->Show();
} else {
- // TOOD(brettw) it would be nice to focus the existing window.
+ // TODO(brettw) it would be nice to focus the existing window.
}
}
diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
index 8b677ca..ef2c7a43 100644
--- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
+++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
@@ -46,22 +46,6 @@
static const char kOtherNetworksFakePath[] = "?";
-namespace {
-
-// Format the hardware address like "0011AA22BB33" => "00:11:AA:22:BB:33".
-std::string FormatHardwareAddress(const std::string& address) {
- std::string output;
- for (size_t i = 0; i < address.size(); ++i) {
- if (i != 0 && i % 2 == 0) {
- output.push_back(':');
- }
- output.push_back(toupper(address[i]));
- }
- return output;
-}
-
-} // namespace
-
InternetOptionsHandler::InternetOptionsHandler()
: chromeos::CrosOptionsPageUIHandler(
new chromeos::UserCrosSettingsProvider),
@@ -593,12 +577,11 @@ void InternetOptionsHandler::PopulateDictionaryDetails(
DCHECK(net);
DictionaryValue dictionary;
std::string hardware_address;
- chromeos::NetworkIPConfigVector ipconfigs =
- cros->GetIPConfigs(net->device_path(), &hardware_address);
- if (!hardware_address.empty()) {
- dictionary.SetString("hardwareAddress",
- FormatHardwareAddress(hardware_address));
- }
+ chromeos::NetworkIPConfigVector ipconfigs = cros->GetIPConfigs(
+ net->device_path(), &hardware_address,
+ chromeos::NetworkLibrary::FORMAT_COLON_SEPARATED_HEX);
+ if (!hardware_address.empty())
+ dictionary.SetString("hardwareAddress", hardware_address);
scoped_ptr<ListValue> ipconfig_list(new ListValue());
for (chromeos::NetworkIPConfigVector::const_iterator it = ipconfigs.begin();
it != ipconfigs.end(); ++it) {