Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1650)

Unified Diff: chrome/browser/ui/toolbar/wrench_menu_model.cc

Issue 12077030: Allow signin to continue even if sync is disabled by policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix windows sync integration test failure Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/toolbar/wrench_menu_model.cc
diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.cc b/chrome/browser/ui/toolbar/wrench_menu_model.cc
index d77e397df17835465623ec7ab4667a5f135197b4..9eb883ff857d14c4e79918121db1dc66c50218b0 100644
--- a/chrome/browser/ui/toolbar/wrench_menu_model.cc
+++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc
@@ -18,12 +18,7 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/signin/signin_global_error.h"
-#include "chrome/browser/signin/signin_manager.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/sync/profile_sync_service.h"
-#include "chrome/browser/sync/profile_sync_service_factory.h"
-#include "chrome/browser/sync/sync_global_error.h"
+#include "chrome/browser/signin/signin_ui_util.h"
#include "chrome/browser/task_manager/task_manager.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
@@ -56,8 +51,6 @@
#include "ui/base/layout.h"
#include "ui/base/models/button_menu_item_model.h"
#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/text/text_elider.h"
-#include "ui/gfx/font.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
@@ -77,12 +70,6 @@ using content::HostZoomMap;
using content::UserMetricsAction;
using content::WebContents;
-namespace {
-// Maximum width of a username - we trim emails that are wider than this so
-// the wrench menu doesn't get ridiculously wide.
-const int kUsernameMaxWidth = 200;
-} // namespace
-
////////////////////////////////////////////////////////////////////////////////
// EncodingMenuModel
@@ -293,33 +280,9 @@ string16 WrenchMenuModel::GetLabelForCommandId(int command_id) const {
}
case IDC_UPGRADE_DIALOG:
return l10n_util::GetStringUTF16(IDS_UPDATE_NOW);
- case IDC_SHOW_SIGNIN: {
- GlobalError* error = GetActiveSignedInServiceError();
- if (error)
- return error->MenuItemLabel();
-
- // No errors, so just display the signed in user, if any.
- Profile* profile = browser_->profile()->GetOriginalProfile();
- ProfileSyncService* service = profile->IsSyncAccessible() ?
- ProfileSyncServiceFactory::GetForProfile(profile) : NULL;
-
- // Even if the user is signed in, don't display the "signed in as..."
- // label if we're still setting up sync.
- if (!service || service->HasSyncSetupCompleted()) {
- SigninManager* signin_manager =
- SigninManagerFactory::GetForProfile(profile);
- std::string username = signin_manager->GetAuthenticatedUsername();
- if (!username.empty() && !signin_manager->AuthInProgress()) {
- string16 elided_username = ui::ElideEmail(UTF8ToUTF16(username),
- gfx::Font(),
- kUsernameMaxWidth);
- return l10n_util::GetStringFUTF16(IDS_SYNC_MENU_SYNCED_LABEL,
- elided_username);
- }
- }
- return l10n_util::GetStringFUTF16(IDS_SYNC_MENU_PRE_SYNCED_LABEL,
- l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME));
- }
+ case IDC_SHOW_SIGNIN:
+ return signin_ui_util::GetSigninMenuLabel(
+ browser_->profile()->GetOriginalProfile());
default:
NOTREACHED();
return string16();
@@ -340,7 +303,8 @@ bool WrenchMenuModel::GetIconForCommandId(int command_id,
return false;
}
case IDC_SHOW_SIGNIN: {
- GlobalError* error = GetActiveSignedInServiceError();
+ GlobalError* error = signin_ui_util::GetSignedInServiceError(
+ browser_->profile()->GetOriginalProfile());
if (error) {
int icon_id = error->MenuItemIconResourceID();
if (icon_id) {
@@ -365,8 +329,9 @@ void WrenchMenuModel::ExecuteCommand(int command_id) {
}
if (command_id == IDC_SHOW_SIGNIN) {
- // If a custom error message is being shown, display it.
- GlobalError* error = GetActiveSignedInServiceError();
+ // If a custom error message is being shown, handle it.
+ GlobalError* error = signin_ui_util::GetSignedInServiceError(
+ browser_->profile()->GetOriginalProfile());
if (error) {
error->ExecuteMenuItem(browser_);
return;
@@ -569,16 +534,14 @@ void WrenchMenuModel::Build(bool is_new_menu, bool supports_new_separators) {
AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS);
AddSeparator(ui::NORMAL_SEPARATOR);
- // TODO(atwilson): Remove call to IsSyncAccessible() once we fully support
- // signin while sync is disabled.
- if (browser_defaults::kShowSigninMenuItem &&
- browser_->profile()->GetOriginalProfile()->IsSyncAccessible()) {
- const string16 short_product_name =
- l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME);
- AddItem(IDC_SHOW_SYNC_SETUP, l10n_util::GetStringFUTF16(
- IDS_SYNC_MENU_PRE_SYNCED_LABEL, short_product_name));
- AddSeparator(ui::NORMAL_SEPARATOR);
- }
+#if !defined(OS_CHROMEOS)
+ // No "Sign in to Chromium..." menu item on ChromeOS.
+ const string16 short_product_name =
+ l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME);
+ AddItem(IDC_SHOW_SYNC_SETUP, l10n_util::GetStringFUTF16(
+ IDS_SYNC_MENU_PRE_SYNCED_LABEL, short_product_name));
+ AddSeparator(ui::NORMAL_SEPARATOR);
+#endif
AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS);
@@ -734,25 +697,3 @@ void WrenchMenuModel::UpdateZoomControls() {
zoom_label_ = l10n_util::GetStringFUTF16(
IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent));
}
-
-GlobalError* WrenchMenuModel::GetActiveSignedInServiceError() const {
- Profile* profile = browser_->profile()->GetOriginalProfile();
- // Auth errors have the highest priority - after that, individual service
- // errors.
- SigninManager* signin_manager = SigninManagerFactory::GetForProfile(profile);
- SigninGlobalError* signin_error = signin_manager->signin_global_error();
- if (signin_error && signin_error->HasBadge())
- return signin_error;
-
- // No auth error - now try other services. Currently the list is just hard-
- // coded but in the future if we add more we can create some kind of
- // registration framework.
- if (profile->IsSyncAccessible()) {
- ProfileSyncService* service =
- ProfileSyncServiceFactory::GetForProfile(profile);
- SyncGlobalError* error = service->sync_global_error();
- if (error && error->HasBadge())
- return error;
- }
- return NULL;
-}
« no previous file with comments | « chrome/browser/ui/toolbar/wrench_menu_model.h ('k') | chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698