1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/chromeos/login/helper.h" 63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/file_util.h" 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/chromeos/cros/network_library.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/system_access.h" 103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/google/google_util.h" 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "googleurl/src/gurl.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "grit/generated_resources.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/theme_resources.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "third_party/skia/include/effects/SkGradientShader.h" 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "ui/base/l10n/l10n_util.h" 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/resource/resource_bundle.h" 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/canvas_skia.h" 18201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "views/controls/button/menu_button.h" 19513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "views/controls/button/native_button.h" 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/label.h" 21513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "views/controls/textfield/textfield.h" 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/throbber.h" 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/painter.h" 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/screen.h" 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "views/widget/widget.h" 263f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "views/widget/widget_gtk.h" 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Time in ms per throbber frame. 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kThrobberFrameMs = 60; 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Time in ms before smoothed throbber is shown. 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kThrobberStartDelayMs = 500; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst SkColor kBackgroundCenterColor = SkColorSetRGB(41, 50, 67); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst SkColor kBackgroundEdgeColor = SK_ColorBLACK; 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst char kAccountRecoveryHelpUrl[] = 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "https://www.google.com/support/accounts/bin/answer.py?answer=48598"; 433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass BackgroundPainter : public views::Painter { 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BackgroundPainter() {} 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Paint(int w, int h, gfx::Canvas* canvas) { 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkRect rect; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch rect.set(SkIntToScalar(0), 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkIntToScalar(0), 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkIntToScalar(w), 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkIntToScalar(h)); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkPaint paint; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch paint.setStyle(SkPaint::kFill_Style); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch paint.setFlags(SkPaint::kAntiAlias_Flag); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkColor colors[2] = { kBackgroundCenterColor, kBackgroundEdgeColor }; 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkShader* s = SkGradientShader::CreateRadial( 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkPoint::Make(SkIntToScalar(w / 2), SkIntToScalar(h / 2)), 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkIntToScalar(w / 2), 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch colors, 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NULL, 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2, 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkShader::kClamp_TileMode, 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NULL); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch paint.setShader(s); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch s->unref(); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch canvas->AsCanvasSkia()->drawRect(rect, paint); 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(BackgroundPainter); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenThrobberHostView::ThrobberHostView() 7821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen : host_view_(this), 7921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen throbber_widget_(NULL) { 8021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 8121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 8221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenThrobberHostView::~ThrobberHostView() { 8321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen StopThrobber(); 8421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 8521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 8621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid ThrobberHostView::StartThrobber() { 8721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen StopThrobber(); 883f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 893f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen views::Widget* host_widget = host_view_->GetWidget(); 903f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen if (!host_widget) { 913f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen LOG(WARNING) << "Failed to start the throbber: no Widget"; 923f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen return; 933f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen } 943f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 953f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen GtkWidget* host_gtk_window = host_widget->GetNativeView(); 963f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen while (host_gtk_window && !GTK_IS_WINDOW(host_gtk_window)) 973f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen host_gtk_window = gtk_widget_get_parent(host_gtk_window); 983f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen if (!host_gtk_window) { 993f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen LOG(WARNING) << "Failed to start the throbber: no GtkWindow"; 1003f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen return; 10121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 1023f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 1033f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen views::SmoothedThrobber* throbber = CreateDefaultSmoothedThrobber(); 1043f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen throbber->set_stop_delay_ms(0); 1053f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen gfx::Rect throbber_bounds = CalculateThrobberBounds(throbber); 1063f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 107ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen views::Widget::CreateParams params(views::Widget::CreateParams::TYPE_POPUP); 108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen params.transparent = true; 109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen throbber_widget_ = views::Widget::CreateWidget(params); 110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static_cast<views::WidgetGtk*>(throbber_widget_)->make_transient_to_parent(); 1113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 1123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen throbber_bounds.Offset(host_view_->GetScreenBounds().origin()); 1133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen throbber_widget_->Init(host_gtk_window, throbber_bounds); 1143f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen throbber_widget_->SetContentsView(throbber); 11572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // This keeps the window from flashing at startup. 11672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen gdk_window_set_back_pixmap( 11772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen throbber_widget_->GetNativeView()->window, NULL, false); 1183f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen throbber_widget_->Show(); 1193f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // WM can ignore bounds before widget is shown. 1203f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen throbber_widget_->SetBounds(throbber_bounds); 1213f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen throbber->Start(); 12221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 12321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 12421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid ThrobberHostView::StopThrobber() { 12521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (throbber_widget_) { 12621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen throbber_widget_->Close(); 12721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen throbber_widget_ = NULL; 12821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 12921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 13021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 13121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsengfx::Rect ThrobberHostView::CalculateThrobberBounds(views::Throbber* throbber) { 13221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen gfx::Rect bounds(throbber->GetPreferredSize()); 13321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen bounds.set_x( 13421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen host_view_->width() - login::kThrobberRightMargin - bounds.width()); 13521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen bounds.set_y((host_view_->height() - bounds.height()) / 2); 13621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return bounds; 13721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 13821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 13921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenviews::SmoothedThrobber* CreateDefaultSmoothedThrobber() { 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::SmoothedThrobber* throbber = 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new views::SmoothedThrobber(kThrobberFrameMs); 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch throbber->SetFrames( 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ResourceBundle::GetSharedInstance().GetBitmapNamed(IDR_SPINNER)); 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch throbber->set_start_delay_ms(kThrobberStartDelayMs); 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return throbber; 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochviews::Throbber* CreateDefaultThrobber() { 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Throbber* throbber = new views::Throbber(kThrobberFrameMs, false); 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch throbber->SetFrames( 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ResourceBundle::GetSharedInstance().GetBitmapNamed(IDR_SPINNER)); 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return throbber; 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochviews::Painter* CreateBackgroundPainter() { 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return new BackgroundPainter(); 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochgfx::Rect CalculateScreenBounds(const gfx::Size& size) { 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gfx::Rect bounds(views::Screen::GetMonitorWorkAreaNearestWindow(NULL)); 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (!size.IsEmpty()) { 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int horizontal_diff = bounds.width() - size.width(); 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int vertical_diff = bounds.height() - size.height(); 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bounds.Inset(horizontal_diff / 2, vertical_diff / 2); 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return bounds; 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvoid CorrectLabelFontSize(views::Label* label) { 1704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (label) 1714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch label->SetFont(label->font().DeriveFont(kFontSizeCorrectionDelta)); 1724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 1734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 174201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochvoid CorrectMenuButtonFontSize(views::MenuButton* button) { 175201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch if (button) 176201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch button->SetFont(button->font().DeriveFont(kFontSizeCorrectionDelta)); 177201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch} 178201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 179513209b27ff55e2841eac0e4120199c23acce758Ben Murdochvoid CorrectNativeButtonFontSize(views::NativeButton* button) { 180513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (button) 181513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch button->set_font(button->font().DeriveFont(kFontSizeCorrectionDelta)); 182513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} 183513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 184513209b27ff55e2841eac0e4120199c23acce758Ben Murdochvoid CorrectTextfieldFontSize(views::Textfield* textfield) { 185513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (textfield) 186513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch textfield->SetFont(textfield->font().DeriveFont(kFontSizeCorrectionDelta)); 187513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} 188513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 189ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SetAndCorrectTextfieldFont(views::Textfield* textfield, 190ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const gfx::Font& font) { 191ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (textfield) 192ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen textfield->SetFont(font.DeriveFont(kFontSizeCorrectionDelta)); 193ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 194ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 1953345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickGURL GetAccountRecoveryHelpUrl() { 1963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick return google_util::AppendGoogleLocaleParam(GURL(kAccountRecoveryHelpUrl)); 1973345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 1983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 199dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenstring16 GetCurrentNetworkName(NetworkLibrary* network_library) { 200dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen if (!network_library) 201dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return string16(); 202dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 203dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen if (network_library->ethernet_connected()) { 204dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); 205dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } else if (network_library->wifi_connected()) { 206ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return UTF8ToUTF16(network_library->wifi_network()->name()); 207dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } else if (network_library->cellular_connected()) { 208ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return UTF8ToUTF16(network_library->cellular_network()->name()); 209dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } else if (network_library->ethernet_connecting()) { 210dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); 211dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } else if (network_library->wifi_connecting()) { 212ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return UTF8ToUTF16(network_library->wifi_network()->name()); 213dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } else if (network_library->cellular_connecting()) { 214ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return UTF8ToUTF16(network_library->cellular_network()->name()); 215dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } else { 216dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return string16(); 217dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 218dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 219dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 2204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace login { 2214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochgfx::Size WideButton::GetPreferredSize() { 2234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::Size preferred_size = NativeButton::GetPreferredSize(); 224201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch // Set minimal width. 2254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (preferred_size.width() < kButtonMinWidth) 2264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch preferred_size.set_width(kButtonMinWidth); 2274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch return preferred_size; 2284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 2294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} // namespace login 2314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 233