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

Side by Side Diff: chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc

Issue 2916753004: Use BookmarkAppConfirmationView on Mac. Delete the NSAlert Mac uses currently. (Closed)
Patch Set: using, OnceCallback Created 3 years, 6 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.h" 5 #include "chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.h"
6 6
7 #include "base/callback_helpers.h" 7 #include "base/callback_helpers.h"
8 #include "base/strings/string16.h" 8 #include "base/strings/string16.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
11 #include "chrome/browser/ui/browser_dialogs.h" 11 #include "chrome/browser/extensions/extension_util.h"
12 #include "chrome/browser/ui/views/harmony/chrome_layout_provider.h" 12 #include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
13 #include "chrome/grit/generated_resources.h" 13 #include "chrome/grit/generated_resources.h"
14 #include "components/constrained_window/constrained_window_views.h" 14 #include "components/constrained_window/constrained_window_views.h"
15 #include "components/strings/grit/components_strings.h" 15 #include "components/strings/grit/components_strings.h"
16 #include "content/public/browser/web_contents.h" 16 #include "content/public/browser/web_contents.h"
17 #include "extensions/common/constants.h" 17 #include "extensions/common/constants.h"
18 #include "ui/accessibility/ax_node_data.h" 18 #include "ui/accessibility/ax_node_data.h"
19 #include "ui/base/l10n/l10n_util.h" 19 #include "ui/base/l10n/l10n_util.h"
20 #include "ui/base/resource/resource_bundle.h" 20 #include "ui/base/resource/resource_bundle.h"
21 #include "ui/gfx/image/image_skia.h" 21 #include "ui/gfx/image/image_skia.h"
(...skipping 27 matching lines...) Expand all
49 } 49 }
50 50
51 int dip_size_; 51 int dip_size_;
52 WebApplicationInfo info_; 52 WebApplicationInfo info_;
53 }; 53 };
54 54
55 } // namespace 55 } // namespace
56 56
57 BookmarkAppConfirmationView::~BookmarkAppConfirmationView() {} 57 BookmarkAppConfirmationView::~BookmarkAppConfirmationView() {}
58 58
59 // static
60 void BookmarkAppConfirmationView::CreateAndShow(
61 gfx::NativeWindow parent,
62 const WebApplicationInfo& web_app_info,
63 const BrowserWindow::ShowBookmarkAppBubbleCallback& callback) {
64 constrained_window::CreateBrowserModalDialogViews(
65 new BookmarkAppConfirmationView(web_app_info, callback), parent)
66 ->Show();
67 }
68
69 BookmarkAppConfirmationView::BookmarkAppConfirmationView( 59 BookmarkAppConfirmationView::BookmarkAppConfirmationView(
70 const WebApplicationInfo& web_app_info, 60 const WebApplicationInfo& web_app_info,
71 const BrowserWindow::ShowBookmarkAppBubbleCallback& callback) 61 chrome::ShowBookmarkAppDialogCallback callback)
72 : web_app_info_(web_app_info), 62 : web_app_info_(web_app_info),
73 callback_(callback), 63 callback_(std::move(callback)),
74 open_as_window_checkbox_(nullptr), 64 open_as_window_checkbox_(nullptr),
75 title_tf_(nullptr) { 65 title_tf_(nullptr) {
76 const ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get(); 66 const ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get();
77 views::GridLayout* layout = views::GridLayout::CreatePanel(this); 67 views::GridLayout* layout = views::GridLayout::CreatePanel(this);
78 const int column_set_id = 0; 68 const int column_set_id = 0;
79 69
80 views::ColumnSet* column_set = layout->AddColumnSet(column_set_id); 70 views::ColumnSet* column_set = layout->AddColumnSet(column_set_id);
81 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 0, 71 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 0,
82 views::GridLayout::USE_PREF, 0, 0); 72 views::GridLayout::USE_PREF, 0, 0);
83 column_set->AddPaddingColumn(0, 73 column_set->AddPaddingColumn(0,
(...skipping 18 matching lines...) Expand all
102 title_tf_ = new views::Textfield(); 92 title_tf_ = new views::Textfield();
103 title_tf_->SetText(web_app_info_.title); 93 title_tf_->SetText(web_app_info_.title);
104 title_tf_->SetAccessibleName( 94 title_tf_->SetAccessibleName(
105 l10n_util::GetStringUTF16(IDS_BOOKMARK_APP_AX_BUBBLE_NAME_LABEL)); 95 l10n_util::GetStringUTF16(IDS_BOOKMARK_APP_AX_BUBBLE_NAME_LABEL));
106 title_tf_->set_controller(this); 96 title_tf_->set_controller(this);
107 layout->AddView(title_tf_); 97 layout->AddView(title_tf_);
108 98
109 layout->AddPaddingRow( 99 layout->AddPaddingRow(
110 0, layout_provider->GetDistanceMetric(DISTANCE_CONTROL_LIST_VERTICAL)); 100 0, layout_provider->GetDistanceMetric(DISTANCE_CONTROL_LIST_VERTICAL));
111 101
112 open_as_window_checkbox_ = new views::Checkbox( 102 // When CanHostedAppsOpenInWindows() returns false, do not show the open as
113 l10n_util::GetStringUTF16(IDS_BOOKMARK_APP_BUBBLE_OPEN_AS_WINDOW)); 103 // window checkbox to avoid confusing users.
114 open_as_window_checkbox_->SetChecked(web_app_info_.open_as_window); 104 if (extensions::util::CanHostedAppsOpenInWindows()) {
115 layout->StartRow(0, column_set_id); 105 open_as_window_checkbox_ = new views::Checkbox(
116 layout->SkipColumns(1); 106 l10n_util::GetStringUTF16(IDS_BOOKMARK_APP_BUBBLE_OPEN_AS_WINDOW));
117 layout->AddView(open_as_window_checkbox_); 107 open_as_window_checkbox_->SetChecked(web_app_info_.open_as_window);
108 layout->StartRow(0, column_set_id);
109 layout->SkipColumns(1);
110 layout->AddView(open_as_window_checkbox_);
111 }
118 112
119 title_tf_->SelectAll(true); 113 title_tf_->SelectAll(true);
120 chrome::RecordDialogCreation( 114 chrome::RecordDialogCreation(
121 chrome::DialogIdentifier::BOOKMARK_APP_CONFIRMATION); 115 chrome::DialogIdentifier::BOOKMARK_APP_CONFIRMATION);
122 } 116 }
123 117
124 views::View* BookmarkAppConfirmationView::GetInitiallyFocusedView() { 118 views::View* BookmarkAppConfirmationView::GetInitiallyFocusedView() {
125 return title_tf_; 119 return title_tf_;
126 } 120 }
127 121
(...skipping 10 matching lines...) Expand all
138 132
139 return l10n_util::GetStringUTF16(ids); 133 return l10n_util::GetStringUTF16(ids);
140 } 134 }
141 135
142 bool BookmarkAppConfirmationView::ShouldShowCloseButton() const { 136 bool BookmarkAppConfirmationView::ShouldShowCloseButton() const {
143 return false; 137 return false;
144 } 138 }
145 139
146 void BookmarkAppConfirmationView::WindowClosing() { 140 void BookmarkAppConfirmationView::WindowClosing() {
147 if (!callback_.is_null()) 141 if (!callback_.is_null())
148 callback_.Run(false, web_app_info_); 142 std::move(callback_).Run(false, web_app_info_);
149 } 143 }
150 144
151 bool BookmarkAppConfirmationView::Accept() { 145 bool BookmarkAppConfirmationView::Accept() {
152 web_app_info_.title = GetTrimmedTitle(); 146 web_app_info_.title = GetTrimmedTitle();
153 web_app_info_.open_as_window = open_as_window_checkbox_->checked(); 147 web_app_info_.open_as_window =
148 open_as_window_checkbox_ && open_as_window_checkbox_->checked();
154 base::ResetAndReturn(&callback_).Run(true, web_app_info_); 149 base::ResetAndReturn(&callback_).Run(true, web_app_info_);
155 return true; 150 return true;
156 } 151 }
157 152
158 base::string16 BookmarkAppConfirmationView::GetDialogButtonLabel( 153 base::string16 BookmarkAppConfirmationView::GetDialogButtonLabel(
159 ui::DialogButton button) const { 154 ui::DialogButton button) const {
160 return l10n_util::GetStringUTF16(button == ui::DIALOG_BUTTON_OK ? IDS_ADD 155 return l10n_util::GetStringUTF16(button == ui::DIALOG_BUTTON_OK ? IDS_ADD
161 : IDS_CANCEL); 156 : IDS_CANCEL);
162 } 157 }
163 158
(...skipping 13 matching lines...) Expand all
177 const base::string16& new_contents) { 172 const base::string16& new_contents) {
178 DCHECK_EQ(title_tf_, sender); 173 DCHECK_EQ(title_tf_, sender);
179 GetDialogClientView()->UpdateDialogButtons(); 174 GetDialogClientView()->UpdateDialogButtons();
180 } 175 }
181 176
182 base::string16 BookmarkAppConfirmationView::GetTrimmedTitle() const { 177 base::string16 BookmarkAppConfirmationView::GetTrimmedTitle() const {
183 base::string16 title(title_tf_->text()); 178 base::string16 title(title_tf_->text());
184 base::TrimWhitespace(title, base::TRIM_ALL, &title); 179 base::TrimWhitespace(title, base::TRIM_ALL, &title);
185 return title; 180 return title;
186 } 181 }
182
183 namespace chrome {
184
185 void ShowBookmarkAppDialog(gfx::NativeWindow parent,
186 const WebApplicationInfo& web_app_info,
187 ShowBookmarkAppDialogCallback callback) {
188 constrained_window::CreateBrowserModalDialogViews(
189 new BookmarkAppConfirmationView(web_app_info, std::move(callback)),
190 parent)
191 ->Show();
192 }
193
194 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.h ('k') | chrome/browser/ui/views/frame/browser_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698