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/permissions_bubble_view.h" | 5 #include "chrome/browser/ui/views/website_settings/permissions_bubble_view.h" |
| 6 | 6 |
| 7 #include "base/prefs/pref_service.h" | |
| 7 #include "base/strings/string16.h" | 8 #include "base/strings/string16.h" |
| 9 #include "chrome/browser/profiles/profile.h" | |
| 8 #include "chrome/browser/ui/views/website_settings/permission_selector_view.h" | 10 #include "chrome/browser/ui/views/website_settings/permission_selector_view.h" |
| 9 #include "chrome/browser/ui/views/website_settings/permission_selector_view_obse rver.h" | 11 #include "chrome/browser/ui/views/website_settings/permission_selector_view_obse rver.h" |
| 10 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" | 12 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" |
| 13 #include "chrome/common/pref_names.h" | |
| 11 #include "chrome/grit/generated_resources.h" | 14 #include "chrome/grit/generated_resources.h" |
| 12 #include "net/base/net_util.h" | 15 #include "net/base/net_util.h" |
| 13 #include "ui/accessibility/ax_view_state.h" | 16 #include "ui/accessibility/ax_view_state.h" |
| 14 #include "ui/base/l10n/l10n_util.h" | 17 #include "ui/base/l10n/l10n_util.h" |
| 15 #include "ui/base/models/combobox_model.h" | 18 #include "ui/base/models/combobox_model.h" |
| 16 #include "ui/base/resource/resource_bundle.h" | 19 #include "ui/base/resource/resource_bundle.h" |
| 17 #include "ui/gfx/text_constants.h" | 20 #include "ui/gfx/text_constants.h" |
| 18 #include "ui/views/bubble/bubble_delegate.h" | 21 #include "ui/views/bubble/bubble_delegate.h" |
| 19 #include "ui/views/controls/button/checkbox.h" | 22 #include "ui/views/controls/button/checkbox.h" |
| 20 #include "ui/views/controls/button/label_button.h" | 23 #include "ui/views/controls/button/label_button.h" |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 168 /////////////////////////////////////////////////////////////////////////////// | 171 /////////////////////////////////////////////////////////////////////////////// |
| 169 // View implementation for the permissions bubble. | 172 // View implementation for the permissions bubble. |
| 170 class PermissionsBubbleDelegateView : public views::BubbleDelegateView, | 173 class PermissionsBubbleDelegateView : public views::BubbleDelegateView, |
| 171 public views::ButtonListener, | 174 public views::ButtonListener, |
| 172 public views::ComboboxListener, | 175 public views::ComboboxListener, |
| 173 public PermissionCombobox::Listener { | 176 public PermissionCombobox::Listener { |
| 174 public: | 177 public: |
| 175 PermissionsBubbleDelegateView( | 178 PermissionsBubbleDelegateView( |
| 176 views::View* anchor, | 179 views::View* anchor, |
| 177 PermissionBubbleViewViews* owner, | 180 PermissionBubbleViewViews* owner, |
| 181 Profile* profile, | |
| 178 const std::vector<PermissionBubbleRequest*>& requests, | 182 const std::vector<PermissionBubbleRequest*>& requests, |
| 179 const std::vector<bool>& accept_state, | 183 const std::vector<bool>& accept_state, |
| 180 bool customization_mode); | 184 bool customization_mode); |
| 181 ~PermissionsBubbleDelegateView() override; | 185 ~PermissionsBubbleDelegateView() override; |
| 182 | 186 |
| 183 void Close(); | 187 void Close(); |
| 184 void SizeToContents(); | 188 void SizeToContents(); |
| 185 | 189 |
| 186 // BubbleDelegateView: | 190 // BubbleDelegateView: |
| 187 bool ShouldShowCloseButton() const override; | 191 bool ShouldShowCloseButton() const override; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 207 base::string16 hostname_; | 211 base::string16 hostname_; |
| 208 scoped_ptr<PermissionMenuModel> menu_button_model_; | 212 scoped_ptr<PermissionMenuModel> menu_button_model_; |
| 209 std::vector<PermissionCombobox*> customize_comboboxes_; | 213 std::vector<PermissionCombobox*> customize_comboboxes_; |
| 210 | 214 |
| 211 DISALLOW_COPY_AND_ASSIGN(PermissionsBubbleDelegateView); | 215 DISALLOW_COPY_AND_ASSIGN(PermissionsBubbleDelegateView); |
| 212 }; | 216 }; |
| 213 | 217 |
| 214 PermissionsBubbleDelegateView::PermissionsBubbleDelegateView( | 218 PermissionsBubbleDelegateView::PermissionsBubbleDelegateView( |
| 215 views::View* anchor, | 219 views::View* anchor, |
| 216 PermissionBubbleViewViews* owner, | 220 PermissionBubbleViewViews* owner, |
| 221 Profile* profile, | |
| 217 const std::vector<PermissionBubbleRequest*>& requests, | 222 const std::vector<PermissionBubbleRequest*>& requests, |
| 218 const std::vector<bool>& accept_state, | 223 const std::vector<bool>& accept_state, |
| 219 bool customization_mode) | 224 bool customization_mode) |
| 220 : views::BubbleDelegateView(anchor, views::BubbleBorder::TOP_LEFT), | 225 : views::BubbleDelegateView(anchor, views::BubbleBorder::TOP_LEFT), |
| 221 owner_(owner), | 226 owner_(owner), |
| 222 allow_(NULL), | 227 allow_(NULL), |
| 223 deny_(NULL), | 228 deny_(NULL), |
| 224 allow_combobox_(NULL) { | 229 allow_combobox_(NULL) { |
| 225 DCHECK(!requests.empty()); | 230 DCHECK(!requests.empty()); |
| 226 | 231 |
| 227 RemoveAllChildViews(true); | 232 RemoveAllChildViews(true); |
| 228 customize_comboboxes_.clear(); | 233 customize_comboboxes_.clear(); |
| 229 set_close_on_esc(false); | 234 set_close_on_esc(false); |
| 230 set_close_on_deactivate(false); | 235 set_close_on_deactivate(false); |
| 231 | 236 |
| 232 SetLayoutManager(new views::BoxLayout( | 237 SetLayoutManager(new views::BoxLayout( |
| 233 views::BoxLayout::kVertical, kBubbleOuterMargin, 0, kItemMajorSpacing)); | 238 views::BoxLayout::kVertical, kBubbleOuterMargin, 0, kItemMajorSpacing)); |
| 234 | 239 |
| 235 // TODO(gbillock): support other languages than English. | 240 DCHECK(profile); |
| 241 std::string languages = | |
| 242 profile->GetPrefs()->GetString(prefs::kAcceptLanguages); | |
|
sky
2015/01/29 17:40:44
One question though. Can PermissionBubbleViewViews
felt
2015/01/29 19:51:13
Looked into this. Changing the language will promp
| |
| 236 hostname_ = net::FormatUrl(requests[0]->GetRequestingHostname(), | 243 hostname_ = net::FormatUrl(requests[0]->GetRequestingHostname(), |
| 237 "en", | 244 languages, |
| 238 net::kFormatUrlOmitUsernamePassword | | 245 net::kFormatUrlOmitUsernamePassword | |
| 239 net::kFormatUrlOmitTrailingSlashOnBareHostname, | 246 net::kFormatUrlOmitTrailingSlashOnBareHostname, |
| 240 net::UnescapeRule::SPACES, NULL, NULL, NULL); | 247 net::UnescapeRule::SPACES, NULL, NULL, NULL); |
| 241 | 248 |
| 242 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 249 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
| 243 for (size_t index = 0; index < requests.size(); index++) { | 250 for (size_t index = 0; index < requests.size(); index++) { |
| 244 DCHECK(index < accept_state.size()); | 251 DCHECK(index < accept_state.size()); |
| 245 // The row is laid out containing a leading-aligned label area and a | 252 // The row is laid out containing a leading-aligned label area and a |
| 246 // trailing column which will be filled during customization with a | 253 // trailing column which will be filled during customization with a |
| 247 // combobox. | 254 // combobox. |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 410 owner_->SetCustomizationMode(); | 417 owner_->SetCustomizationMode(); |
| 411 else if (combobox->selected_index() == | 418 else if (combobox->selected_index() == |
| 412 CustomizeAllowComboboxModel::INDEX_ALLOW) | 419 CustomizeAllowComboboxModel::INDEX_ALLOW) |
| 413 owner_->Accept(); | 420 owner_->Accept(); |
| 414 } | 421 } |
| 415 } | 422 } |
| 416 | 423 |
| 417 ////////////////////////////////////////////////////////////////////////////// | 424 ////////////////////////////////////////////////////////////////////////////// |
| 418 // PermissionBubbleViewViews | 425 // PermissionBubbleViewViews |
| 419 | 426 |
| 420 PermissionBubbleViewViews::PermissionBubbleViewViews(views::View* anchor_view) | 427 PermissionBubbleViewViews::PermissionBubbleViewViews( |
| 428 views::View* anchor_view, | |
| 429 Profile* profile) | |
| 421 : anchor_view_(anchor_view), | 430 : anchor_view_(anchor_view), |
| 422 delegate_(NULL), | 431 delegate_(NULL), |
| 423 bubble_delegate_(NULL) {} | 432 bubble_delegate_(NULL), |
| 433 profile_(profile) {} | |
| 424 | 434 |
| 425 PermissionBubbleViewViews::~PermissionBubbleViewViews() { | 435 PermissionBubbleViewViews::~PermissionBubbleViewViews() { |
| 426 if (delegate_) | 436 if (delegate_) |
| 427 delegate_->SetView(NULL); | 437 delegate_->SetView(NULL); |
| 428 } | 438 } |
| 429 | 439 |
| 430 void PermissionBubbleViewViews::SetDelegate(Delegate* delegate) { | 440 void PermissionBubbleViewViews::SetDelegate(Delegate* delegate) { |
| 431 delegate_ = delegate; | 441 delegate_ = delegate; |
| 432 } | 442 } |
| 433 | 443 |
| 434 void PermissionBubbleViewViews::Show( | 444 void PermissionBubbleViewViews::Show( |
| 435 const std::vector<PermissionBubbleRequest*>& requests, | 445 const std::vector<PermissionBubbleRequest*>& requests, |
| 436 const std::vector<bool>& values, | 446 const std::vector<bool>& values, |
| 437 bool customization_mode) { | 447 bool customization_mode) { |
| 438 if (bubble_delegate_ != NULL) | 448 if (bubble_delegate_ != NULL) |
| 439 bubble_delegate_->Close(); | 449 bubble_delegate_->Close(); |
| 440 | 450 |
| 441 bubble_delegate_ = | 451 bubble_delegate_ = |
| 442 new PermissionsBubbleDelegateView(anchor_view_, this, | 452 new PermissionsBubbleDelegateView(anchor_view_, this, profile_, |
| 443 requests, values, customization_mode); | 453 requests, values, customization_mode); |
| 444 views::BubbleDelegateView::CreateBubble(bubble_delegate_)->Show(); | 454 views::BubbleDelegateView::CreateBubble(bubble_delegate_)->Show(); |
| 445 bubble_delegate_->SizeToContents(); | 455 bubble_delegate_->SizeToContents(); |
| 446 } | 456 } |
| 447 | 457 |
| 448 bool PermissionBubbleViewViews::CanAcceptRequestUpdate() { | 458 bool PermissionBubbleViewViews::CanAcceptRequestUpdate() { |
| 449 return !(bubble_delegate_ && bubble_delegate_->IsMouseHovered()); | 459 return !(bubble_delegate_ && bubble_delegate_->IsMouseHovered()); |
| 450 } | 460 } |
| 451 | 461 |
| 452 void PermissionBubbleViewViews::Hide() { | 462 void PermissionBubbleViewViews::Hide() { |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 479 | 489 |
| 480 void PermissionBubbleViewViews::Deny() { | 490 void PermissionBubbleViewViews::Deny() { |
| 481 if (delegate_) | 491 if (delegate_) |
| 482 delegate_->Deny(); | 492 delegate_->Deny(); |
| 483 } | 493 } |
| 484 | 494 |
| 485 void PermissionBubbleViewViews::SetCustomizationMode() { | 495 void PermissionBubbleViewViews::SetCustomizationMode() { |
| 486 if (delegate_) | 496 if (delegate_) |
| 487 delegate_->SetCustomizationMode(); | 497 delegate_->SetCustomizationMode(); |
| 488 } | 498 } |
| OLD | NEW |