| Index: chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
|
| diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
|
| index 8f4b2da39505e1f7b7c67b8093a6f30aabf16a50..2f2fe97e3fee5a0070551f8cbd48ddf2b7326475 100644
|
| --- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
|
| +++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
|
| @@ -4,7 +4,6 @@
|
|
|
| #include "chrome/browser/ui/webui/chromeos/login/network_screen_handler.h"
|
|
|
| -#include "base/memory/scoped_ptr.h"
|
| #include "base/stringprintf.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "base/values.h"
|
| @@ -15,10 +14,10 @@
|
| #include "chrome/browser/chromeos/login/language_switch_menu.h"
|
| #include "chrome/browser/chromeos/login/webui_login_display.h"
|
| #include "chrome/browser/chromeos/status/input_method_menu.h"
|
| -#include "chrome/browser/chromeos/status/network_dropdown_button.h"
|
| #include "chrome/browser/chromeos/wm_ipc.h"
|
| -#include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.h"
|
| +#include "chrome/browser/ui/webui/chromeos/login/network_dropdown.h"
|
| #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
|
| +#include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.h"
|
| #include "content/browser/tab_contents/tab_contents.h"
|
| #include "content/browser/webui/web_ui.h"
|
| #include "grit/chromium_strings.h"
|
| @@ -37,28 +36,7 @@ const char kNetworkScreen[] = "connect";
|
| const char kJsApiNetworkOnExit[] = "networkOnExit";
|
| const char kJsApiNetworkOnLanguageChanged[] = "networkOnLanguageChanged";
|
| const char kJsApiNetworkOnInputMethodChanged[] = "networkOnInputMethodChanged";
|
| -const char kJsApiNetworkControlPosition[] = "networkControlPosition";
|
| -
|
| -// Width/height of the network control window.
|
| -const int kNetworkControlWidth = 250;
|
| -const int kNetworkControlHeight = 25;
|
| -
|
| -// Offsets for the network dropdown control menu.
|
| -const int kMenuHorizontalOffset = -3;
|
| -const int kMenuVerticalOffset = -1;
|
| -
|
| -// Initializes menu button default properties.
|
| -static void InitMenuButtonProperties(views::MenuButton* menu_button) {
|
| - menu_button->set_focusable(true);
|
| - menu_button->SetEnabledColor(SK_ColorBLACK);
|
| - menu_button->SetHighlightColor(SK_ColorBLACK);
|
| - menu_button->SetHoverColor(SK_ColorBLACK);
|
| - static_cast<views::TextButtonBorder*>(menu_button->border())->
|
| - copy_normal_set_to_hot_set();
|
| - menu_button->set_animate_on_state_change(false);
|
| - // Menu is positioned by bottom right corner of the MenuButton.
|
| - menu_button->set_menu_offset(kMenuHorizontalOffset, kMenuVerticalOffset);
|
| -}
|
| +const char kJsApiNetworkItemChosen[] = "networkItemChosen";
|
|
|
| } // namespace
|
|
|
| @@ -67,15 +45,13 @@ namespace chromeos {
|
| // NetworkScreenHandler, public: -----------------------------------------------
|
|
|
| NetworkScreenHandler::NetworkScreenHandler()
|
| - : network_window_(NULL),
|
| - screen_(NULL),
|
| + : screen_(NULL),
|
| is_continue_enabled_(false),
|
| show_on_init_(false) {
|
| }
|
|
|
| NetworkScreenHandler::~NetworkScreenHandler() {
|
| ClearErrors();
|
| - CloseNetworkWindow();
|
| }
|
|
|
| // NetworkScreenHandler, NetworkScreenActor implementation: --------------------
|
| @@ -92,11 +68,16 @@ void NetworkScreenHandler::Show() {
|
| show_on_init_ = true;
|
| return;
|
| }
|
| +
|
| + DCHECK(!dropdown_.get());
|
| + dropdown_.reset(new NetworkDropdown(
|
| + web_ui_, WebUILoginDisplay::GetLoginWindow()->GetNativeWindow()));
|
| +
|
| ShowScreen(kNetworkScreen, NULL);
|
| }
|
|
|
| void NetworkScreenHandler::Hide() {
|
| - CloseNetworkWindow();
|
| + dropdown_.reset();
|
| }
|
|
|
| void NetworkScreenHandler::ShowError(const string16& message) {
|
| @@ -165,31 +146,19 @@ void NetworkScreenHandler::Initialize() {
|
| // NetworkScreenHandler, WebUIMessageHandler implementation: -------------------
|
|
|
| void NetworkScreenHandler::RegisterMessages() {
|
| - web_ui_->RegisterMessageCallback(kJsApiNetworkControlPosition,
|
| - NewCallback(this, &NetworkScreenHandler::HandleNetworkControlPosition));
|
| web_ui_->RegisterMessageCallback(kJsApiNetworkOnExit,
|
| NewCallback(this, &NetworkScreenHandler::HandleOnExit));
|
| web_ui_->RegisterMessageCallback(kJsApiNetworkOnLanguageChanged,
|
| NewCallback(this, &NetworkScreenHandler::HandleOnLanguageChanged));
|
| web_ui_->RegisterMessageCallback(kJsApiNetworkOnInputMethodChanged,
|
| NewCallback(this, &NetworkScreenHandler::HandleOnInputMethodChanged));
|
| + web_ui_->RegisterMessageCallback(kJsApiNetworkItemChosen,
|
| + NewCallback(this, &NetworkScreenHandler::HandleNetworkItemChosen));
|
| +
|
| }
|
|
|
| // NetworkScreenHandler, private: ----------------------------------------------
|
|
|
| -void NetworkScreenHandler::HandleNetworkControlPosition(const ListValue* args) {
|
| - const size_t kParamCount = 2;
|
| - double x, y;
|
| - if (args->GetSize() != kParamCount ||
|
| - !args->GetDouble(0, &x) ||
|
| - !args->GetDouble(1, &y)) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| - network_control_pos_.SetPoint(static_cast<int>(x), static_cast<int>(y));
|
| - CreateOrUpdateNetworkWindow();
|
| -}
|
| -
|
| void NetworkScreenHandler::HandleOnExit(const ListValue* args) {
|
| ClearErrors();
|
| screen_->OnContinuePressed();
|
| @@ -218,6 +187,16 @@ void NetworkScreenHandler::HandleOnInputMethodChanged(const ListValue* args) {
|
| input_method::InputMethodManager::GetInstance()->ChangeInputMethod(id);
|
| }
|
|
|
| +void NetworkScreenHandler::HandleNetworkItemChosen(
|
| + const base::ListValue* args) {
|
| + DCHECK(args->GetSize() == 1);
|
| + double id;
|
| + if (!args->GetDouble(0, &id))
|
| + NOTREACHED();
|
| + DCHECK(dropdown_.get());
|
| + dropdown_->OnItemChosen(static_cast<int>(id));
|
| +}
|
| +
|
| ListValue* NetworkScreenHandler::GetLanguageList() {
|
| const std::string app_locale = g_browser_process->GetApplicationLocale();
|
| // GetSupportedInputMethods() never returns NULL.
|
| @@ -268,41 +247,4 @@ ListValue* NetworkScreenHandler::GetInputMethods() {
|
| return input_methods_list;
|
| }
|
|
|
| -void NetworkScreenHandler::CreateOrUpdateNetworkWindow() {
|
| - views::Widget* login_window = WebUILoginDisplay::GetLoginWindow();
|
| - gfx::Rect login_bounds = login_window->GetWindowScreenBounds();
|
| - gfx::Rect bounds(login_bounds.x() + network_control_pos_.x(),
|
| - login_bounds.y() + network_control_pos_.y(),
|
| - kNetworkControlWidth, kNetworkControlHeight);
|
| - if (!network_window_) {
|
| - views::Widget::InitParams widget_params(
|
| - views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
|
| - widget_params.bounds = bounds;
|
| - widget_params.double_buffer = true;
|
| - widget_params.parent = login_window->GetNativeView();
|
| - network_window_ = new views::Widget;
|
| - network_window_->Init(widget_params);
|
| - std::vector<int> params;
|
| - chromeos::WmIpc::instance()->SetWindowType(
|
| - network_window_->GetNativeView(),
|
| - chromeos::WM_IPC_WINDOW_CHROME_INFO_BUBBLE,
|
| - ¶ms);
|
| - NetworkDropdownButton* button =
|
| - new NetworkDropdownButton(false /* not a browser mode */,
|
| - login_window->GetNativeWindow(),
|
| - true /* show proxy settings in menu */);
|
| - InitMenuButtonProperties(button);
|
| - network_window_->SetContentsView(button);
|
| - network_window_->Show();
|
| - } else {
|
| - network_window_->SetBounds(bounds);
|
| - }
|
| -}
|
| -
|
| -void NetworkScreenHandler::CloseNetworkWindow() {
|
| - if (network_window_)
|
| - network_window_->Close();
|
| - network_window_ = NULL;
|
| -}
|
| -
|
| } // namespace chromeos
|
|
|