summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authoravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-11 19:47:07 +0000
committeravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-11 19:47:07 +0000
commitf67bf6081a4e05d8b7e33b1aec71c3aec04ae3db (patch)
tree3060e4fb00c7c959071401ac61b7853b2ca8891b /chrome/browser
parent3c0232dc6bfa82b2c56410a99d54f6830eaee2c8 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/chromeos/cros_settings_provider_user.cc2
-rw-r--r--chrome/browser/chromeos/login/user_controller.cc37
-rw-r--r--chrome/browser/chromeos/login/user_controller.h3
-rw-r--r--chrome/browser/chromeos/login/user_controller_unittest.cc30
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