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

Side by Side Diff: chrome/browser/ui/views/exclusive_access_bubble_views.cc

Issue 1413523003: Made fullscreen bubble text non-transparent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 5 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/exclusive_access_bubble_views.h" 5 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h"
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/app/chrome_command_ids.h" 9 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 26 matching lines...) Expand all
37 #include "ui/base/l10n/l10n_util_win.h" 37 #include "ui/base/l10n/l10n_util_win.h"
38 #endif 38 #endif
39 39
40 // ExclusiveAccessView --------------------------------------------------------- 40 // ExclusiveAccessView ---------------------------------------------------------
41 41
42 namespace { 42 namespace {
43 43
44 // Space between the site info label and the buttons / link. 44 // Space between the site info label and the buttons / link.
45 const int kMiddlePaddingPx = 30; 45 const int kMiddlePaddingPx = 30;
46 46
47 // Gets the opacity of the bubble when not animating. 47 // Opacity of the background (out of 255). Only used with
48 int GetMaximumOpacity() { 48 // IsSimplifiedFullscreenUIEnabled.
49 return ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled() ? 180 : 255; 49 const unsigned char kBackgroundOpacity = 180;
50 }
51 50
52 class ButtonView : public views::View { 51 class ButtonView : public views::View {
53 public: 52 public:
54 ButtonView(views::ButtonListener* listener, int between_button_spacing); 53 ButtonView(views::ButtonListener* listener, int between_button_spacing);
55 ~ButtonView() override; 54 ~ButtonView() override;
56 55
57 // Returns an empty size when the view is not visible. 56 // Returns an empty size when the view is not visible.
58 gfx::Size GetPreferredSize() const override; 57 gfx::Size GetPreferredSize() const override;
59 58
60 views::LabelButton* accept_button() const { return accept_button_; } 59 views::LabelButton* accept_button() const { return accept_button_; }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 button_view_(nullptr), 137 button_view_(nullptr),
139 browser_fullscreen_exit_accelerator_(accelerator) { 138 browser_fullscreen_exit_accelerator_(accelerator) {
140 views::BubbleBorder::Shadow shadow_type = views::BubbleBorder::BIG_SHADOW; 139 views::BubbleBorder::Shadow shadow_type = views::BubbleBorder::BIG_SHADOW;
141 #if defined(OS_LINUX) 140 #if defined(OS_LINUX)
142 // Use a smaller shadow on Linux (including ChromeOS) as the shadow assets can 141 // Use a smaller shadow on Linux (including ChromeOS) as the shadow assets can
143 // overlap each other in a fullscreen notification bubble. 142 // overlap each other in a fullscreen notification bubble.
144 // See http://crbug.com/462983. 143 // See http://crbug.com/462983.
145 shadow_type = views::BubbleBorder::SMALL_SHADOW; 144 shadow_type = views::BubbleBorder::SMALL_SHADOW;
146 #endif 145 #endif
147 if (ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled()) 146 if (ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled())
148 shadow_type = views::BubbleBorder::NO_SHADOW; 147 shadow_type = views::BubbleBorder::NO_ASSETS;
149 148
150 ui::NativeTheme* theme = ui::NativeTheme::instance(); 149 ui::NativeTheme* theme = ui::NativeTheme::instance();
151 SkColor background_color = 150 SkColor background_color =
152 ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled() 151 ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled()
153 ? SK_ColorBLACK 152 ? SkColorSetA(SK_ColorBLACK, kBackgroundOpacity)
154 : theme->GetSystemColor(ui::NativeTheme::kColorId_BubbleBackground); 153 : theme->GetSystemColor(ui::NativeTheme::kColorId_BubbleBackground);
155 SkColor foreground_color = 154 SkColor foreground_color =
156 ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled() 155 ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled()
157 ? SK_ColorWHITE 156 ? SK_ColorWHITE
158 : theme->GetSystemColor(ui::NativeTheme::kColorId_LabelEnabledColor); 157 : theme->GetSystemColor(ui::NativeTheme::kColorId_LabelEnabledColor);
159 158
160 scoped_ptr<views::BubbleBorder> bubble_border(new views::BubbleBorder( 159 scoped_ptr<views::BubbleBorder> bubble_border(new views::BubbleBorder(
161 views::BubbleBorder::NONE, shadow_type, background_color)); 160 views::BubbleBorder::NONE, shadow_type, background_color));
162 set_background(new views::BubbleBackground(bubble_border.get())); 161 set_background(new views::BubbleBackground(bubble_border.get()));
163 SetBorder(bubble_border.Pass()); 162 SetBorder(bubble_border.Pass());
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 params.parent = 333 params.parent =
335 bubble_view_context_->GetBubbleAssociatedWidget()->GetNativeView(); 334 bubble_view_context_->GetBubbleAssociatedWidget()->GetNativeView();
336 // The simplified UI just shows a notice; clicks should go through to the 335 // The simplified UI just shows a notice; clicks should go through to the
337 // underlying window. 336 // underlying window.
338 params.accept_events = 337 params.accept_events =
339 !ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled(); 338 !ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled();
340 popup_->Init(params); 339 popup_->Init(params);
341 popup_->SetContentsView(view_); 340 popup_->SetContentsView(view_);
342 gfx::Size size = GetPopupRect(true).size(); 341 gfx::Size size = GetPopupRect(true).size();
343 popup_->SetBounds(GetPopupRect(false)); 342 popup_->SetBounds(GetPopupRect(false));
344 popup_->SetOpacity(GetMaximumOpacity());
345 // We set layout manager to nullptr to prevent the widget from sizing its 343 // We set layout manager to nullptr to prevent the widget from sizing its
346 // contents to the same size as itself. This prevents the widget contents from 344 // contents to the same size as itself. This prevents the widget contents from
347 // shrinking while we animate the height of the popup to give the impression 345 // shrinking while we animate the height of the popup to give the impression
348 // that it is sliding off the top of the screen. 346 // that it is sliding off the top of the screen.
349 popup_->GetRootView()->SetLayoutManager(nullptr); 347 popup_->GetRootView()->SetLayoutManager(nullptr);
350 view_->SetBounds(0, 0, size.width(), size.height()); 348 view_->SetBounds(0, 0, size.width(), size.height());
351 if (!ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled()) 349 if (!ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled())
352 popup_->ShowInactive(); // This does not activate the popup. 350 popup_->ShowInactive(); // This does not activate the popup.
353 351
354 popup_->AddObserver(this); 352 popup_->AddObserver(this);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 // switching the animated attribute midway through the animation looks 436 // switching the animated attribute midway through the animation looks
439 // weird. 437 // weird.
440 animation_->End(); 438 animation_->End();
441 439
442 animated_attribute_ = expected_animated_attribute; 440 animated_attribute_ = expected_animated_attribute;
443 441
444 // We may have finished hiding |popup_|. However, the bounds animation 442 // We may have finished hiding |popup_|. However, the bounds animation
445 // assumes |popup_| has the opacity when it is fully shown and the opacity 443 // assumes |popup_| has the opacity when it is fully shown and the opacity
446 // animation assumes |popup_| has the bounds when |popup_| is fully shown. 444 // animation assumes |popup_| has the bounds when |popup_| is fully shown.
447 if (animated_attribute_ == ANIMATED_ATTRIBUTE_BOUNDS) 445 if (animated_attribute_ == ANIMATED_ATTRIBUTE_BOUNDS)
448 popup_->SetOpacity(GetMaximumOpacity()); 446 popup_->SetOpacity(255);
449 else 447 else
450 UpdateBounds(); 448 UpdateBounds();
451 } 449 }
452 450
453 UpdateMouseWatcher(); 451 UpdateMouseWatcher();
454 } 452 }
455 453
456 void ExclusiveAccessBubbleViews::UpdateBounds() { 454 void ExclusiveAccessBubbleViews::UpdateBounds() {
457 gfx::Rect popup_rect(GetPopupRect(false)); 455 gfx::Rect popup_rect(GetPopupRect(false));
458 if (!popup_rect.IsEmpty()) { 456 if (!popup_rect.IsEmpty()) {
459 popup_->SetBounds(popup_rect); 457 popup_->SetBounds(popup_rect);
460 view_->SetY(popup_rect.height() - view_->height()); 458 view_->SetY(popup_rect.height() - view_->height());
461 } 459 }
462 } 460 }
463 461
464 views::View* ExclusiveAccessBubbleViews::GetBrowserRootView() const { 462 views::View* ExclusiveAccessBubbleViews::GetBrowserRootView() const {
465 return bubble_view_context_->GetBubbleAssociatedWidget()->GetRootView(); 463 return bubble_view_context_->GetBubbleAssociatedWidget()->GetRootView();
466 } 464 }
467 465
468 void ExclusiveAccessBubbleViews::AnimationProgressed( 466 void ExclusiveAccessBubbleViews::AnimationProgressed(
469 const gfx::Animation* animation) { 467 const gfx::Animation* animation) {
470 if (animated_attribute_ == ANIMATED_ATTRIBUTE_OPACITY) { 468 if (animated_attribute_ == ANIMATED_ATTRIBUTE_OPACITY) {
471 int opacity = animation_->CurrentValueBetween(0, GetMaximumOpacity()); 469 int opacity = animation_->CurrentValueBetween(0, 255);
472 if (opacity == 0) { 470 if (opacity == 0) {
473 popup_->Hide(); 471 popup_->Hide();
474 } else { 472 } else {
475 popup_->Show(); 473 popup_->Show();
476 popup_->SetOpacity(opacity); 474 popup_->SetOpacity(opacity);
477 } 475 }
478 } else { 476 } else {
479 if (GetPopupRect(false).IsEmpty()) { 477 if (GetPopupRect(false).IsEmpty()) {
480 popup_->Hide(); 478 popup_->Hide();
481 } else { 479 } else {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 const content::NotificationDetails& details) { 571 const content::NotificationDetails& details) {
574 DCHECK_EQ(chrome::NOTIFICATION_FULLSCREEN_CHANGED, type); 572 DCHECK_EQ(chrome::NOTIFICATION_FULLSCREEN_CHANGED, type);
575 UpdateForImmersiveState(); 573 UpdateForImmersiveState();
576 } 574 }
577 575
578 void ExclusiveAccessBubbleViews::OnWidgetVisibilityChanged( 576 void ExclusiveAccessBubbleViews::OnWidgetVisibilityChanged(
579 views::Widget* widget, 577 views::Widget* widget,
580 bool visible) { 578 bool visible) {
581 UpdateMouseWatcher(); 579 UpdateMouseWatcher();
582 } 580 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698