diff options
author | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-11 19:47:07 +0000 |
---|---|---|
committer | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-11 19:47:07 +0000 |
commit | f67bf6081a4e05d8b7e33b1aec71c3aec04ae3db (patch) | |
tree | 3060e4fb00c7c959071401ac61b7853b2ca8891b /chrome/browser | |
parent | 3c0232dc6bfa82b2c56410a99d54f6830eaee2c8 (diff) | |
download | chromium_src-f67bf6081a4e05d8b7e33b1aec71c3aec04ae3db.zip chromium_src-f67bf6081a4e05d8b7e33b1aec71c3aec04ae3db.tar.gz chromium_src-f67bf6081a4e05d8b7e33b1aec71c3aec04ae3db.tar.bz2 |
Fixed GetNameTooltip in UserController, added unittest and made a couple of places tolerant to tests
BUG=chromiumos:8931
TEST=Unittest should pass. Check manually according to bug description.
Review URL: http://codereview.chromium.org/4637006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65835 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
4 files changed, 54 insertions, 18 deletions
diff --git a/chrome/browser/chromeos/cros_settings_provider_user.cc b/chrome/browser/chromeos/cros_settings_provider_user.cc index 7b9c0c3..36b06be 100644 --- a/chrome/browser/chromeos/cros_settings_provider_user.cc +++ b/chrome/browser/chromeos/cros_settings_provider_user.cc @@ -132,6 +132,8 @@ const ListValue* UserCrosSettingsProvider::cached_whitelist() { // static std::string UserCrosSettingsProvider::cached_owner() { + if (!g_browser_process || !g_browser_process->local_state()) + return std::string(); return g_browser_process->local_state()->GetString(kDeviceOwner); } diff --git a/chrome/browser/chromeos/login/user_controller.cc b/chrome/browser/chromeos/login/user_controller.cc index 0ed4f91..022cc70 100644 --- a/chrome/browser/chromeos/login/user_controller.cc +++ b/chrome/browser/chromeos/login/user_controller.cc @@ -72,6 +72,13 @@ class ClickNotifyingWidget : public views::WidgetGtk { DISALLOW_COPY_AND_ASSIGN(ClickNotifyingWidget); }; +void CloseWindow(views::WidgetGtk* window) { + if (!window) + return; + window->SetWidgetDelegate(NULL); + window->Close(); +} + } // namespace using login::kBackgroundColor; @@ -146,17 +153,11 @@ UserController::~UserController() { // Reset the widget delegate of every window to NULL, so the user // controller will not get notified about the active window change. // See also crosbug.com/7400. - controls_window_->SetWidgetDelegate(NULL); - image_window_->SetWidgetDelegate(NULL); - border_window_->SetWidgetDelegate(NULL); - label_window_->SetWidgetDelegate(NULL); - unselected_label_window_->SetWidgetDelegate(NULL); - - controls_window_->Close(); - image_window_->Close(); - border_window_->Close(); - label_window_->Close(); - unselected_label_window_->Close(); + CloseWindow(controls_window_); + CloseWindow(image_window_); + CloseWindow(border_window_); + CloseWindow(label_window_); + CloseWindow(unselected_label_window_); } void UserController::Init(int index, @@ -194,18 +195,18 @@ std::wstring UserController::GetNameTooltip() const { // Tooltip contains user's display name and his email domain to distinguish // this user from the other one with the same display name. - const std::wstring& email = UTF8ToWide(user_.email()); + const std::string& email = user_.email(); size_t at_pos = email.rfind('@'); - if (at_pos == std::wstring::npos) { + if (at_pos == std::string::npos) { NOTREACHED(); return std::wstring(); } size_t domain_start = at_pos + 1; - std::wstring domain = email.substr(domain_start, - email.length() - domain_start); - return base::StringPrintf(L"%s (%s)", - user_.GetDisplayName().c_str(), - domain.c_str()); + std::string domain = email.substr(domain_start, + email.length() - domain_start); + return UTF8ToWide(base::StringPrintf("%s (%s)", + user_.GetDisplayName().c_str(), + domain.c_str())); } void UserController::ClearAndEnablePassword() { diff --git a/chrome/browser/chromeos/login/user_controller.h b/chrome/browser/chromeos/login/user_controller.h index b1538b8..6d3ec2c 100644 --- a/chrome/browser/chromeos/login/user_controller.h +++ b/chrome/browser/chromeos/login/user_controller.h @@ -15,6 +15,7 @@ #include "chrome/browser/chromeos/wm_ipc.h" #include "chrome/common/notification_observer.h" #include "chrome/common/notification_registrar.h" +#include "testing/gtest/include/gtest/gtest_prod.h" #include "views/controls/button/button.h" #include "views/controls/textfield/textfield.h" #include "views/widget/widget_delegate.h" @@ -146,6 +147,8 @@ class UserController : public views::ButtonListener, static const int kNewUserUnselectedSize; private: + FRIEND_TEST(UserControllerTest, GetNameTooltip); + // Invoked when the user wants to login. Forwards the call to the delegate. void Login(); diff --git a/chrome/browser/chromeos/login/user_controller_unittest.cc b/chrome/browser/chromeos/login/user_controller_unittest.cc new file mode 100644 index 0000000..379e4fe --- /dev/null +++ b/chrome/browser/chromeos/login/user_controller_unittest.cc @@ -0,0 +1,30 @@ +// 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/user_controller.h" + +#include "app/l10n_util.h" +#include "chrome/browser/chromeos/login/user_manager.h" +#include "grit/generated_resources.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { + +TEST(UserControllerTest, GetNameTooltip) { + UserController guest_user_controller(NULL, false); + EXPECT_EQ(l10n_util::GetString(IDS_ADD_USER), + guest_user_controller.GetNameTooltip()); + + UserController new_user_controller(NULL, true); + EXPECT_EQ(l10n_util::GetString(IDS_GO_INCOGNITO_BUTTON), + new_user_controller.GetNameTooltip()); + + UserManager::User existing_user; + existing_user.set_email("someordinaryuser@domain.com"); + UserController existing_user_controller(NULL, existing_user); + EXPECT_EQ(L"someordinaryuser (domain.com)", + existing_user_controller.GetNameTooltip()); +} + +} // namespace chromeos |