Index: chrome/browser/chromeos/status/network_menu.cc |
=================================================================== |
--- chrome/browser/chromeos/status/network_menu.cc (revision 61713) |
+++ chrome/browser/chromeos/status/network_menu.cc (working copy) |
@@ -6,12 +6,19 @@ |
#include "app/l10n_util.h" |
#include "app/resource_bundle.h" |
+#include "base/command_line.h" |
+#include "base/stringprintf.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/browser.h" |
+#include "chrome/browser/browser_list.h" |
#include "chrome/browser/chromeos/cros/cros_library.h" |
+#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/url_constants.h" |
#include "gfx/canvas_skia.h" |
#include "gfx/skbitmap_operations.h" |
#include "grit/generated_resources.h" |
#include "grit/theme_resources.h" |
+#include "net/base/escape.h" |
#include "views/window/window.h" |
namespace chromeos { |
@@ -68,6 +75,17 @@ |
return !(menu_items_[index].flags & FLAG_DISABLED); |
} |
+void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) { |
+ Browser* browser = BrowserList::GetLastActive(); |
+ if (!browser) |
+ return; |
+ std::string page = StringPrintf("%s?servicePath=%s&networkType=%d", |
+ chrome::kInternetOptionsSubPage, |
+ EscapeUrlEncodedData(network.service_path()).c_str(), |
+ network.type()); |
+ browser->ShowOptionsTab(page); |
+} |
+ |
void NetworkMenu::ActivatedAt(int index) { |
// When we are refreshing the menu, ignore menu item activation. |
if (refreshing_menu_) |
@@ -96,12 +114,18 @@ |
view->SetLoginTextfieldFocus(); |
} else if (flags & FLAG_ETHERNET) { |
if (cros->ethernet_connected()) { |
- NetworkConfigView* view = new NetworkConfigView(cros->ethernet_network()); |
- view->set_browser_mode(IsBrowserMode()); |
- views::Window* window = views::Window::CreateChromeWindow( |
- GetNativeWindow(), gfx::Rect(), view); |
- window->SetIsAlwaysOnTop(true); |
- window->Show(); |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableTabbedOptions)) { |
+ ShowTabbedNetworkSettings(cros->ethernet_network()); |
+ } else { |
+ NetworkConfigView* view = |
+ new NetworkConfigView(cros->ethernet_network()); |
+ view->set_browser_mode(IsBrowserMode()); |
+ views::Window* window = views::Window::CreateChromeWindow( |
+ GetNativeWindow(), gfx::Rect(), view); |
+ window->SetIsAlwaysOnTop(true); |
+ window->Show(); |
+ } |
} |
} else if (flags & FLAG_WIFI) { |
WifiNetwork wifi; |
@@ -113,13 +137,18 @@ |
// TODO(stevenjb): Show notification. |
} else if (wifi.name() == cros->wifi_name()) { |
if (cros->wifi_connected()) { |
- // If we are already connected, open the config dialog. |
- NetworkConfigView* view = new NetworkConfigView(wifi, false); |
- view->set_browser_mode(IsBrowserMode()); |
- views::Window* window = views::Window::CreateChromeWindow( |
- GetNativeWindow(), gfx::Rect(), view); |
- window->SetIsAlwaysOnTop(true); |
- window->Show(); |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableTabbedOptions)) { |
+ ShowTabbedNetworkSettings(wifi); |
+ } else { |
+ // If we are already connected, open the config dialog. |
+ NetworkConfigView* view = new NetworkConfigView(wifi, false); |
+ view->set_browser_mode(IsBrowserMode()); |
+ views::Window* window = views::Window::CreateChromeWindow( |
+ GetNativeWindow(), gfx::Rect(), view); |
+ window->SetIsAlwaysOnTop(true); |
+ window->Show(); |
+ } |
} else { |
// TODO(stevenjb): Connection in progress. Show dialog? |
} |
@@ -152,12 +181,17 @@ |
// If clicked on a network that we are already connected to or we are |
// currently trying to connect to, then open config dialog. |
if (cros->cellular_connected()) { |
- NetworkConfigView* view = new NetworkConfigView(cellular); |
- view->set_browser_mode(IsBrowserMode()); |
- views::Window* window = views::Window::CreateChromeWindow( |
- GetNativeWindow(), gfx::Rect(), view); |
- window->SetIsAlwaysOnTop(true); |
- window->Show(); |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableTabbedOptions)) { |
+ ShowTabbedNetworkSettings(cellular); |
+ } else { |
+ NetworkConfigView* view = new NetworkConfigView(cellular); |
+ view->set_browser_mode(IsBrowserMode()); |
+ views::Window* window = views::Window::CreateChromeWindow( |
+ GetNativeWindow(), gfx::Rect(), view); |
+ window->SetIsAlwaysOnTop(true); |
+ window->Show(); |
+ } |
} else { |
// TODO(stevenjb): Connection in progress. Show dialog? |
} |