summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/login
diff options
context:
space:
mode:
authorfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-06 17:56:32 +0000
committerfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-06 17:56:32 +0000
commit842cd6c6d12fb66b49e6e342499e1f77c1bbb0fc (patch)
tree884eca3aeea1a6b2840616cefe299bfb291c3048 /chrome/browser/chromeos/login
parent2b5b8bac901de2dfcec20e5b01944d9e1cd4a2fd (diff)
downloadchromium_src-842cd6c6d12fb66b49e6e342499e1f77c1bbb0fc.zip
chromium_src-842cd6c6d12fb66b49e6e342499e1f77c1bbb0fc.tar.gz
chromium_src-842cd6c6d12fb66b49e6e342499e1f77c1bbb0fc.tar.bz2
Added OOBE update screen stub.
Moved OOBE views classes to the chromeos namespace. BUG=35249 TEST=run out/Debug/chrome --login-manager --login-screen=update TBR=denisromanov (Checking in patch for Denis Romanov, previously reviewed here: http://codereview.chromium.org/669089/show) Review URL: http://codereview.chromium.org/669241 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40842 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/login')
-rw-r--r--chrome/browser/chromeos/login/account_screen.cc1
-rw-r--r--chrome/browser/chromeos/login/account_screen.h2
-rw-r--r--chrome/browser/chromeos/login/login_manager_view.cc37
-rw-r--r--chrome/browser/chromeos/login/login_manager_view.h18
-rw-r--r--chrome/browser/chromeos/login/network_selection_view.cc52
-rw-r--r--chrome/browser/chromeos/login/network_selection_view.h30
-rw-r--r--chrome/browser/chromeos/login/update_view.cc82
-rw-r--r--chrome/browser/chromeos/login/update_view.h42
-rw-r--r--chrome/browser/chromeos/login/view_screen.h7
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.cc9
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.h2
11 files changed, 212 insertions, 70 deletions
diff --git a/chrome/browser/chromeos/login/account_screen.cc b/chrome/browser/chromeos/login/account_screen.cc
index 0b14bfb..e50c068 100644
--- a/chrome/browser/chromeos/login/account_screen.cc
+++ b/chrome/browser/chromeos/login/account_screen.cc
@@ -19,7 +19,6 @@ const char kCreateAccountPageUrl[] =
} // namespace
-
///////////////////////////////////////////////////////////////////////////////
// AccountScreen, public:
AccountScreen::AccountScreen(WizardScreenDelegate* delegate)
diff --git a/chrome/browser/chromeos/login/account_screen.h b/chrome/browser/chromeos/login/account_screen.h
index ad3ac58..00b9d57 100644
--- a/chrome/browser/chromeos/login/account_screen.h
+++ b/chrome/browser/chromeos/login/account_screen.h
@@ -51,5 +51,3 @@ class AccountScreen : public ViewScreen<AccountCreationView>,
};
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_ACCOUNT_SCREEN_H_
-
-
diff --git a/chrome/browser/chromeos/login/login_manager_view.cc b/chrome/browser/chromeos/login/login_manager_view.cc
index a714a4d..db57896 100644
--- a/chrome/browser/chromeos/login/login_manager_view.cc
+++ b/chrome/browser/chromeos/login/login_manager_view.cc
@@ -64,7 +64,9 @@ const bool kStubOutLogin = false;
} // namespace
-LoginManagerView::LoginManagerView(chromeos::ScreenObserver* observer)
+namespace chromeos {
+
+LoginManagerView::LoginManagerView(ScreenObserver* observer)
: username_field_(NULL),
password_field_(NULL),
os_version_label_(NULL),
@@ -90,8 +92,8 @@ LoginManagerView::~LoginManagerView() {
void LoginManagerView::Init() {
// Use rounded rect background.
- views::Painter* painter = chromeos::CreateWizardPainter(
- &chromeos::BorderDefinition::kScreenBorder);
+ views::Painter* painter = CreateWizardPainter(
+ &BorderDefinition::kScreenBorder);
set_background(
views::Background::CreateBackgroundPainter(true, painter));
@@ -147,8 +149,7 @@ void LoginManagerView::Init() {
UpdateLocalizedStrings();
// Restore previously logged in user.
- std::vector<chromeos::UserManager::User> users =
- chromeos::UserManager::Get()->GetUsers();
+ std::vector<UserManager::User> users = UserManager::Get()->GetUsers();
if (users.size() > 0) {
username_field_->SetText(UTF8ToUTF16(users[0].email()));
}
@@ -157,7 +158,7 @@ void LoginManagerView::Init() {
// Controller to handle events from textfields
username_field_->SetController(this);
password_field_->SetController(this);
- if (chromeos::LoginLibrary::EnsureLoaded()) {
+ if (LoginLibrary::EnsureLoaded()) {
loader_.GetVersion(
&consumer_, NewCallback(this, &LoginManagerView::OnOSVersion));
} else if (!kStubOutLogin) {
@@ -245,8 +246,8 @@ void LoginManagerView::Layout() {
y += (setViewBounds(sign_in_button_, x, y, max_width, false) + kRowPad);
y += (setViewBounds(error_label_, x, y, max_width, true) + kRowPad);
- int padding = chromeos::BorderDefinition::kScreenBorder.shadow +
- chromeos::BorderDefinition::kScreenBorder.corner_radius / 2;
+ int padding = BorderDefinition::kScreenBorder.shadow +
+ BorderDefinition::kScreenBorder.corner_radius / 2;
setViewBounds(
os_version_label_,
padding,
@@ -273,7 +274,7 @@ void LoginManagerView::ButtonPressed(
void LoginManagerView::OnLoginFailure() {
LOG(INFO) << "LoginManagerView: OnLoginFailure()";
- chromeos::NetworkLibrary* network = chromeos::NetworkLibrary::Get();
+ NetworkLibrary* network = NetworkLibrary::Get();
// Check networking after trying to login in case user is
// cached locally or the local admin account.
if (!network || !network->EnsureLoaded())
@@ -288,7 +289,7 @@ void LoginManagerView::OnLoginSuccess(const std::string& username) {
LOG(INFO) << "LoginManagerView: OnLoginSuccess()";
// TODO(cmasone): something sensible if errors occur.
SetupSession(username);
- chromeos::UserManager::Get()->UserLoggedIn(username);
+ UserManager::Get()->UserLoggedIn(username);
// Now launch the initial browser window.
BrowserInit browser_init;
@@ -301,7 +302,7 @@ void LoginManagerView::OnLoginSuccess(const std::string& username) {
Profile* profile = profile_manager->GetDefaultProfile(user_data_dir);
int return_code;
- chromeos::ExternalCookieHandler::GetCookies(command_line, profile);
+ ExternalCookieHandler::GetCookies(command_line, profile);
LOG(INFO) << "OnLoginSuccess: Preparing to launch browser";
browser_init.LaunchBrowser(command_line,
profile,
@@ -312,10 +313,10 @@ void LoginManagerView::OnLoginSuccess(const std::string& username) {
void LoginManagerView::SetupSession(const std::string& username) {
if (observer_) {
- observer_->OnExit(chromeos::ScreenObserver::LOGIN_SIGN_IN_SELECTED);
+ observer_->OnExit(ScreenObserver::LOGIN_SIGN_IN_SELECTED);
}
- if (chromeos::LoginLibrary::EnsureLoaded())
- chromeos::LoginLibrary::Get()->StartSession(username, "");
+ if (LoginLibrary::EnsureLoaded())
+ LoginLibrary::Get()->StartSession(username, "");
}
void LoginManagerView::Login() {
@@ -345,7 +346,7 @@ void LoginManagerView::ShowError(int error_id) {
bool LoginManagerView::HandleKeystroke(views::Textfield* s,
const views::Textfield::Keystroke& keystroke) {
- if (!kStubOutLogin && !chromeos::LoginLibrary::EnsureLoaded())
+ if (!kStubOutLogin && !LoginLibrary::EnsureLoaded())
return false;
if (keystroke.GetKeyboardCode() == base::VKEY_TAB) {
@@ -365,7 +366,7 @@ bool LoginManagerView::HandleKeystroke(views::Textfield* s,
} else if (keystroke.GetKeyboardCode() == base::VKEY_ESCAPE) {
// TODO(nkostylev): Implement non-textfield dependent keystroke handler.
if (observer_) {
- observer_->OnExit(chromeos::ScreenObserver::LOGIN_BACK);
+ observer_->OnExit(ScreenObserver::LOGIN_BACK);
}
return true;
}
@@ -374,7 +375,9 @@ bool LoginManagerView::HandleKeystroke(views::Textfield* s,
}
void LoginManagerView::OnOSVersion(
- chromeos::VersionLoader::Handle handle,
+ VersionLoader::Handle handle,
std::string version) {
os_version_label_->SetText(ASCIIToWide(version));
}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/login_manager_view.h b/chrome/browser/chromeos/login/login_manager_view.h
index 5dfbe50..8d91a2b 100644
--- a/chrome/browser/chromeos/login/login_manager_view.h
+++ b/chrome/browser/chromeos/login/login_manager_view.h
@@ -16,21 +16,21 @@
#include "views/view.h"
#include "views/widget/widget_gtk.h"
-namespace chromeos {
-class ScreenObserver;
-} // namespace chromeos
-
namespace views {
class Label;
class NativeButton;
} // namespace views
+namespace chromeos {
+
+class ScreenObserver;
+
class LoginManagerView : public views::View,
public LoginStatusConsumer,
public views::Textfield::Controller,
public views::ButtonListener {
public:
- explicit LoginManagerView(chromeos::ScreenObserver* observer);
+ explicit LoginManagerView(ScreenObserver* observer);
virtual ~LoginManagerView();
void Init();
@@ -83,7 +83,7 @@ class LoginManagerView : public views::View,
void SetupSession(const std::string& username);
// Callback from chromeos::VersionLoader giving the version.
- void OnOSVersion(chromeos::VersionLoader::Handle handle,
+ void OnOSVersion(VersionLoader::Handle handle,
std::string version);
// Attempt to login with the current field values.
@@ -105,13 +105,13 @@ class LoginManagerView : public views::View,
views::NativeButton* sign_in_button_;
// Handles asynchronously loading the version.
- chromeos::VersionLoader loader_;
+ VersionLoader loader_;
// Used to request the version.
CancelableRequestConsumer consumer_;
// Notifications receiver.
- chromeos::ScreenObserver* observer_;
+ ScreenObserver* observer_;
// String ID for the current error message.
// Set to -1 if no messages is shown.
@@ -128,4 +128,6 @@ class LoginManagerView : public views::View,
DISALLOW_COPY_AND_ASSIGN(LoginManagerView);
};
+} // namespace chromeos
+
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_VIEW_H_
diff --git a/chrome/browser/chromeos/login/network_selection_view.cc b/chrome/browser/chromeos/login/network_selection_view.cc
index 47bfcc5..cee8acb 100644
--- a/chrome/browser/chromeos/login/network_selection_view.cc
+++ b/chrome/browser/chromeos/login/network_selection_view.cc
@@ -40,14 +40,15 @@ const SkColor kWelcomeColor = 0x0054A4;
} // namespace
-NetworkSelectionView::NetworkSelectionView(chromeos::ScreenObserver* observer)
+namespace chromeos {
+
+NetworkSelectionView::NetworkSelectionView(ScreenObserver* observer)
: network_combobox_(NULL),
welcome_label_(NULL),
select_network_label_(NULL),
connecting_network_label_(NULL),
observer_(observer),
network_notification_(false) {
- ChangeNetworkNotification(true);
}
NetworkSelectionView::~NetworkSelectionView() {
@@ -58,8 +59,8 @@ NetworkSelectionView::~NetworkSelectionView() {
void NetworkSelectionView::Init() {
// TODO(nkostylev): Add UI language and logo.
// Use rounded rect background.
- views::Painter* painter = chromeos::CreateWizardPainter(
- &chromeos::BorderDefinition::kScreenBorder);
+ views::Painter* painter = CreateWizardPainter(
+ &BorderDefinition::kScreenBorder);
set_background(
views::Background::CreateBackgroundPainter(true, painter));
@@ -173,7 +174,7 @@ std::wstring NetworkSelectionView::GetItemAt(int index) {
l10n_util::GetString(IDS_STATUSBAR_NO_NETWORKS_MESSAGE) :
l10n_util::GetString(IDS_NETWORK_SELECTION_NONE);
}
- chromeos::NetworkList::NetworkItem* network =
+ NetworkList::NetworkItem* network =
networks_.GetNetworkAt(index - 1);
return network ? UTF16ToWide(network->label) : std::wstring();
}
@@ -196,20 +197,20 @@ void NetworkSelectionView::ItemChanged(views::Combobox* sender,
if (networks_.IsEmpty())
return;
- chromeos::NetworkList::NetworkItem* network =
+ NetworkList::NetworkItem* network =
networks_.GetNetworkAt(new_index - 1);
if (network) {
- if (chromeos::NetworkList::NETWORK_WIFI == network->network_type) {
+ if (NetworkList::NETWORK_WIFI == network->network_type) {
if (network->wifi_network.encrypted) {
OpenPasswordDialog(network->wifi_network);
return;
} else {
- chromeos::NetworkLibrary::Get()->ConnectToWifiNetwork(
+ NetworkLibrary::Get()->ConnectToWifiNetwork(
network->wifi_network, string16());
}
- } else if (chromeos::NetworkList::NETWORK_CELLULAR ==
+ } else if (NetworkList::NETWORK_CELLULAR ==
network->network_type) {
- chromeos::NetworkLibrary::Get()->ConnectToCellularNetwork(
+ NetworkLibrary::Get()->ConnectToCellularNetwork(
network->cellular_network);
}
}
@@ -220,7 +221,7 @@ void NetworkSelectionView::ItemChanged(views::Combobox* sender,
void NetworkSelectionView::ButtonPressed(views::Button* sender,
const views::Event& event) {
if (observer_) {
- observer_->OnExit(chromeos::ScreenObserver::NETWORK_OFFLINE);
+ observer_->OnExit(ScreenObserver::NETWORK_OFFLINE);
ChangeNetworkNotification(false);
}
}
@@ -230,12 +231,12 @@ void NetworkSelectionView::ButtonPressed(views::Button* sender,
bool NetworkSelectionView::OnPasswordDialogAccept(const std::string& ssid,
const string16& password) {
- chromeos::NetworkList::NetworkItem* network =
- networks_.GetNetworkById(chromeos::NetworkList::NETWORK_WIFI,
+ NetworkList::NetworkItem* network =
+ networks_.GetNetworkById(NetworkList::NETWORK_WIFI,
ASCIIToUTF16(ssid));
if (network &&
- chromeos::NetworkList::NETWORK_WIFI == network->network_type) {
- chromeos::NetworkLibrary::Get()->ConnectToWifiNetwork(network->wifi_network,
+ NetworkList::NETWORK_WIFI == network->network_type) {
+ NetworkLibrary::Get()->ConnectToWifiNetwork(network->wifi_network,
password);
}
return true;
@@ -245,12 +246,11 @@ bool NetworkSelectionView::OnPasswordDialogAccept(const std::string& ssid,
// NetworkLibrary::Observer implementation:
void NetworkSelectionView::NetworkChanged(
- chromeos::NetworkLibrary* network_lib) {
+ NetworkLibrary* network_lib) {
// Save network selection in case it would be available after refresh.
- chromeos::NetworkList::NetworkType network_type =
- chromeos::NetworkList::NETWORK_EMPTY;
+ NetworkList::NetworkType network_type = NetworkList::NETWORK_EMPTY;
string16 network_id;
- chromeos::NetworkList::NetworkItem* network = GetSelectedNetwork();
+ NetworkList::NetworkItem* network = GetSelectedNetwork();
if (network) {
network_type = network->network_type;
network_id = network->label;
@@ -268,27 +268,27 @@ void NetworkSelectionView::NetworkChanged(
SelectNetwork(network_type, network_id);
}
-void NetworkSelectionView::NetworkTraffic(chromeos::NetworkLibrary* cros,
+void NetworkSelectionView::NetworkTraffic(NetworkLibrary* cros,
int traffic_type) {
}
////////////////////////////////////////////////////////////////////////////////
// NetworkSelectionView, private:
-chromeos::NetworkList::NetworkItem* NetworkSelectionView::GetSelectedNetwork() {
+NetworkList::NetworkItem* NetworkSelectionView::GetSelectedNetwork() {
return networks_.GetNetworkAt(network_combobox_->selected_item() - 1);
}
void NetworkSelectionView::NotifyOnConnection() {
if (observer_) {
- observer_->OnExit(chromeos::ScreenObserver::NETWORK_CONNECTED);
+ observer_->OnExit(ScreenObserver::NETWORK_CONNECTED);
ChangeNetworkNotification(false);
}
}
-void NetworkSelectionView::OpenPasswordDialog(chromeos::WifiNetwork network) {
+void NetworkSelectionView::OpenPasswordDialog(WifiNetwork network) {
// TODO(nkostylev): Reuse this code in network menu button.
- chromeos::PasswordDialogView* dialog = new chromeos::PasswordDialogView(
+ PasswordDialogView* dialog = new PasswordDialogView(
this, network.ssid);
views::Window* window = views::Window::CreateChromeWindow(
GetWindow()->GetNativeWindow(), gfx::Rect(), dialog);
@@ -301,7 +301,7 @@ void NetworkSelectionView::OpenPasswordDialog(chromeos::WifiNetwork network) {
}
void NetworkSelectionView::SelectNetwork(
- chromeos::NetworkList::NetworkType type, const string16& id) {
+ NetworkList::NetworkType type, const string16& id) {
int index = networks_.GetNetworkIndexById(type, id);
if (index >= 0) {
network_combobox_->SetSelectedItem(index + 1);
@@ -326,3 +326,5 @@ void NetworkSelectionView::ChangeNetworkNotification(bool subscribe) {
else
chromeos::NetworkLibrary::Get()->RemoveObserver(this);
}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/network_selection_view.h b/chrome/browser/chromeos/login/network_selection_view.h
index cd928d9..904757e 100644
--- a/chrome/browser/chromeos/login/network_selection_view.h
+++ b/chrome/browser/chromeos/login/network_selection_view.h
@@ -18,24 +18,24 @@
#include "views/widget/widget_gtk.h"
#include "views/window/window_delegate.h"
-namespace chromeos {
-class ScreenObserver;
-} // namespace chromeos
-
namespace views {
class Label;
class NativeButton;
} // namespace views
+namespace chromeos {
+
+class ScreenObserver;
+
// View for the network selection/initial welcome screen.
class NetworkSelectionView : public views::View,
public ComboboxModel,
public views::Combobox::Listener,
public views::ButtonListener,
- public chromeos::PasswordDialogDelegate,
- public chromeos::NetworkLibrary::Observer {
+ public PasswordDialogDelegate,
+ public NetworkLibrary::Observer {
public:
- explicit NetworkSelectionView(chromeos::ScreenObserver* observer);
+ explicit NetworkSelectionView(ScreenObserver* observer);
virtual ~NetworkSelectionView();
void Init();
@@ -64,21 +64,21 @@ class NetworkSelectionView : public views::View,
const string16& password);
// NetworkLibrary::Observer implementation:
- virtual void NetworkChanged(chromeos::NetworkLibrary* network_lib);
- virtual void NetworkTraffic(chromeos::NetworkLibrary* cros, int traffic_type);
+ virtual void NetworkChanged(NetworkLibrary* network_lib);
+ virtual void NetworkTraffic(NetworkLibrary* cros, int traffic_type);
private:
// Returns currently selected network in the combobox.
- chromeos::NetworkList::NetworkItem* GetSelectedNetwork();
+ NetworkList::NetworkItem* GetSelectedNetwork();
// Notifies wizard on successful connection.
void NotifyOnConnection();
// Opens password dialog for the encrypted networks.
- void OpenPasswordDialog(chromeos::WifiNetwork network);
+ void OpenPasswordDialog(WifiNetwork network);
// Selects network by type and id.
- void SelectNetwork(chromeos::NetworkList::NetworkType type,
+ void SelectNetwork(NetworkList::NetworkType type,
const string16& id);
// Shows network connecting status or network selection otherwise.
@@ -95,16 +95,18 @@ class NetworkSelectionView : public views::View,
views::NativeButton* offline_button_;
// Notifications receiver.
- chromeos::ScreenObserver* observer_;
+ ScreenObserver* observer_;
// True if subscribed to network change notification.
bool network_notification_;
// Cached networks.
- chromeos::NetworkList networks_;
+ NetworkList networks_;
string16 network_id_;
DISALLOW_COPY_AND_ASSIGN(NetworkSelectionView);
};
+} // namespace chromeos
+
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_NETWORK_SELECTION_VIEW_H_
diff --git a/chrome/browser/chromeos/login/update_view.cc b/chrome/browser/chromeos/login/update_view.cc
new file mode 100644
index 0000000..259fe63
--- /dev/null
+++ b/chrome/browser/chromeos/login/update_view.cc
@@ -0,0 +1,82 @@
+// 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/login/update_view.h"
+
+#include <string>
+
+#include "app/l10n_util.h"
+#include "app/resource_bundle.h"
+#include "chrome/browser/chromeos/login/rounded_rect_painter.h"
+#include "grit/chromium_strings.h"
+#include "grit/generated_resources.h"
+#include "views/border.h"
+#include "views/controls/label.h"
+#include "views/widget/widget.h"
+#include "views/window/window.h"
+#include "views/window/window_gtk.h"
+
+using views::Background;
+using views::Label;
+using views::View;
+using views::Widget;
+
+namespace {
+
+// Y offset for the 'installing updates' label.
+const int kInstallingUpdatesLabelY = 200;
+// Labels colour.
+const SkColor kLabelColor = 0xFF000000;
+
+} // namespace
+
+namespace chromeos {
+
+UpdateView::UpdateView(chromeos::ScreenObserver* observer)
+ : installing_updates_label_(NULL),
+ observer_(observer) {
+}
+
+UpdateView::~UpdateView() {
+}
+
+void UpdateView::Init() {
+ // Use rounded-rect background.
+ views::Painter* painter = chromeos::CreateWizardPainter(
+ &chromeos::BorderDefinition::kScreenBorder);
+ set_background(views::Background::CreateBackgroundPainter(true, painter));
+
+ // Set UI elements' apperance.
+ ResourceBundle& res_bundle = ResourceBundle::GetSharedInstance();
+ gfx::Font base_font = res_bundle.GetFont(ResourceBundle::BaseFont);
+ installing_updates_label_ = new views::Label();
+ installing_updates_label_->SetColor(kLabelColor);
+ installing_updates_label_->SetFont(base_font);
+
+ UpdateLocalizedStrings();
+ AddChildView(installing_updates_label_);
+}
+
+void UpdateView::UpdateLocalizedStrings() {
+ installing_updates_label_->SetText(
+ l10n_util::GetStringF(IDS_INSTALLING_UPDATE,
+ l10n_util::GetString(IDS_PRODUCT_OS_NAME)));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// views::View: implementation:
+
+void UpdateView::Layout() {
+ int x = (width() -
+ installing_updates_label_->GetPreferredSize().width()) / 2;
+ int y = kInstallingUpdatesLabelY;
+ installing_updates_label_->SetBounds(
+ x,
+ y,
+ installing_updates_label_->GetPreferredSize().width(),
+ installing_updates_label_->GetPreferredSize().height());
+ SchedulePaint();
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/update_view.h b/chrome/browser/chromeos/login/update_view.h
new file mode 100644
index 0000000..398bba4
--- /dev/null
+++ b/chrome/browser/chromeos/login/update_view.h
@@ -0,0 +1,42 @@
+// 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.
+
+#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_UPDATE_VIEW_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_UPDATE_VIEW_H_
+
+#include "views/view.h"
+
+namespace views {
+class Label;
+} // namespace views
+
+namespace chromeos {
+
+class ScreenObserver;
+
+// View for the network selection/initial welcome screen.
+class UpdateView : public views::View {
+ public:
+ explicit UpdateView(chromeos::ScreenObserver* observer);
+ virtual ~UpdateView();
+
+ void Init();
+ void UpdateLocalizedStrings();
+
+ // views::View implementation:
+ virtual void Layout();
+
+ private:
+ // Dialog controls.
+ views::Label* installing_updates_label_;
+
+ // Notifications receiver.
+ chromeos::ScreenObserver* observer_;
+
+ DISALLOW_COPY_AND_ASSIGN(UpdateView);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_LOGIN_UPDATE_VIEW_H_
diff --git a/chrome/browser/chromeos/login/view_screen.h b/chrome/browser/chromeos/login/view_screen.h
index ce324da..38b5795 100644
--- a/chrome/browser/chromeos/login/view_screen.h
+++ b/chrome/browser/chromeos/login/view_screen.h
@@ -7,6 +7,7 @@
#include "chrome/browser/chromeos/login/login_manager_view.h"
#include "chrome/browser/chromeos/login/network_selection_view.h"
+#include "chrome/browser/chromeos/login/update_view.h"
#include "chrome/browser/chromeos/login/wizard_screen.h"
template <class V>
@@ -81,8 +82,8 @@ void ViewScreen<V>::InitView() {
view_->SetVisible(false);
}
-typedef DefaultViewScreen<LoginManagerView> LoginScreen;
-typedef DefaultViewScreen<NetworkSelectionView> NetworkScreen;
+typedef DefaultViewScreen<chromeos::LoginManagerView> LoginScreen;
+typedef DefaultViewScreen<chromeos::NetworkSelectionView> NetworkScreen;
+typedef DefaultViewScreen<chromeos::UpdateView> UpdateScreen;
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_VIEW_SCREEN_H_
-
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc
index db8319c..6574a98 100644
--- a/chrome/browser/chromeos/login/wizard_controller.cc
+++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -25,6 +25,7 @@ const int kWizardScreenHeight = 416;
const char kNetworkScreenName[] = "network";
const char kLoginScreenName[] = "login";
const char kAccountScreenName[] = "account";
+const char kUpdateScreenName[] = "update";
} // namespace
@@ -96,6 +97,8 @@ void WizardController::ShowFirstScreen(const std::string& first_screen_name) {
SetCurrentScreen(GetLoginScreen());
} else if (first_screen_name == kAccountScreenName) {
SetCurrentScreen(GetAccountScreen());
+ } else if (first_screen_name == kUpdateScreenName) {
+ SetCurrentScreen(GetUpdateScreen());
} else {
if (chromeos::UserManager::Get()->GetUsers().empty()) {
SetCurrentScreen(GetNetworkScreen());
@@ -152,6 +155,12 @@ AccountScreen* WizardController::GetAccountScreen() {
return account_screen_.get();
}
+UpdateScreen* WizardController::GetUpdateScreen() {
+ if (!update_screen_.get())
+ update_screen_.reset(new UpdateScreen(this));
+ return update_screen_.get();
+}
+
void WizardController::SetCurrentScreen(WizardScreen* new_current) {
if (current_screen_)
current_screen_->Hide();
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h
index 8a7cd5d..cd29187 100644
--- a/chrome/browser/chromeos/login/wizard_controller.h
+++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -67,6 +67,7 @@ class WizardController : public views::WindowDelegate,
NetworkScreen* GetNetworkScreen();
LoginScreen* GetLoginScreen();
AccountScreen* GetAccountScreen();
+ UpdateScreen* GetUpdateScreen();
// Switches from one screen to another.
void SetCurrentScreen(WizardScreen* screen);
@@ -81,6 +82,7 @@ class WizardController : public views::WindowDelegate,
scoped_ptr<NetworkScreen> network_screen_;
scoped_ptr<LoginScreen> login_screen_;
scoped_ptr<AccountScreen> account_screen_;
+ scoped_ptr<UpdateScreen> update_screen_;
// Screen that's currently active.
WizardScreen* current_screen_;