Index: chrome/browser/ui/views/frame/app_non_client_frame_view_aura.cc |
diff --git a/chrome/browser/ui/views/frame/app_non_client_frame_view_aura.cc b/chrome/browser/ui/views/frame/app_non_client_frame_view_aura.cc |
deleted file mode 100644 |
index fa4ad98a438589c923d012e5213e7b1b769b4cb2..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/views/frame/app_non_client_frame_view_aura.cc |
+++ /dev/null |
@@ -1,273 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/views/frame/app_non_client_frame_view_aura.h" |
- |
-#include "base/debug/stack_trace.h" |
-#include "chrome/browser/ui/views/frame/browser_frame.h" |
-#include "chrome/browser/ui/views/frame/browser_view.h" |
-#include "grit/ash_resources.h" |
-#include "grit/generated_resources.h" // Accessibility names |
-#include "grit/theme_resources.h" |
-#include "ui/aura/window.h" |
-#include "ui/base/hit_test.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/base/theme_provider.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/controls/button/image_button.h" |
-#include "ui/views/widget/widget.h" |
-#include "ui/views/window/non_client_view.h" |
- |
-#if defined(USE_ASH) |
-#include "ash/wm/workspace/frame_maximize_button.h" |
-#endif |
- |
-namespace { |
-// The number of pixels within the shadow to draw the buttons. |
-const int kShadowStart = 16; |
-// The size and close buttons are designed to overlap. |
-const int kButtonOverlap = 1; |
- |
-// TODO(pkotwicz): Remove these constants once the IDR_AURA_FULLSCREEN_SHADOW |
-// resource is updated. |
-const int kShadowHeightStretch = -1; |
-} |
- |
-class AppNonClientFrameViewAura::ControlView |
- : public views::View, public views::ButtonListener { |
- public: |
- explicit ControlView(AppNonClientFrameViewAura* owner) : |
- owner_(owner), |
- close_button_(new views::ImageButton(this)), |
-#if defined(USE_ASH) |
- restore_button_(new ash::FrameMaximizeButton(this, owner_)) |
-#else |
- restore_button_(new views::ImageButton(this)) |
-#endif |
- { |
- close_button_->SetAccessibleName( |
- l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); |
- restore_button_->SetAccessibleName( |
- l10n_util::GetStringUTF16(IDS_ACCNAME_MAXIMIZE)); |
- |
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
- |
- int control_base_resource_id = owner->browser_view()->IsOffTheRecord() ? |
- IDR_AURA_WINDOW_HEADER_BASE_INCOGNITO_ACTIVE : |
- IDR_AURA_WINDOW_HEADER_BASE_ACTIVE; |
- control_base_ = rb.GetImageNamed(control_base_resource_id).ToImageSkia(); |
- shadow_ = rb.GetImageNamed(IDR_AURA_WINDOW_FULLSCREEN_SHADOW).ToImageSkia(); |
- |
- AddChildView(close_button_); |
- AddChildView(restore_button_); |
- } |
- |
- virtual ~ControlView() {} |
- |
- virtual void Layout() OVERRIDE { |
- restore_button_->SetPosition(gfx::Point(kShadowStart, 0)); |
- close_button_->SetPosition(gfx::Point(kShadowStart + |
- restore_button_->width() - kButtonOverlap, 0)); |
- } |
- |
- virtual void ViewHierarchyChanged(bool is_add, View* parent, |
- View* child) OVERRIDE { |
- if (is_add && child == this) { |
- SetButtonImages(restore_button_, |
- IDR_AURA_WINDOW_FULLSCREEN_RESTORE, |
- IDR_AURA_WINDOW_FULLSCREEN_RESTORE_H, |
- IDR_AURA_WINDOW_FULLSCREEN_RESTORE_P); |
- restore_button_->SizeToPreferredSize(); |
- |
- SetButtonImages(close_button_, |
- IDR_AURA_WINDOW_FULLSCREEN_CLOSE, |
- IDR_AURA_WINDOW_FULLSCREEN_CLOSE_H, |
- IDR_AURA_WINDOW_FULLSCREEN_CLOSE_P); |
- close_button_->SizeToPreferredSize(); |
- } |
- } |
- |
- virtual gfx::Size GetPreferredSize() OVERRIDE { |
- return gfx::Size(shadow_->width(), |
- shadow_->height() + kShadowHeightStretch); |
- } |
- |
- virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { |
- canvas->TileImageInt(*control_base_, |
- restore_button_->x(), |
- restore_button_->y(), |
- restore_button_->width() - kButtonOverlap + close_button_->width(), |
- restore_button_->height()); |
- |
- views::View::OnPaint(canvas); |
- |
- canvas->DrawImageInt(*shadow_, 0, kShadowHeightStretch); |
- } |
- |
- virtual void ButtonPressed(views::Button* sender, |
- const ui::Event& event) OVERRIDE { |
- if (sender == close_button_) { |
- owner_->frame()->Close(); |
- } else if (sender == restore_button_) { |
- restore_button_->SetState(views::CustomButton::BS_NORMAL); |
- owner_->frame()->Restore(); |
- } |
- } |
- |
- private: |
- // Sets images whose ids are passed in for each of the respective states |
- // of |button|. |
- void SetButtonImages(views::ImageButton* button, int normal_image_id, |
- int hot_image_id, int pushed_image_id) { |
- ui::ThemeProvider* theme_provider = GetThemeProvider(); |
- button->SetImage(views::CustomButton::BS_NORMAL, |
- theme_provider->GetImageSkiaNamed(normal_image_id)); |
- button->SetImage(views::CustomButton::BS_HOT, |
- theme_provider->GetImageSkiaNamed(hot_image_id)); |
- button->SetImage(views::CustomButton::BS_PUSHED, |
- theme_provider->GetImageSkiaNamed(pushed_image_id)); |
- } |
- |
- AppNonClientFrameViewAura* owner_; |
- views::ImageButton* close_button_; |
- views::ImageButton* restore_button_; |
- const gfx::ImageSkia* control_base_; |
- const gfx::ImageSkia* shadow_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ControlView); |
-}; |
- |
-// 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 AppNonClientFrameViewAura::FrameObserver : public views::WidgetObserver { |
- public: |
- explicit FrameObserver(AppNonClientFrameViewAura* owner) : owner_(owner) {} |
- virtual ~FrameObserver() {} |
- |
- // views::WidgetObserver: |
- virtual void OnWidgetClosing(views::Widget* widget) OVERRIDE { |
- owner_->CloseControlWidget(); |
- } |
- |
- private: |
- AppNonClientFrameViewAura* owner_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FrameObserver); |
-}; |
- |
-// static |
-const char AppNonClientFrameViewAura::kViewClassName[] = |
- "AppNonClientFrameViewAura"; |
-// static |
-const char AppNonClientFrameViewAura::kControlWindowName[] = |
- "AppNonClientFrameViewAuraControls"; |
- |
-AppNonClientFrameViewAura::AppNonClientFrameViewAura( |
- BrowserFrame* frame, BrowserView* browser_view) |
- : BrowserNonClientFrameView(frame, browser_view), |
- control_view_(new ControlView(this)), |
- control_widget_(NULL), |
- frame_observer_(new FrameObserver(this)) { |
- // This FrameView is always maximized so we don't want the window to have |
- // resize borders. |
- 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.transparent = true; |
- control_widget_->Init(params); |
- control_widget_->SetContentsView(control_view_); |
- aura::Window* window = control_widget_->GetNativeView(); |
- window->SetName(kControlWindowName); |
- gfx::Rect control_bounds = GetControlBounds(); |
- window->SetBounds(control_bounds); |
- control_widget_->Show(); |
-} |
- |
-AppNonClientFrameViewAura::~AppNonClientFrameViewAura() { |
- 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 AppNonClientFrameViewAura::GetBoundsForClientView() const { |
- return GetLocalBounds(); |
-} |
- |
-gfx::Rect AppNonClientFrameViewAura::GetWindowBoundsForClientBounds( |
- const gfx::Rect& client_bounds) const { |
- return client_bounds; |
-} |
- |
-int AppNonClientFrameViewAura::NonClientHitTest( |
- const gfx::Point& point) { |
- return HTNOWHERE; |
-} |
- |
-void AppNonClientFrameViewAura::GetWindowMask(const gfx::Size& size, |
- gfx::Path* window_mask) { |
-} |
- |
-void AppNonClientFrameViewAura::ResetWindowControls() { |
-} |
- |
-void AppNonClientFrameViewAura::UpdateWindowIcon() { |
-} |
- |
-void AppNonClientFrameViewAura::UpdateWindowTitle() { |
-} |
- |
-gfx::Rect AppNonClientFrameViewAura::GetBoundsForTabStrip( |
- views::View* tabstrip) const { |
- return gfx::Rect(); |
-} |
- |
-BrowserNonClientFrameView::TabStripInsets |
-AppNonClientFrameViewAura::GetTabStripInsets(bool restored) const { |
- return TabStripInsets(); |
-} |
- |
-int AppNonClientFrameViewAura::GetThemeBackgroundXInset() const { |
- return 0; |
-} |
- |
-void AppNonClientFrameViewAura::UpdateThrobber(bool running) { |
-} |
- |
-std::string AppNonClientFrameViewAura::GetClassName() const { |
- return kViewClassName; |
-} |
- |
-void AppNonClientFrameViewAura::OnBoundsChanged( |
- const gfx::Rect& previous_bounds) { |
- if (control_widget_) |
- control_widget_->GetNativeView()->SetBounds(GetControlBounds()); |
-} |
- |
-gfx::Rect AppNonClientFrameViewAura::GetControlBounds() const { |
- if (!control_view_) |
- return gfx::Rect(); |
- gfx::Size preferred = control_view_->GetPreferredSize(); |
- return gfx::Rect( |
- width() - preferred.width(), 0, |
- preferred.width(), preferred.height()); |
-} |
- |
-void AppNonClientFrameViewAura::CloseControlWidget() { |
- if (control_widget_) { |
- control_widget_->Close(); |
- control_widget_ = NULL; |
- } |
-} |