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

Side by Side Diff: chrome/browser/ui/views/infobars/infobar_view.cc

Issue 1767363002: [md] Give each infobar its own layer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/infobars/infobar_view.h" 5 #include "chrome/browser/ui/views/infobars/infobar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 77
78 InfoBarView::InfoBarView(scoped_ptr<infobars::InfoBarDelegate> delegate) 78 InfoBarView::InfoBarView(scoped_ptr<infobars::InfoBarDelegate> delegate)
79 : infobars::InfoBar(std::move(delegate)), 79 : infobars::InfoBar(std::move(delegate)),
80 views::ExternalFocusTracker(this, nullptr), 80 views::ExternalFocusTracker(this, nullptr),
81 child_container_(new views::View()), 81 child_container_(new views::View()),
82 icon_(nullptr), 82 icon_(nullptr),
83 close_button_(nullptr) { 83 close_button_(nullptr) {
84 set_owned_by_client(); // InfoBar deletes itself at the appropriate time. 84 set_owned_by_client(); // InfoBar deletes itself at the appropriate time.
85 set_background( 85 set_background(
86 new InfoBarBackground(infobars::InfoBar::delegate()->GetInfoBarType())); 86 new InfoBarBackground(infobars::InfoBar::delegate()->GetInfoBarType()));
87 SetEventTargeter(make_scoped_ptr(new views::ViewTargeter(this)));
87 88
88 AddChildView(child_container_); 89 AddChildView(child_container_);
89 90
90 if (ui::MaterialDesignController::IsModeMaterial()) { 91 if (ui::MaterialDesignController::IsModeMaterial()) {
92 SetPaintToLayer(true);
93 layer()->SetFillsBoundsOpaquely(false);
94
91 child_container_->SetPaintToLayer(true); 95 child_container_->SetPaintToLayer(true);
92 child_container_->layer()->SetMasksToBounds(true); 96 child_container_->layer()->SetMasksToBounds(true);
93 // Since MD doesn't use a gradient, we can set a solid bg color. 97 // Since MD doesn't use a gradient, we can set a solid bg color.
94 child_container_->set_background( 98 child_container_->set_background(
95 views::Background::CreateSolidBackground(infobars::InfoBar::GetTopColor( 99 views::Background::CreateSolidBackground(infobars::InfoBar::GetTopColor(
96 infobars::InfoBar::delegate()->GetInfoBarType()))); 100 infobars::InfoBar::delegate()->GetInfoBarType())));
97 } 101 }
98 } 102 }
99 103
100 InfoBarView::~InfoBarView() { 104 InfoBarView::~InfoBarView() {
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 void InfoBarView::OnWillChangeFocus(View* focused_before, View* focused_now) { 426 void InfoBarView::OnWillChangeFocus(View* focused_before, View* focused_now) {
423 views::ExternalFocusTracker::OnWillChangeFocus(focused_before, focused_now); 427 views::ExternalFocusTracker::OnWillChangeFocus(focused_before, focused_now);
424 428
425 // This will trigger some screen readers to read the entire contents of this 429 // This will trigger some screen readers to read the entire contents of this
426 // infobar. 430 // infobar.
427 if (focused_before && focused_now && !Contains(focused_before) && 431 if (focused_before && focused_now && !Contains(focused_before) &&
428 Contains(focused_now)) { 432 Contains(focused_now)) {
429 NotifyAccessibilityEvent(ui::AX_EVENT_ALERT, true); 433 NotifyAccessibilityEvent(ui::AX_EVENT_ALERT, true);
430 } 434 }
431 } 435 }
436
437 bool InfoBarView::DoesIntersectRect(const View* target,
438 const gfx::Rect& rect) const {
439 DCHECK_EQ(this, target);
440 return rect.CenterPoint().y() >= arrow_height();
Peter Kasting 2016/03/08 01:08:17 This doesn't seem right... if the goal is to allow
Evan Stade 2016/03/08 01:43:29 ditto to my other comment. The two behaviors descr
Peter Kasting 2016/03/08 03:11:04 After reading your other comments, it seems like y
tdanderson 2016/03/14 17:53:03 This should also use rect.bottom() instead of rect
441 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698