summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-15 23:35:00 +0000
committerchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-15 23:35:00 +0000
commitf49a0c88d5579bcd9a3d20668dcba469ceb90a55 (patch)
tree3973c0067884c202e019037f8268f88a23a6c917
parentd54d179d82768d08d901ffcba10d8a05f276138b (diff)
downloadchromium_src-f49a0c88d5579bcd9a3d20668dcba469ceb90a55.zip
chromium_src-f49a0c88d5579bcd9a3d20668dcba469ceb90a55.tar.gz
chromium_src-f49a0c88d5579bcd9a3d20668dcba469ceb90a55.tar.bz2
Add auto-connect option in cellular config dialogs.
BUG=chromium-os:4312 TEST=none Review URL: http://codereview.chromium.org/2805079 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52573 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/generated_resources.grd4
-rw-r--r--chrome/browser/chromeos/cros/mock_network_library.h1
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc13
-rw-r--r--chrome/browser/chromeos/cros/network_library.h4
-rw-r--r--chrome/browser/chromeos/options/cellular_config_view.cc63
-rw-r--r--chrome/browser/chromeos/options/cellular_config_view.h45
-rw-r--r--chrome/browser/chromeos/options/network_config_view.cc24
-rw-r--r--chrome/browser/chromeos/options/network_config_view.h2
-rw-r--r--chrome/browser/chromeos/options/wifi_config_view.cc2
-rw-r--r--chrome/chrome_browser.gypi2
10 files changed, 154 insertions, 6 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 329989b..f22c03d 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -7754,7 +7754,7 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_ACCESSIBILITY">
Accessibility
</message>
- <message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_WIFI_CONFIG">
+ <message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_NETWORK_CONFIG">
Wireless
</message>
<message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_IP_CONFIG">
@@ -7808,7 +7808,7 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_OPTIONS_SETTINGS_OTHER_NETWORKS" desc="In the settings tab, the text on the button to display other networks.">
Other...
</message>
- <message name="IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SSID" desc="In settings internet options, the label for the ssid.">
+ <message name="IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID" desc="In settings internet options, the label for the network id.">
Network id:
</message>
<message name="IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_IDENTITY" desc="In settings internet options, the user identity for authentication.">
diff --git a/chrome/browser/chromeos/cros/mock_network_library.h b/chrome/browser/chromeos/cros/mock_network_library.h
index 7ae212e..e4e56fb 100644
--- a/chrome/browser/chromeos/cros/mock_network_library.h
+++ b/chrome/browser/chromeos/cros/mock_network_library.h
@@ -62,6 +62,7 @@ class MockNetworkLibrary : public NetworkLibrary {
bool));
MOCK_METHOD1(ConnectToCellularNetwork, void(CellularNetwork));
MOCK_METHOD1(DisconnectFromWirelessNetwork, void(const WirelessNetwork&));
+ MOCK_METHOD1(SaveCellularNetwork, void(const CellularNetwork&));
MOCK_METHOD1(SaveWifiNetwork, void(const WifiNetwork&));
MOCK_METHOD1(ForgetWirelessNetwork, void(const WirelessNetwork&));
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index 46fd7ae..105442d 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -431,6 +431,19 @@ void NetworkLibraryImpl::DisconnectFromWirelessNetwork(
}
}
+void NetworkLibraryImpl::SaveCellularNetwork(const CellularNetwork& network) {
+ // Update the wifi network in the local cache.
+ CellularNetwork* cellular = GetWirelessNetworkByPath(cellular_networks_,
+ network.service_path());
+ if (cellular)
+ *cellular = network;
+
+ // Update the cellular network with libcros.
+ if (CrosLibrary::Get()->EnsureLoaded()) {
+ SetAutoConnect(network.service_path().c_str(), network.auto_connect());
+ }
+}
+
void NetworkLibraryImpl::SaveWifiNetwork(const WifiNetwork& network) {
// Update the wifi network in the local cache.
WifiNetwork* wifi = GetWirelessNetworkByPath(wifi_networks_,
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h
index df55c07..b01089e 100644
--- a/chrome/browser/chromeos/cros/network_library.h
+++ b/chrome/browser/chromeos/cros/network_library.h
@@ -330,7 +330,8 @@ class NetworkLibrary {
virtual void DisconnectFromWirelessNetwork(
const WirelessNetwork& network) = 0;
- // Set whether or not to auto-connect to this network.
+ // Save network information including passwords (wifi) and auto-connect.
+ virtual void SaveCellularNetwork(const CellularNetwork& network) = 0;
virtual void SaveWifiNetwork(const WifiNetwork& network) = 0;
// Forget the passed in wireless (either cellular or wifi) network.
@@ -443,6 +444,7 @@ class NetworkLibraryImpl : public NetworkLibrary,
bool auto_connect);
virtual void ConnectToCellularNetwork(CellularNetwork network);
virtual void DisconnectFromWirelessNetwork(const WirelessNetwork& network);
+ virtual void SaveCellularNetwork(const CellularNetwork& network);
virtual void SaveWifiNetwork(const WifiNetwork& network);
virtual void ForgetWirelessNetwork(const WirelessNetwork& network);
diff --git a/chrome/browser/chromeos/options/cellular_config_view.cc b/chrome/browser/chromeos/options/cellular_config_view.cc
new file mode 100644
index 0000000..be1e761
--- /dev/null
+++ b/chrome/browser/chromeos/options/cellular_config_view.cc
@@ -0,0 +1,63 @@
+// Copyright (c) 2010 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/options/cellular_config_view.h"
+
+#include "app/l10n_util.h"
+#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/options/network_config_view.h"
+#include "grit/generated_resources.h"
+#include "views/controls/label.h"
+#include "views/grid_layout.h"
+#include "views/standard_layout.h"
+
+namespace chromeos {
+
+CellularConfigView::CellularConfigView(NetworkConfigView* parent,
+ const CellularNetwork& cellular)
+ : parent_(parent),
+ cellular_(cellular),
+ autoconnect_checkbox_(NULL) {
+ Init();
+}
+
+bool CellularConfigView::Save() {
+ // Save auto-connect here.
+ bool auto_connect = autoconnect_checkbox_->checked();
+ if (auto_connect != cellular_.auto_connect()) {
+ cellular_.set_auto_connect(auto_connect);
+ CrosLibrary::Get()->GetNetworkLibrary()->SaveCellularNetwork(cellular_);
+ }
+ return true;
+}
+
+void CellularConfigView::Init() {
+ views::GridLayout* layout = CreatePanelGridLayout(this);
+ SetLayoutManager(layout);
+
+ int column_view_set_id = 0;
+ views::ColumnSet* column_set = layout->AddColumnSet(column_view_set_id);
+ column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1,
+ views::GridLayout::USE_PREF, 0, 0);
+ column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
+ views::GridLayout::USE_PREF, 0, 0);
+
+ layout->StartRow(0, column_view_set_id);
+ layout->AddView(new views::Label(l10n_util::GetString(
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID)));
+ views::Label* label = new views::Label(ASCIIToWide(cellular_.name()));
+ label->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
+ layout->AddView(label);
+ layout->AddPaddingRow(0, kRelatedControlVerticalSpacing);
+
+ // Autoconnect checkbox
+ autoconnect_checkbox_ = new views::Checkbox(
+ l10n_util::GetString(IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_AUTO_CONNECT));
+ autoconnect_checkbox_->SetChecked(cellular_.auto_connect());
+ layout->StartRow(0, column_view_set_id);
+ layout->AddView(autoconnect_checkbox_, 2, 1);
+ layout->AddPaddingRow(0, kRelatedControlVerticalSpacing);
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/options/cellular_config_view.h b/chrome/browser/chromeos/options/cellular_config_view.h
new file mode 100644
index 0000000..f2ad38e
--- /dev/null
+++ b/chrome/browser/chromeos/options/cellular_config_view.h
@@ -0,0 +1,45 @@
+// Copyright (c) 2006-2008 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.
+
+#ifndef CHROME_BROWSER_CHROMEOS_OPTIONS_CELLULAR_CONFIG_VIEW_H_
+#define CHROME_BROWSER_CHROMEOS_OPTIONS_CELLULAR_CONFIG_VIEW_H_
+
+#include <string>
+
+#include "chrome/browser/chromeos/cros/network_library.h"
+#include "views/controls/button/checkbox.h"
+#include "views/view.h"
+
+namespace chromeos {
+
+class NetworkConfigView;
+
+// A dialog box for showing a password textfield.
+class CellularConfigView : public views::View {
+ public:
+ CellularConfigView(NetworkConfigView* parent,
+ const CellularNetwork& cellular);
+ explicit CellularConfigView(NetworkConfigView* parent);
+ virtual ~CellularConfigView() {}
+
+ // Save network information.
+ virtual bool Save();
+
+ private:
+
+ // Initializes UI.
+ void Init();
+
+ NetworkConfigView* parent_;
+
+ CellularNetwork cellular_;
+
+ views::Checkbox* autoconnect_checkbox_;
+
+ DISALLOW_COPY_AND_ASSIGN(CellularConfigView);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_OPTIONS_CELLULAR_CONFIG_VIEW_H_
diff --git a/chrome/browser/chromeos/options/network_config_view.cc b/chrome/browser/chromeos/options/network_config_view.cc
index d779862..b139b56 100644
--- a/chrome/browser/chromeos/options/network_config_view.cc
+++ b/chrome/browser/chromeos/options/network_config_view.cc
@@ -6,6 +6,7 @@
#include "app/l10n_util.h"
#include "base/string_util.h"
+#include "chrome/browser/chromeos/options/cellular_config_view.h"
#include "chrome/browser/chromeos/options/ip_config_view.h"
#include "chrome/browser/chromeos/options/wifi_config_view.h"
#include "grit/chromium_strings.h"
@@ -24,6 +25,7 @@ NetworkConfigView::NetworkConfigView(EthernetNetwork ethernet)
: browser_mode_(true),
flags_(FLAG_ETHERNET | FLAG_SHOW_IPCONFIG),
ethernet_(ethernet),
+ cellularconfig_view_(NULL),
wificonfig_view_(NULL),
ipconfig_view_(NULL),
delegate_(NULL) {
@@ -33,6 +35,7 @@ NetworkConfigView::NetworkConfigView(WifiNetwork wifi, bool login_only)
: browser_mode_(true),
flags_(FLAG_WIFI),
wifi_(wifi),
+ cellularconfig_view_(NULL),
wificonfig_view_(NULL),
ipconfig_view_(NULL),
delegate_(NULL) {
@@ -46,6 +49,7 @@ NetworkConfigView::NetworkConfigView(CellularNetwork cellular)
: browser_mode_(true),
flags_(FLAG_CELLULAR | FLAG_SHOW_IPCONFIG),
cellular_(cellular),
+ cellularconfig_view_(NULL),
wificonfig_view_(NULL),
ipconfig_view_(NULL),
delegate_(NULL) {
@@ -54,6 +58,7 @@ NetworkConfigView::NetworkConfigView(CellularNetwork cellular)
NetworkConfigView::NetworkConfigView()
: browser_mode_(true),
flags_(FLAG_WIFI | FLAG_LOGIN_ONLY | FLAG_OTHER_NETWORK),
+ cellularconfig_view_(NULL),
wificonfig_view_(NULL),
ipconfig_view_(NULL),
delegate_(NULL) {
@@ -90,6 +95,9 @@ bool NetworkConfigView::Cancel() {
bool NetworkConfigView::Accept() {
bool result = true;
+ if (flags_ & FLAG_CELLULAR) {
+ result = cellularconfig_view_->Save();
+ }
if (flags_ & FLAG_WIFI) {
if (flags_ & FLAG_LOGIN_ONLY)
result = wificonfig_view_->Login();
@@ -131,7 +139,13 @@ gfx::Size NetworkConfigView::GetPreferredSize() {
IDS_IMPORT_DIALOG_HEIGHT_LINES));
result.set_height(0); // IMPORT_DIALOG height is too large
// Expand the default size to fit results if necessary
- if (wificonfig_view_) {
+ if (cellularconfig_view_) {
+ gfx::Size s = cellularconfig_view_->GetPreferredSize();
+ s.set_height(s.height() + kPanelVertMargin * 2);
+ s.set_width(s.width() + kPanelHorizMargin * 2);
+ result = gfx::Size(std::max(result.width(), s.width()),
+ std::max(result.height(), s.height()));
+ } else if (wificonfig_view_) {
gfx::Size s = wificonfig_view_->GetPreferredSize();
s.set_height(s.height() + kPanelVertMargin * 2);
s.set_width(s.width() + kPanelHorizMargin * 2);
@@ -161,13 +175,19 @@ void NetworkConfigView::Init() {
tabs_->SetListener(this);
AddChildView(tabs_);
+ if (flags_ & FLAG_CELLULAR) {
+ cellularconfig_view_ = new CellularConfigView(this, cellular_);
+ tabs_->AddTab(
+ l10n_util::GetString(IDS_OPTIONS_SETTINGS_SECTION_TITLE_NETWORK_CONFIG),
+ cellularconfig_view_);
+ }
if (flags_ & FLAG_WIFI) {
if (flags_ & FLAG_OTHER_NETWORK)
wificonfig_view_ = new WifiConfigView(this);
else
wificonfig_view_ = new WifiConfigView(this, wifi_);
tabs_->AddTab(
- l10n_util::GetString(IDS_OPTIONS_SETTINGS_SECTION_TITLE_WIFI_CONFIG),
+ l10n_util::GetString(IDS_OPTIONS_SETTINGS_SECTION_TITLE_NETWORK_CONFIG),
wificonfig_view_);
}
diff --git a/chrome/browser/chromeos/options/network_config_view.h b/chrome/browser/chromeos/options/network_config_view.h
index 9a3b771..2bdd392 100644
--- a/chrome/browser/chromeos/options/network_config_view.h
+++ b/chrome/browser/chromeos/options/network_config_view.h
@@ -21,6 +21,7 @@ class Window;
namespace chromeos {
class IPConfigView;
+class CellularConfigView;
class WifiConfigView;
// A dialog box for showing a password textfield.
@@ -119,6 +120,7 @@ class NetworkConfigView : public views::View,
WifiNetwork wifi_;
CellularNetwork cellular_;
+ CellularConfigView* cellularconfig_view_;
WifiConfigView* wificonfig_view_;
IPConfigView* ipconfig_view_;
diff --git a/chrome/browser/chromeos/options/wifi_config_view.cc b/chrome/browser/chromeos/options/wifi_config_view.cc
index 2d79c05..8c7d95f 100644
--- a/chrome/browser/chromeos/options/wifi_config_view.cc
+++ b/chrome/browser/chromeos/options/wifi_config_view.cc
@@ -218,7 +218,7 @@ void WifiConfigView::Init() {
layout->StartRow(0, column_view_set_id);
layout->AddView(new views::Label(l10n_util::GetString(
- IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SSID)));
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID)));
if (other_network_) {
ssid_textfield_ = new views::Textfield(views::Textfield::STYLE_DEFAULT);
ssid_textfield_->SetController(this);
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 574a2fb..52820d8 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -520,6 +520,8 @@
'browser/chromeos/network_state_notifier.h',
'browser/chromeos/network_message_observer.cc',
'browser/chromeos/network_message_observer.h',
+ 'browser/chromeos/options/cellular_config_view.cc',
+ 'browser/chromeos/options/cellular_config_view.h',
'browser/chromeos/offline/offline_load_page.cc',
'browser/chromeos/offline/offline_load_page.h',
'browser/chromeos/offline/offline_load_service.cc',