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

Side by Side Diff: chrome/browser/ui/views/profiles/force_signout_dialog_view.cc

Issue 2862653002: If force-sign-in policy is enabled, popup warning dialog before window closing if auth token becom… (Closed)
Patch Set: refactor Created 3 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/profiles/force_signout_dialog_view.h"
6
7 #include <memory>
8 #include <string>
9 #include <utility>
10
11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/ui/browser.h"
13 #include "chrome/browser/ui/browser_window.h"
14 #include "chrome/browser/ui/sync/profile_signin_confirmation_helper.h"
15 #include "chrome/browser/ui/views/profiles/force_signout_dialog.h"
16 #include "chrome/grit/chromium_strings.h"
17 #include "chrome/grit/generated_resources.h"
18 #include "components/constrained_window/constrained_window_views.h"
19 #include "ui/base/l10n/l10n_util.h"
20 #include "ui/views/background.h"
21 #include "ui/views/border.h"
22 #include "ui/views/controls/styled_label.h"
23 #include "ui/views/layout/grid_layout.h"
24 #include "ui/views/layout/layout_constants.h"
25 #include "ui/views/layout/layout_provider.h"
26 #include "ui/views/view.h"
27 #include "ui/views/window/dialog_client_view.h"
28
29 ForceSignoutDialogView::ForceSignoutDialogView(
30 Browser* browser,
31 std::unique_ptr<ForceSignoutDialog> dialog)
32 : dialog_(std::move(dialog)) {
33 constrained_window::CreateBrowserModalDialogViews(
34 this, browser->window()->GetNativeWindow())
35 ->Show();
36 }
37
38 ForceSignoutDialogView::~ForceSignoutDialogView() {
39 dialog_->OnViewClosing();
40 }
41
42 bool ForceSignoutDialogView::Accept() {
43 dialog_->OnAccept();
44 return true;
45 }
46
47 bool ForceSignoutDialogView::Cancel() {
48 dialog_->OnCancel();
49 return true;
50 }
51
52 base::string16 ForceSignoutDialogView::GetWindowTitle() const {
53 return l10n_util::GetStringUTF16(IDS_ENTERPRISE_FORCE_SIGNOUT_TITLE);
54 }
55
56 base::string16 ForceSignoutDialogView::GetDialogButtonLabel(
57 ui::DialogButton button) const {
58 if (button == ui::DIALOG_BUTTON_OK)
59 return l10n_util::GetStringUTF16(
60 IDS_ENTERPRISE_FORCE_SIGNOUT_CLOSE_CONFIRM);
61 else
62 return l10n_util::GetStringUTF16(IDS_ENTERPRISE_FORCE_SIGNOUT_CLOSE_DELAY);
63 }
64
65 int ForceSignoutDialogView::GetDialogButtons() const {
66 if (dialog_->IsDelayAllowed())
67 return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL;
68 return ui::DIALOG_BUTTON_OK;
69 }
70
71 ui::ModalType ForceSignoutDialogView::GetModalType() const {
72 return ui::MODAL_TYPE_WINDOW;
73 }
74
75 void ForceSignoutDialogView::AddedToWidget() {
76 const SkColor prompt_bar_background_color =
77 GetSigninConfirmationPromptBarColor(
78 GetNativeTheme(), ui::kSigninConfirmationPromptBarBackgroundAlpha);
79 // Create the prompt label.
80 size_t offset;
81 std::string email = dialog_->GetEmail();
82 const base::string16 domain =
83 base::ASCIIToUTF16(gaia::ExtractDomainName(email));
84 const base::string16 prompt_text =
85 l10n_util::GetStringFUTF16(IDS_ENTERPRISE_SIGNIN_ALERT, domain, &offset);
86 views::StyledLabel* prompt_label =
87 new views::StyledLabel(prompt_text, nullptr);
88 prompt_label->SetDisplayedOnBackgroundColor(prompt_bar_background_color);
89
90 views::StyledLabel::RangeStyleInfo bold_style;
91 bold_style.weight = gfx::Font::Weight::BOLD;
92 prompt_label->AddStyleRange(gfx::Range(offset, offset + domain.size()),
93 bold_style);
94
95 // Create the prompt bar.
96 views::View* prompt_bar = new views::View;
97 prompt_bar->SetBorder(views::CreateSolidSidedBorder(
98 1, 0, 1, 0,
99 ui::GetSigninConfirmationPromptBarColor(
100 GetNativeTheme(), ui::kSigninConfirmationPromptBarBorderAlpha)));
101 prompt_bar->set_background(
102 views::Background::CreateSolidBackground(prompt_bar_background_color));
103
104 // Create the explanation label.
105 base::string16 signin_explanation_text;
106 base::string16 close_warning;
107 if (dialog_->IsDelayAllowed()) {
108 close_warning = l10n_util::GetStringUTF16(
109 IDS_ENTERPRISE_FORCE_SIGNOUT_ADDITIONAL_EXPLANATION);
110 }
111 if (email.empty()) {
112 signin_explanation_text = l10n_util::GetStringFUTF16(
113 IDS_ENTERPRISE_FORCE_SIGNOUT_EXPLANATION_WITHOUT_USER_NAME,
114 close_warning);
115 } else {
116 signin_explanation_text =
117 l10n_util::GetStringFUTF16(IDS_ENTERPRISE_FORCE_SIGNOUT_EXPLANATION,
118 base::ASCIIToUTF16(email), close_warning);
119 }
120 views::StyledLabel* explanation_label =
121 new views::StyledLabel(signin_explanation_text, nullptr);
122
123 // Layout the components.
124 const gfx::Insets panel_insets =
125 views::LayoutProvider::Get()->GetInsetsMetric(views::INSETS_PANEL);
126 SetBorder(views::CreateEmptyBorder(panel_insets.top(), 0,
127 panel_insets.bottom(), 0));
128 views::GridLayout* dialog_layout = new views::GridLayout(this);
129 SetLayoutManager(dialog_layout);
130
131 // Use GridLayout inside the prompt bar because StyledLabel requires it.
132 views::GridLayout* prompt_layout = views::GridLayout::CreatePanel(prompt_bar);
133 prompt_bar->SetLayoutManager(prompt_layout);
134 prompt_layout->AddColumnSet(0)->AddColumn(views::GridLayout::FILL,
135 views::GridLayout::CENTER, 100,
136 views::GridLayout::USE_PREF, 0, 0);
137 prompt_layout->StartRow(0, 0);
138 prompt_layout->AddView(prompt_label);
139 // Use a column set with no padding.
140 dialog_layout->AddColumnSet(0)->AddColumn(views::GridLayout::FILL,
141 views::GridLayout::FILL, 100,
142 views::GridLayout::USE_PREF, 0, 0);
143 dialog_layout->StartRow(0, 0);
144 dialog_layout->AddView(prompt_bar, 1, 1, views::GridLayout::FILL,
145 views::GridLayout::FILL, 0, 0);
146
147 // Use a new column set for the explanation label so we can add padding.
148 dialog_layout->AddPaddingRow(0.0, views::kPanelVertMargin);
149 views::ColumnSet* explanation_columns = dialog_layout->AddColumnSet(1);
150 explanation_columns->AddPaddingColumn(0.0, views::kButtonHEdgeMarginNew);
151 explanation_columns->AddColumn(views::GridLayout::FILL,
152 views::GridLayout::FILL, 100,
153 views::GridLayout::USE_PREF, 0, 0);
154 explanation_columns->AddPaddingColumn(0.0, views::kButtonHEdgeMarginNew);
155 dialog_layout->StartRow(0, 1);
156 const int kPreferredWidth = 440;
157 dialog_layout->AddView(explanation_label, 1, 1, views::GridLayout::FILL,
158 views::GridLayout::FILL, kPreferredWidth,
159 explanation_label->GetHeightForWidth(kPreferredWidth));
160 }
161
162 void ForceSignoutDialogView::ActivateModalDialog() {
163 GetWidget()->Show();
164 GetWidget()->Activate();
165 }
166
167 bool ForceSignoutDialogView::IsShowing() const {
168 return GetWidget()->IsVisible();
169 }
170
171 /*
172 void ForceSignoutDialogView::ShowAppModalDialog() {
173 GetWidget()->Show();
174 }
175
176 void ForceSignoutDialogView::CloseAppModalDialog() {
177 GetWidget()->Close();
178 }
179 void ForceSignoutDialogView::AcceptAppModalDialog() {
180 GetDialogClientView()->AcceptWindow();
181 }
182 void ForceSignoutDialogView::CancelAppModalDialog() {
183 GetDialogClientView()->CancelWindow();
184 }
185 */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698