OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |