OLD | NEW |
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/constrained_window_views.h" | 5 #include "chrome/browser/ui/views/constrained_window_views.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 | 577 |
578 //////////////////////////////////////////////////////////////////////////////// | 578 //////////////////////////////////////////////////////////////////////////////// |
579 // ConstrainedWindowViews, public: | 579 // ConstrainedWindowViews, public: |
580 | 580 |
581 ConstrainedWindowViews::ConstrainedWindowViews( | 581 ConstrainedWindowViews::ConstrainedWindowViews( |
582 content::WebContents* web_contents, | 582 content::WebContents* web_contents, |
583 views::WidgetDelegate* widget_delegate, | 583 views::WidgetDelegate* widget_delegate, |
584 bool enable_chrome_style) | 584 bool enable_chrome_style) |
585 : WebContentsObserver(web_contents), | 585 : WebContentsObserver(web_contents), |
586 web_contents_(web_contents), | 586 web_contents_(web_contents), |
587 ALLOW_THIS_IN_INITIALIZER_LIST(native_constrained_window_( | 587 enable_chrome_style_(enable_chrome_style), |
588 NativeConstrainedWindow::CreateNativeConstrainedWindow(this))), | 588 custom_client_insets_(false) { |
589 enable_chrome_style_(enable_chrome_style) { | 589 InitConstrainedWindowViews(widget_delegate); |
| 590 } |
| 591 |
| 592 ConstrainedWindowViews::ConstrainedWindowViews( |
| 593 content::WebContents* web_contents, |
| 594 views::WidgetDelegate* widget_delegate, |
| 595 bool enable_chrome_style, |
| 596 const gfx::Insets& client_insets) |
| 597 : WebContentsObserver(web_contents), |
| 598 web_contents_(web_contents), |
| 599 enable_chrome_style_(enable_chrome_style), |
| 600 custom_client_insets_(true), |
| 601 client_insets_(client_insets) { |
| 602 InitConstrainedWindowViews(widget_delegate); |
| 603 } |
| 604 |
| 605 void ConstrainedWindowViews::InitConstrainedWindowViews( |
| 606 views::WidgetDelegate* widget_delegate) { |
| 607 native_constrained_window_ = |
| 608 NativeConstrainedWindow::CreateNativeConstrainedWindow(this); |
590 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | 609 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
591 params.delegate = widget_delegate; | 610 params.delegate = widget_delegate; |
592 params.native_widget = native_constrained_window_->AsNativeWidget(); | 611 params.native_widget = native_constrained_window_->AsNativeWidget(); |
593 params.child = true; | 612 params.child = true; |
594 | 613 |
595 if (enable_chrome_style_) { | 614 if (enable_chrome_style_) { |
596 params.parent_widget = Widget::GetTopLevelWidgetForNativeView( | 615 params.parent_widget = Widget::GetTopLevelWidgetForNativeView( |
597 web_contents->GetView()->GetNativeView()); | 616 web_contents_->GetView()->GetNativeView()); |
598 } else { | 617 } else { |
599 params.parent = web_contents->GetNativeView(); | 618 params.parent = web_contents_->GetNativeView(); |
600 } | 619 } |
601 | 620 |
602 #if defined(USE_ASH) | 621 #if defined(USE_ASH) |
603 // Ash window headers can be transparent. | 622 // Ash window headers can be transparent. |
604 params.transparent = true; | 623 params.transparent = true; |
605 ash::SetChildWindowVisibilityChangesAnimated(params.GetParent()); | 624 ash::SetChildWindowVisibilityChangesAnimated(params.GetParent()); |
606 // No animations should get performed on the window since that will re-order | 625 // No animations should get performed on the window since that will re-order |
607 // the window stack which will then cause many problems. | 626 // the window stack which will then cause many problems. |
608 if (params.parent && params.parent->parent()) { | 627 if (params.parent && params.parent->parent()) { |
609 params.parent->parent()->SetProperty(aura::client::kAnimationsDisabledKey, | 628 params.parent->parent()->SetProperty(aura::client::kAnimationsDisabledKey, |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 // ConstrainedWindowViews, views::Widget overrides: | 707 // ConstrainedWindowViews, views::Widget overrides: |
689 | 708 |
690 void ConstrainedWindowViews::CenterWindow(const gfx::Size& size) { | 709 void ConstrainedWindowViews::CenterWindow(const gfx::Size& size) { |
691 Widget::CenterWindow(size); | 710 Widget::CenterWindow(size); |
692 if (enable_chrome_style_) | 711 if (enable_chrome_style_) |
693 PositionChromeStyleWindow(); | 712 PositionChromeStyleWindow(); |
694 } | 713 } |
695 | 714 |
696 views::NonClientFrameView* ConstrainedWindowViews::CreateNonClientFrameView() { | 715 views::NonClientFrameView* ConstrainedWindowViews::CreateNonClientFrameView() { |
697 if (enable_chrome_style_) { | 716 if (enable_chrome_style_) { |
698 return new ConstrainedWindowFrameSimple(this); | 717 ConstrainedWindowFrameSimple* frame = |
| 718 new ConstrainedWindowFrameSimple(this); |
| 719 if (custom_client_insets_) { |
| 720 frame->set_border(views::Border::CreateEmptyBorder( |
| 721 client_insets_.top(), |
| 722 client_insets_.left(), |
| 723 client_insets_.bottom(), |
| 724 client_insets_.right())); |
| 725 } |
| 726 return frame; |
699 } else { | 727 } else { |
700 #if defined(USE_ASH) | 728 #if defined(USE_ASH) |
701 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 729 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
702 if (command_line->HasSwitch(ash::switches::kAuraGoogleDialogFrames)) | 730 if (command_line->HasSwitch(ash::switches::kAuraGoogleDialogFrames)) |
703 return ash::Shell::GetInstance()->CreateDefaultNonClientFrameView(this); | 731 return ash::Shell::GetInstance()->CreateDefaultNonClientFrameView(this); |
704 ConstrainedWindowFrameViewAsh* frame = new ConstrainedWindowFrameViewAsh; | 732 ConstrainedWindowFrameViewAsh* frame = new ConstrainedWindowFrameViewAsh; |
705 frame->Init(this); | 733 frame->Init(this); |
706 return frame; | 734 return frame; |
707 #endif | 735 #endif |
708 return new ConstrainedWindowFrameView(this); | 736 return new ConstrainedWindowFrameView(this); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 } | 775 } |
748 } | 776 } |
749 | 777 |
750 //////////////////////////////////////////////////////////////////////////////// | 778 //////////////////////////////////////////////////////////////////////////////// |
751 // ConstrainedWindowViews, content::WebContentsObserver implementation: | 779 // ConstrainedWindowViews, content::WebContentsObserver implementation: |
752 | 780 |
753 void ConstrainedWindowViews::WebContentsDestroyed( | 781 void ConstrainedWindowViews::WebContentsDestroyed( |
754 content::WebContents* web_contents) { | 782 content::WebContents* web_contents) { |
755 web_contents_ = NULL; | 783 web_contents_ = NULL; |
756 } | 784 } |
OLD | NEW |