| Index: chrome/browser/ui/views/frame/app_non_client_frame_view_ash.cc
|
| diff --git a/chrome/browser/ui/views/frame/app_non_client_frame_view_ash.cc b/chrome/browser/ui/views/frame/app_non_client_frame_view_ash.cc
|
| index 89f4dabf4f07605c3e9dafbcc65b3f8b06a90f19..109ff3e490b10b198fedd1ec7ab0c0101b16676d 100644
|
| --- a/chrome/browser/ui/views/frame/app_non_client_frame_view_ash.cc
|
| +++ b/chrome/browser/ui/views/frame/app_non_client_frame_view_ash.cc
|
| @@ -4,165 +4,24 @@
|
|
|
| #include "chrome/browser/ui/views/frame/app_non_client_frame_view_ash.h"
|
|
|
| -#include "ash/wm/caption_buttons/frame_caption_button_container_view.h"
|
| -#include "base/i18n/rtl.h"
|
| -#include "chrome/browser/ui/views/frame/browser_frame.h"
|
| -#include "chrome/browser/ui/views/frame/browser_view.h"
|
| +#include "ash/wm/caption_buttons/hideable_caption_button_container.h"
|
| #include "grit/ash_resources.h"
|
| #include "ui/aura/window.h"
|
| #include "ui/base/hit_test.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/image/image.h"
|
| -#include "ui/gfx/point.h"
|
| -#include "ui/gfx/rect.h"
|
| -#include "ui/gfx/size.h"
|
| -#include "ui/views/background.h"
|
| -#include "ui/views/border.h"
|
| #include "ui/views/widget/widget.h"
|
| -#include "ui/views/window/non_client_view.h"
|
| -
|
| -namespace {
|
| -
|
| -// The size of the shadow around the caption buttons.
|
| -const int kShadowSizeX = 16;
|
| -const int kShadowSizeBottom = 21;
|
| -
|
| -// The border for |control_view_|.
|
| -class ControlViewBorder : public views::Border {
|
| - public:
|
| - ControlViewBorder() {
|
| - int border_id = base::i18n::IsRTL() ?
|
| - IDR_AURA_WINDOW_FULLSCREEN_SHADOW_RTL :
|
| - IDR_AURA_WINDOW_FULLSCREEN_SHADOW;
|
| - border_ = ui::ResourceBundle::GetSharedInstance().GetImageNamed(
|
| - border_id).AsImageSkia();
|
| - }
|
| -
|
| - virtual ~ControlViewBorder() {
|
| - }
|
| -
|
| - private:
|
| - // views::Border overrides:
|
| - virtual void Paint(const views::View& view, gfx::Canvas* canvas) OVERRIDE {
|
| - canvas->DrawImageInt(border_, 0, view.height() - border_.height());
|
| - }
|
| -
|
| - virtual gfx::Insets GetInsets() const OVERRIDE {
|
| - return gfx::Insets(0, kShadowSizeX, kShadowSizeBottom, 0);
|
| - }
|
| -
|
| - gfx::ImageSkia border_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ControlViewBorder);
|
| -};
|
| -
|
| -// The background for |control_view_|.
|
| -class ControlViewBackground : public views::Background {
|
| - public:
|
| - explicit ControlViewBackground(bool is_incognito) {
|
| - ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| - int control_base_resource_id = is_incognito ?
|
| - IDR_AURA_WINDOW_HEADER_BASE_INCOGNITO_ACTIVE :
|
| - IDR_AURA_WINDOW_HEADER_BASE_ACTIVE;
|
| - background_ = rb.GetImageNamed(control_base_resource_id).AsImageSkia();
|
| - }
|
| -
|
| - virtual ~ControlViewBackground() {
|
| - }
|
| -
|
| - private:
|
| - // views::Background override:
|
| - virtual void Paint(gfx::Canvas* canvas, views::View* view) const OVERRIDE {
|
| - gfx::Rect paint_bounds(view->GetContentsBounds());
|
| - paint_bounds.set_x(view->GetMirroredXForRect(paint_bounds));
|
| - canvas->TileImageInt(background_, paint_bounds.x(), paint_bounds.y(),
|
| - paint_bounds.width(), paint_bounds.height());
|
| - }
|
| -
|
| - gfx::ImageSkia background_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ControlViewBackground);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -// Observer to detect when the browser frame widget closes so we can clean
|
| -// up our ControlView. Because we can be closed via a keyboard shortcut we
|
| -// are not guaranteed to run AppNonClientFrameView's Close() or Restore().
|
| -class AppNonClientFrameViewAsh::FrameObserver : public views::WidgetObserver {
|
| - public:
|
| - explicit FrameObserver(AppNonClientFrameViewAsh* owner) : owner_(owner) {}
|
| - virtual ~FrameObserver() {}
|
| -
|
| - // views::WidgetObserver:
|
| - virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE {
|
| - owner_->CloseControlWidget();
|
| - }
|
| -
|
| - private:
|
| - AppNonClientFrameViewAsh* owner_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(FrameObserver);
|
| -};
|
|
|
| // static
|
| const char AppNonClientFrameViewAsh::kViewClassName[] =
|
| "AppNonClientFrameViewAsh";
|
| -// static
|
| -const char AppNonClientFrameViewAsh::kControlWindowName[] =
|
| - "AppNonClientFrameViewAshControls";
|
| -
|
| -AppNonClientFrameViewAsh::AppNonClientFrameViewAsh(
|
| - BrowserFrame* frame, BrowserView* browser_view)
|
| - : BrowserNonClientFrameView(frame, browser_view),
|
| - control_view_(NULL),
|
| - control_widget_(NULL),
|
| - frame_observer_(new FrameObserver(this)) {
|
| - control_view_ = new ash::FrameCaptionButtonContainerView(frame,
|
| - ash::FrameCaptionButtonContainerView::MINIMIZE_ALLOWED);
|
| - control_view_->set_header_style(
|
| - ash::FrameCaptionButtonContainerView::HEADER_STYLE_MAXIMIZED_HOSTED_APP);
|
| - control_view_->set_border(new ControlViewBorder());
|
| - control_view_->set_background(new ControlViewBackground(
|
| - browser_view->IsOffTheRecord()));
|
|
|
| - // This FrameView is always maximized so we don't want the window to have
|
| - // resize borders.
|
| +AppNonClientFrameViewAsh::AppNonClientFrameViewAsh(views::Widget* frame) {
|
| frame->GetNativeView()->set_hit_test_bounds_override_inner(gfx::Insets());
|
| - // Watch for frame close so we can clean up the control widget.
|
| - frame->AddObserver(frame_observer_.get());
|
| - set_background(views::Background::CreateSolidBackground(SK_ColorBLACK));
|
| - // Create the controls.
|
| - control_widget_ = new views::Widget;
|
| - views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL);
|
| - params.parent = browser_view->GetNativeWindow();
|
| - params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
|
| - control_widget_->Init(params);
|
| - control_widget_->SetContentsView(control_view_);
|
| - aura::Window* window = control_widget_->GetNativeView();
|
| - window->SetName(kControlWindowName);
|
| -
|
| - // Need to exclude the shadow from the active control area.
|
| - gfx::Insets hit_test_insets(control_view_->GetInsets());
|
| - if (base::i18n::IsRTL()) {
|
| - hit_test_insets = gfx::Insets(hit_test_insets.top(),
|
| - hit_test_insets.right(),
|
| - hit_test_insets.bottom(),
|
| - hit_test_insets.left());
|
| - }
|
| - window->SetHitTestBoundsOverrideOuter(hit_test_insets, hit_test_insets);
|
| -
|
| - gfx::Rect control_bounds = GetControlBounds();
|
| - window->SetBounds(control_bounds);
|
| - control_widget_->Show();
|
| + container_.reset(new ash::HideableCaptionButtonContainer(
|
| + IDR_AURA_WINDOW_HEADER_BASE_ACTIVE, frame));
|
| + container_->ShowButtonWidget();
|
| }
|
|
|
| AppNonClientFrameViewAsh::~AppNonClientFrameViewAsh() {
|
| - frame()->RemoveObserver(frame_observer_.get());
|
| - // This frame view can be replaced (and deleted) if the window is restored
|
| - // via a keyboard shortcut like Alt-[. Ensure we close the control widget.
|
| - CloseControlWidget();
|
| }
|
|
|
| gfx::Rect AppNonClientFrameViewAsh::GetBoundsForClientView() const {
|
| @@ -192,45 +51,6 @@ void AppNonClientFrameViewAsh::UpdateWindowIcon() {
|
| void AppNonClientFrameViewAsh::UpdateWindowTitle() {
|
| }
|
|
|
| -gfx::Rect AppNonClientFrameViewAsh::GetBoundsForTabStrip(
|
| - views::View* tabstrip) const {
|
| - return gfx::Rect();
|
| -}
|
| -
|
| -BrowserNonClientFrameView::TabStripInsets
|
| -AppNonClientFrameViewAsh::GetTabStripInsets(bool restored) const {
|
| - return TabStripInsets();
|
| -}
|
| -
|
| -int AppNonClientFrameViewAsh::GetThemeBackgroundXInset() const {
|
| - return 0;
|
| -}
|
| -
|
| -void AppNonClientFrameViewAsh::UpdateThrobber(bool running) {
|
| -}
|
| -
|
| const char* AppNonClientFrameViewAsh::GetClassName() const {
|
| return kViewClassName;
|
| }
|
| -
|
| -void AppNonClientFrameViewAsh::OnBoundsChanged(
|
| - const gfx::Rect& previous_bounds) {
|
| - if (control_widget_)
|
| - control_widget_->GetNativeView()->SetBounds(GetControlBounds());
|
| -}
|
| -
|
| -gfx::Rect AppNonClientFrameViewAsh::GetControlBounds() const {
|
| - if (!control_view_)
|
| - return gfx::Rect();
|
| - gfx::Size preferred = control_view_->GetPreferredSize();
|
| - return gfx::Rect(
|
| - base::i18n::IsRTL() ? 0 : (width() - preferred.width()), 0,
|
| - preferred.width(), preferred.height());
|
| -}
|
| -
|
| -void AppNonClientFrameViewAsh::CloseControlWidget() {
|
| - if (control_widget_) {
|
| - control_widget_->Close();
|
| - control_widget_ = NULL;
|
| - }
|
| -}
|
|
|