Chromium Code Reviews| 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/website_settings/permission_prompt_impl.h" | 5 #include "chrome/browser/ui/views/website_settings/permission_prompt_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "base/strings/string16.h" | 11 #include "base/strings/string16.h" |
| 12 #include "chrome/browser/permissions/permission_request.h" | 12 #include "chrome/browser/permissions/permission_request.h" |
| 13 #include "chrome/browser/platform_util.h" | 13 #include "chrome/browser/platform_util.h" |
| 14 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
| 15 #include "chrome/browser/ui/browser.h" | 15 #include "chrome/browser/ui/browser.h" |
| 16 #include "chrome/browser/ui/browser_window.h" | 16 #include "chrome/browser/ui/browser_window.h" |
| 17 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" | 17 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" |
| 18 #include "chrome/browser/ui/views/harmony/layout_delegate.h" | |
| 18 #include "chrome/browser/ui/views/website_settings/permission_selector_row.h" | 19 #include "chrome/browser/ui/views/website_settings/permission_selector_row.h" |
| 19 #include "chrome/browser/ui/views/website_settings/permission_selector_row_obser ver.h" | 20 #include "chrome/browser/ui/views/website_settings/permission_selector_row_obser ver.h" |
| 20 #include "chrome/grit/generated_resources.h" | 21 #include "chrome/grit/generated_resources.h" |
| 21 #include "components/strings/grit/components_strings.h" | 22 #include "components/strings/grit/components_strings.h" |
| 22 #include "components/url_formatter/elide_url.h" | 23 #include "components/url_formatter/elide_url.h" |
| 23 #include "ui/accessibility/ax_node_data.h" | 24 #include "ui/accessibility/ax_node_data.h" |
| 24 #include "ui/base/l10n/l10n_util.h" | 25 #include "ui/base/l10n/l10n_util.h" |
| 25 #include "ui/base/models/combobox_model.h" | 26 #include "ui/base/models/combobox_model.h" |
| 26 #include "ui/base/resource/resource_bundle.h" | 27 #include "ui/base/resource/resource_bundle.h" |
| 27 #include "ui/gfx/color_palette.h" | 28 #include "ui/gfx/color_palette.h" |
| 28 #include "ui/gfx/paint_vector_icon.h" | 29 #include "ui/gfx/paint_vector_icon.h" |
| 29 #include "ui/gfx/text_constants.h" | 30 #include "ui/gfx/text_constants.h" |
| 30 #include "ui/gfx/vector_icons_public.h" | 31 #include "ui/gfx/vector_icons_public.h" |
| 32 #include "ui/views/background.h" | |
| 31 #include "ui/views/bubble/bubble_dialog_delegate.h" | 33 #include "ui/views/bubble/bubble_dialog_delegate.h" |
| 32 #include "ui/views/bubble/bubble_frame_view.h" | 34 #include "ui/views/bubble/bubble_frame_view.h" |
| 33 #include "ui/views/controls/button/checkbox.h" | 35 #include "ui/views/controls/button/checkbox.h" |
| 34 #include "ui/views/controls/button/menu_button.h" | 36 #include "ui/views/controls/button/menu_button.h" |
| 35 #include "ui/views/controls/button/menu_button_listener.h" | 37 #include "ui/views/controls/button/menu_button_listener.h" |
| 36 #include "ui/views/controls/combobox/combobox.h" | 38 #include "ui/views/controls/combobox/combobox.h" |
| 37 #include "ui/views/controls/combobox/combobox_listener.h" | 39 #include "ui/views/controls/combobox/combobox_listener.h" |
| 38 #include "ui/views/controls/label.h" | 40 #include "ui/views/controls/label.h" |
| 39 #include "ui/views/controls/menu/menu_runner.h" | 41 #include "ui/views/controls/menu/menu_runner.h" |
| 40 #include "ui/views/layout/box_layout.h" | 42 #include "ui/views/layout/box_layout.h" |
| 41 #include "ui/views/layout/grid_layout.h" | 43 #include "ui/views/layout/grid_layout.h" |
| 42 #include "ui/views/layout/layout_constants.h" | 44 #include "ui/views/layout/layout_constants.h" |
| 43 | 45 |
| 44 namespace { | 46 namespace { |
| 45 | 47 |
| 46 // Spacing between major items should be 9px. | |
| 47 const int kItemMajorSpacing = 9; | |
| 48 | |
| 49 // (Square) pixel size of icon. | 48 // (Square) pixel size of icon. |
| 50 const int kIconSize = 18; | 49 const int kIconSize = 18; |
| 51 | 50 |
| 52 } // namespace | 51 } // namespace |
| 53 | 52 |
| 54 // This class is a MenuButton which is given a PermissionMenuModel. It | 53 // This class is a MenuButton which is given a PermissionMenuModel. It |
| 55 // shows the current checked item in the menu model, and notifies its listener | 54 // shows the current checked item in the menu model, and notifies its listener |
| 56 // about any updates to the state of the selection. | 55 // about any updates to the state of the selection. |
| 57 // TODO(gbillock): refactor PermissionMenuButton to work like this and re-use? | 56 // TODO(gbillock): refactor PermissionMenuButton to work like this and re-use? |
| 58 class PermissionCombobox : public views::MenuButton, | 57 class PermissionCombobox : public views::MenuButton, |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 191 PermissionPromptImpl* owner, | 190 PermissionPromptImpl* owner, |
| 192 const std::vector<PermissionRequest*>& requests, | 191 const std::vector<PermissionRequest*>& requests, |
| 193 const std::vector<bool>& accept_state) | 192 const std::vector<bool>& accept_state) |
| 194 : owner_(owner), | 193 : owner_(owner), |
| 195 multiple_requests_(requests.size() > 1), | 194 multiple_requests_(requests.size() > 1), |
| 196 persist_checkbox_(nullptr) { | 195 persist_checkbox_(nullptr) { |
| 197 DCHECK(!requests.empty()); | 196 DCHECK(!requests.empty()); |
| 198 | 197 |
| 199 set_close_on_deactivate(false); | 198 set_close_on_deactivate(false); |
| 200 | 199 |
| 201 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, | 200 LayoutDelegate* layout_delegate = LayoutDelegate::Get(); |
| 202 kItemMajorSpacing)); | 201 SetLayoutManager( |
| 202 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, | |
| 203 layout_delegate->GetLayoutDistance( | |
| 204 LayoutDelegate::LayoutDistanceType:: | |
| 205 RELATED_CONTROL_VERTICAL_SPACING))); | |
| 203 | 206 |
| 204 display_origin_ = url_formatter::FormatUrlForSecurityDisplay( | 207 display_origin_ = url_formatter::FormatUrlForSecurityDisplay( |
| 205 requests[0]->GetOrigin(), | 208 requests[0]->GetOrigin(), |
| 206 url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC); | 209 url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC); |
| 207 | 210 |
| 208 bool show_persistence_toggle = true; | 211 bool show_persistence_toggle = true; |
| 209 for (size_t index = 0; index < requests.size(); index++) { | 212 for (size_t index = 0; index < requests.size(); index++) { |
| 210 DCHECK(index < accept_state.size()); | 213 DCHECK(index < accept_state.size()); |
| 211 // The row is laid out containing a leading-aligned label area and a | 214 // The row is laid out containing a leading-aligned label area and a |
| 212 // trailing column which will be filled if there are multiple permission | 215 // trailing column which will be filled if there are multiple permission |
| 213 // requests. | 216 // requests. |
| 214 views::View* row = new views::View(); | 217 views::View* row = new views::View(); |
| 215 views::GridLayout* row_layout = new views::GridLayout(row); | 218 views::GridLayout* row_layout = new views::GridLayout(row); |
| 216 row->SetLayoutManager(row_layout); | 219 row->SetLayoutManager(row_layout); |
| 217 views::ColumnSet* columns = row_layout->AddColumnSet(0); | 220 views::ColumnSet* columns = row_layout->AddColumnSet(0); |
| 218 columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, | 221 columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, |
| 219 0, views::GridLayout::USE_PREF, 0, 0); | 222 0, views::GridLayout::USE_PREF, 0, 0); |
| 220 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::FILL, | 223 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::FILL, |
| 221 100, views::GridLayout::USE_PREF, 0, 0); | 224 100, views::GridLayout::USE_PREF, 0, 0); |
| 222 row_layout->StartRow(0, 0); | 225 row_layout->StartRow(0, 0); |
| 223 | 226 |
| 224 views::View* label_container = new views::View(); | 227 views::View* label_container = new views::View(); |
| 228 int indent = layout_delegate->UseExtraDialogPadding() | |
| 229 ? layout_delegate->GetLayoutDistance( | |
| 230 LayoutDelegate::LayoutDistanceType:: | |
| 231 RELATED_CONTROL_HORIZONTAL_SPACING) | |
|
Peter Kasting
2017/01/26 21:54:29
This changes the indent for non-Harmony from 10 px
Elly Fong-Jones
2017/01/30 19:47:34
CHECKBOX_INDENT already was 0 in Harmony and kChec
| |
| 232 : 0; | |
| 225 label_container->SetLayoutManager(new views::BoxLayout( | 233 label_container->SetLayoutManager(new views::BoxLayout( |
| 226 views::BoxLayout::kHorizontal, views::kCheckboxIndent, 0, | 234 views::BoxLayout::kHorizontal, indent, 0, |
| 227 views::kItemLabelSpacing)); | 235 layout_delegate->GetLayoutDistance( |
| 236 LayoutDelegate::LayoutDistanceType::ITEM_LABEL_SPACING))); | |
| 228 views::ImageView* icon = new views::ImageView(); | 237 views::ImageView* icon = new views::ImageView(); |
| 229 gfx::VectorIconId vector_id = requests[index]->GetIconId(); | 238 gfx::VectorIconId vector_id = requests[index]->GetIconId(); |
| 230 if (vector_id != gfx::VectorIconId::VECTOR_ICON_NONE) { | 239 if (vector_id != gfx::VectorIconId::VECTOR_ICON_NONE) { |
| 231 icon->SetImage( | 240 icon->SetImage( |
| 232 gfx::CreateVectorIcon(vector_id, kIconSize, gfx::kChromeIconGrey)); | 241 gfx::CreateVectorIcon(vector_id, kIconSize, gfx::kChromeIconGrey)); |
| 233 } | 242 } |
| 234 icon->SetTooltipText(base::string16()); // Redundant with the text fragment | 243 icon->SetTooltipText(base::string16()); // Redundant with the text fragment |
| 235 label_container->AddChildView(icon); | 244 label_container->AddChildView(icon); |
| 236 views::Label* label = | 245 views::Label* label = |
| 237 new views::Label(requests.at(index)->GetMessageTextFragment()); | 246 new views::Label(requests.at(index)->GetMessageTextFragment()); |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 482 } | 491 } |
| 483 | 492 |
| 484 void PermissionPromptImpl::Deny() { | 493 void PermissionPromptImpl::Deny() { |
| 485 if (delegate_) | 494 if (delegate_) |
| 486 delegate_->Deny(); | 495 delegate_->Deny(); |
| 487 } | 496 } |
| 488 | 497 |
| 489 Profile* PermissionPromptImpl::GetProfile() { | 498 Profile* PermissionPromptImpl::GetProfile() { |
| 490 return browser_->profile(); | 499 return browser_->profile(); |
| 491 } | 500 } |
| OLD | NEW |