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/prefs/pref_service.h" |
| 8 #include "base/strings/string16.h" | 8 #include "base/strings/string16.h" |
| 9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
| 10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
| 11 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" | 11 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" |
| 12 #include "chrome/browser/ui/views/frame/browser_view.h" | 12 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 13 #include "chrome/browser/ui/views/frame/top_container_view.h" | 13 #include "chrome/browser/ui/views/frame/top_container_view.h" |
| 14 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" | 14 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" |
| 15 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" | 15 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" |
| 16 #include "chrome/browser/ui/views/website_settings/permission_selector_view.h" | 16 #include "chrome/browser/ui/views/website_settings/permission_selector_view.h" |
| 17 #include "chrome/browser/ui/views/website_settings/permission_selector_view_obse rver.h" | 17 #include "chrome/browser/ui/views/website_settings/permission_selector_view_obse rver.h" |
| 18 #include "chrome/browser/ui/website_settings/permission_bubble_delegate.h" | |
| 18 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" | 19 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" |
| 19 #include "chrome/common/pref_names.h" | 20 #include "chrome/common/pref_names.h" |
| 20 #include "chrome/grit/generated_resources.h" | 21 #include "chrome/grit/generated_resources.h" |
| 21 #include "components/url_formatter/url_formatter.h" | 22 #include "components/url_formatter/url_formatter.h" |
| 22 #include "ui/accessibility/ax_view_state.h" | 23 #include "ui/accessibility/ax_view_state.h" |
| 23 #include "ui/base/l10n/l10n_util.h" | 24 #include "ui/base/l10n/l10n_util.h" |
| 24 #include "ui/base/models/combobox_model.h" | 25 #include "ui/base/models/combobox_model.h" |
| 25 #include "ui/base/resource/resource_bundle.h" | 26 #include "ui/base/resource/resource_bundle.h" |
| 26 #include "ui/gfx/paint_vector_icon.h" | 27 #include "ui/gfx/paint_vector_icon.h" |
| 27 #include "ui/gfx/text_constants.h" | 28 #include "ui/gfx/text_constants.h" |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 399 frame->SetBubbleBorder(scoped_ptr<views::BubbleBorder>( | 400 frame->SetBubbleBorder(scoped_ptr<views::BubbleBorder>( |
| 400 new views::BubbleBorder(adjusted_arrow, shadow(), color()))); | 401 new views::BubbleBorder(adjusted_arrow, shadow(), color()))); |
| 401 | 402 |
| 402 // Reposition the bubble based on the updated arrow and view. | 403 // Reposition the bubble based on the updated arrow and view. |
| 403 SetAnchorView(anchor_view); | 404 SetAnchorView(anchor_view); |
| 404 } | 405 } |
| 405 | 406 |
| 406 ////////////////////////////////////////////////////////////////////////////// | 407 ////////////////////////////////////////////////////////////////////////////// |
| 407 // PermissionBubbleViewViews | 408 // PermissionBubbleViewViews |
| 408 | 409 |
| 409 PermissionBubbleViewViews::PermissionBubbleViewViews(Browser* browser) | 410 PermissionBubbleViewViews::PermissionBubbleViewViews( |
| 410 : browser_(browser), | 411 PermissionBubbleDelegate* delegate) |
| 411 delegate_(nullptr), | 412 : delegate_(delegate), bubble_delegate_(nullptr) { |
| 412 bubble_delegate_(nullptr) { | 413 DCHECK(delegate); |
| 413 DCHECK(browser); | |
| 414 } | 414 } |
| 415 | 415 |
| 416 PermissionBubbleViewViews::~PermissionBubbleViewViews() { | 416 PermissionBubbleViewViews::~PermissionBubbleViewViews() { |
| 417 } | 417 } |
| 418 | 418 |
| 419 // static | 419 // static |
| 420 scoped_ptr<PermissionBubbleView> PermissionBubbleView::Create( | 420 scoped_ptr<BubbleUI> PermissionBubbleView::Create( |
| 421 Browser* browser) { | 421 PermissionBubbleDelegate* delegate) { |
| 422 return make_scoped_ptr(new PermissionBubbleViewViews(browser)); | 422 return make_scoped_ptr(new PermissionBubbleViewViews(delegate)); |
| 423 } | 423 } |
| 424 | 424 |
| 425 views::View* PermissionBubbleViewViews::GetAnchorView() { | 425 views::View* PermissionBubbleViewViews::GetAnchorView() { |
|
groby-ooo-7-16
2015/08/06 21:32:56
Once we have a Cocoa version, too, let's see how m
hcarmona
2015/08/07 02:12:58
Sounds good
| |
| 426 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_); | 426 BrowserView* browser_view = |
| 427 BrowserView::GetBrowserViewForBrowser(delegate_->browser()); | |
| 427 | 428 |
| 428 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) | 429 if (delegate_->browser()->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) |
| 429 return browser_view->GetLocationBarView()->location_icon_view(); | 430 return browser_view->GetLocationBarView()->location_icon_view(); |
| 430 | 431 |
| 431 if (browser_view->IsFullscreenBubbleVisible()) | 432 if (browser_view->IsFullscreenBubbleVisible()) |
| 432 return browser_view->exclusive_access_bubble()->GetView(); | 433 return browser_view->exclusive_access_bubble()->GetView(); |
| 433 | 434 |
| 434 return browser_view->top_container(); | 435 return browser_view->top_container(); |
| 435 } | 436 } |
| 436 | 437 |
| 437 views::BubbleBorder::Arrow PermissionBubbleViewViews::GetAnchorArrow() { | 438 views::BubbleBorder::Arrow PermissionBubbleViewViews::GetAnchorArrow() { |
| 438 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) | 439 if (delegate_->browser()->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) |
| 439 return views::BubbleBorder::TOP_LEFT; | 440 return views::BubbleBorder::TOP_LEFT; |
| 440 return views::BubbleBorder::NONE; | 441 return views::BubbleBorder::NONE; |
| 441 } | 442 } |
| 442 | 443 |
| 443 void PermissionBubbleViewViews::SetDelegate(Delegate* delegate) { | 444 void PermissionBubbleViewViews::SetDelegate( |
| 445 PermissionBubbleDelegate* delegate) { | |
| 444 delegate_ = delegate; | 446 delegate_ = delegate; |
| 445 } | 447 } |
| 446 | 448 |
| 447 void PermissionBubbleViewViews::Show( | 449 void PermissionBubbleViewViews::Show() { |
| 448 const std::vector<PermissionBubbleRequest*>& requests, | |
| 449 const std::vector<bool>& values) { | |
| 450 if (bubble_delegate_) | 450 if (bubble_delegate_) |
| 451 bubble_delegate_->Close(); | 451 bubble_delegate_->Close(); |
| 452 | 452 |
| 453 bubble_delegate_ = | 453 bubble_delegate_ = new PermissionsBubbleDelegateView( |
| 454 new PermissionsBubbleDelegateView( | 454 GetAnchorView(), GetAnchorArrow(), this, |
| 455 GetAnchorView(), GetAnchorArrow(), this, | 455 delegate_->browser()->profile()->GetPrefs()->GetString( |
| 456 browser_->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages), | 456 prefs::kAcceptLanguages), |
| 457 requests, values); | 457 delegate_->requests(), delegate_->accept_states()); |
| 458 | 458 |
| 459 // Set |parent_window| because some valid anchors can become hidden. | 459 // Set |parent_window| because some valid anchors can become hidden. |
| 460 views::Widget* widget = views::Widget::GetWidgetForNativeWindow( | 460 views::Widget* widget = views::Widget::GetWidgetForNativeWindow( |
| 461 browser_->window()->GetNativeWindow()); | 461 delegate_->browser()->window()->GetNativeWindow()); |
| 462 bubble_delegate_->set_parent_window(widget->GetNativeView()); | 462 bubble_delegate_->set_parent_window(widget->GetNativeView()); |
| 463 | 463 |
| 464 views::BubbleDelegateView::CreateBubble(bubble_delegate_)->Show(); | 464 views::BubbleDelegateView::CreateBubble(bubble_delegate_)->Show(); |
| 465 bubble_delegate_->SizeToContents(); | 465 bubble_delegate_->SizeToContents(); |
| 466 } | 466 } |
| 467 | 467 |
| 468 bool PermissionBubbleViewViews::CanAcceptRequestUpdate() { | 468 bool PermissionBubbleViewViews::CanAcceptRequestUpdate() { |
| 469 return !(bubble_delegate_ && bubble_delegate_->IsMouseHovered()); | 469 return !(bubble_delegate_ && bubble_delegate_->IsMouseHovered()); |
| 470 } | 470 } |
| 471 | 471 |
| 472 void PermissionBubbleViewViews::Hide() { | 472 void PermissionBubbleViewViews::Hide() { |
|
groby-ooo-7-16
2015/08/06 21:32:56
Ideally, nobody calls Hide here any more - that sh
hcarmona
2015/08/07 02:12:58
Show, Hide and UpdateAnchorPosition are part of Bu
| |
| 473 if (bubble_delegate_) { | 473 if (bubble_delegate_) { |
| 474 bubble_delegate_->Close(); | 474 bubble_delegate_->Close(); |
| 475 bubble_delegate_ = nullptr; | 475 bubble_delegate_ = nullptr; |
| 476 } | 476 } |
| 477 } | 477 } |
| 478 | 478 |
| 479 bool PermissionBubbleViewViews::IsVisible() { | 479 bool PermissionBubbleViewViews::IsVisible() { |
| 480 return bubble_delegate_ != nullptr; | 480 return bubble_delegate_ != nullptr; |
| 481 } | 481 } |
| 482 | 482 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 505 | 505 |
| 506 void PermissionBubbleViewViews::Accept() { | 506 void PermissionBubbleViewViews::Accept() { |
| 507 if (delegate_) | 507 if (delegate_) |
| 508 delegate_->Accept(); | 508 delegate_->Accept(); |
| 509 } | 509 } |
| 510 | 510 |
| 511 void PermissionBubbleViewViews::Deny() { | 511 void PermissionBubbleViewViews::Deny() { |
| 512 if (delegate_) | 512 if (delegate_) |
| 513 delegate_->Deny(); | 513 delegate_->Deny(); |
| 514 } | 514 } |
| OLD | NEW |