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

Unified Diff: chrome/browser/chromeos/chromeos_browser_extenders.cc

Issue 341044: Move chromeos code to namespace chromeos. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/chromeos_browser_extenders.cc
===================================================================
--- chrome/browser/chromeos/chromeos_browser_extenders.cc (revision 30488)
+++ chrome/browser/chromeos/chromeos_browser_extenders.cc (working copy)
@@ -1,338 +0,0 @@
-// Copyright (c) 2009 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 <algorithm>
-
-#include "app/theme_provider.h"
-#include "chrome/app/chrome_dll_resource.h"
-#include "chrome/browser/chromeos/compact_location_bar.h"
-#include "chrome/browser/chromeos/compact_navigation_bar.h"
-#include "chrome/browser/chromeos/main_menu.h"
-#include "chrome/browser/chromeos/status_area_view.h"
-#include "chrome/browser/chromeos/panel_controller.h"
-#include "chrome/browser/views/frame/browser_extender.h"
-#include "chrome/browser/views/frame/browser_frame_gtk.h"
-#include "chrome/browser/views/frame/browser_view.h"
-#include "chrome/browser/views/tabs/tab_overview_types.h"
-#include "chrome/browser/views/tabs/tab_strip.h"
-#include "chrome/browser/views/tabs/tab_strip_wrapper.h"
-#include "chrome/browser/views/toolbar_view.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#include "views/controls/button/button.h"
-#include "views/controls/button/image_button.h"
-#include "views/controls/menu/simple_menu_model.h"
-#include "views/window/window.h"
-
-namespace {
-
-// NormalExtender adds ChromeOS specific controls and menus to a BrowserView
-// created with Browser::TYPE_NORMAL. This extender adds controls to
-// the title bar as follows:
-// ____ __ __
-// [MainMenu] / \ \ \ [StatusArea]
-//
-// and adds the system context menu to the remaining arae of the titlebar.
-//
-// For Browser::TYPE_POPUP type of BrowserView, see PopupExtender class below.
-class NormalExtender : public BrowserExtender,
- public views::ButtonListener,
- public views::ContextMenuController {
- public:
- explicit NormalExtender(BrowserView* browser_view)
- : BrowserExtender(browser_view),
- main_menu_(NULL),
- status_area_(NULL),
- compact_navigation_bar_(NULL),
- // CompactNavigationBar is disabled by default.
- // TODO(oshima): Get this info from preference.
- compact_navigation_bar_enabled_(false) {
- }
- virtual ~NormalExtender() {}
-
- protected:
- // BrowserExtender overrides.
- virtual void Init() {
- main_menu_ = new views::ImageButton(this);
- ThemeProvider* theme_provider =
- browser_view()->frame()->GetThemeProviderForFrame();
- SkBitmap* image = theme_provider->GetBitmapNamed(IDR_MAIN_MENU_BUTTON);
- main_menu_->SetImage(views::CustomButton::BS_NORMAL, image);
- main_menu_->SetImage(views::CustomButton::BS_HOT, image);
- main_menu_->SetImage(views::CustomButton::BS_PUSHED, image);
- browser_view()->AddChildView(main_menu_);
-
- compact_location_bar_.reset(new CompactLocationBar(browser_view()));
- compact_navigation_bar_ =
- new CompactNavigationBar(browser_view()->browser());
- browser_view()->AddChildView(compact_navigation_bar_);
- compact_navigation_bar_->Init();
- status_area_ = new StatusAreaView(
- browser_view()->browser(),
- browser_view()->GetWindow()->GetNativeWindow());
- browser_view()->AddChildView(status_area_);
- status_area_->Init();
-
- InitSystemMenu();
- MainMenu::ScheduleCreation();
-
- // The ContextMenuController has to be set to a NonClientView but
- // not to a NonClientFrameView because a TabStrip is not a child of
- // a NonClientFrameView even though visually a TabStrip is over a
- // NonClientFrameView.
- BrowserFrameGtk* gtk_frame =
- static_cast<BrowserFrameGtk*>(browser_view()->frame());
- gtk_frame->GetNonClientView()->SetContextMenuController(this);
- }
-
- virtual gfx::Rect Layout(const gfx::Rect& bounds) {
- // Skip if there is no space to layout, or if the browser is in
- // fullscreen mode.
- if (bounds.IsEmpty() || browser_view()->IsFullscreen()) {
- main_menu_->SetVisible(false);
- compact_navigation_bar_->SetVisible(false);
- status_area_->SetVisible(false);
- return bounds;
- } else {
- main_menu_->SetVisible(true);
- compact_navigation_bar_->SetVisible(compact_navigation_bar_enabled_);
- status_area_->SetVisible(true);
- }
-
- if (compact_navigation_bar_->IsVisible()) {
- // Update the size and location of the compact location bar.
- compact_location_bar_->UpdateBounds(
- browser_view()->tabstrip()->AsTabStrip()->GetSelectedTab());
- }
-
- // Layout main menu before tab strip.
- gfx::Size main_menu_size = main_menu_->GetPreferredSize();
- main_menu_->SetBounds(bounds.x(), bounds.y(),
- main_menu_size.width(), bounds.height());
-
- // Layout status area after tab strip.
- gfx::Size status_size = status_area_->GetPreferredSize();
- status_area_->SetBounds(bounds.x() + bounds.width() - status_size.width(),
- bounds.y(), status_size.width(),
- status_size.height());
- int curx = bounds.x() + main_menu_size.width();
- int width = bounds.width() - main_menu_size.width() - status_size.width();
-
- if (compact_navigation_bar_->IsVisible()) {
- gfx::Size cnb_bounds = compact_navigation_bar_->GetPreferredSize();
- compact_navigation_bar_->SetBounds(curx, bounds.y(),
- cnb_bounds.width(), bounds.height());
- curx += cnb_bounds.width();
- width -= cnb_bounds.width();
- }
- width = std::max(0, width); // In case there is no space left.
- return gfx::Rect(curx, bounds.y(), width, bounds.height());
- }
-
- virtual bool NonClientHitTest(const gfx::Point& point) {
- gfx::Point point_in_main_menu_coords(point);
- views::View::ConvertPointToView(browser_view(), main_menu_,
- &point_in_main_menu_coords);
- if (main_menu_->HitTest(point_in_main_menu_coords))
- return true;
-
- gfx::Point point_in_status_area_coords(point);
- views::View::ConvertPointToView(browser_view(), status_area_,
- &point_in_status_area_coords);
- if (status_area_->HitTest(point_in_status_area_coords))
- return true;
-
- if (compact_navigation_bar_->IsVisible()) {
- gfx::Point point_in_cnb_coords(point);
- views::View::ConvertPointToView(browser_view(),
- compact_navigation_bar_,
- &point_in_cnb_coords);
- return compact_navigation_bar_->HitTest(point_in_cnb_coords);
- }
- return false;
- }
-
- virtual void UpdateTitleBar() {}
-
- virtual void Show() {
- TabOverviewTypes::instance()->SetWindowType(
- GTK_WIDGET(GetBrowserWindow()->GetNativeWindow()),
- TabOverviewTypes::WINDOW_TYPE_CHROME_TOPLEVEL,
- NULL);
- }
-
- virtual void Close() {}
-
- virtual void ActivationChanged() {}
-
- virtual bool ShouldForceHideToolbar() {
- return compact_navigation_bar_enabled_;
- }
-
- virtual void ToggleCompactNavigationBar() {
- compact_navigation_bar_enabled_ = !compact_navigation_bar_enabled_;
- }
-
- virtual void OnMouseEnteredToTab(Tab* tab) {
- ShowCompactLocationBarUnderSelectedTab();
- }
-
- virtual void OnMouseMovedOnTab(Tab* tab) {
- ShowCompactLocationBarUnderSelectedTab();
- }
-
- virtual void OnMouseExitedFromTab(Tab* tab) {
- compact_location_bar_->StartPopupTimer();
- }
-
- private:
- // Shows the compact location bar under the selected tab.
- void ShowCompactLocationBarUnderSelectedTab() {
- if (!compact_navigation_bar_enabled_)
- return;
- compact_location_bar_->Update(
- browser_view()->tabstrip()->AsTabStrip()->GetSelectedTab(),
- browser_view()->browser()->GetSelectedTabContents());
- }
-
- // Creates system menu.
- void InitSystemMenu() {
- system_menu_contents_.reset(new views::SimpleMenuModel(browser_view()));
- system_menu_contents_->AddItemWithStringId(IDC_RESTORE_TAB,
- IDS_RESTORE_TAB);
- system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB);
- system_menu_contents_->AddSeparator();
- system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER,
- IDS_TASK_MANAGER);
- system_menu_menu_.reset(new views::Menu2(system_menu_contents_.get()));
- }
-
- // views::ButtonListener overrides.
- virtual void ButtonPressed(views::Button* sender, const views::Event& event) {
- MainMenu::Show(browser_view()->browser());
- }
-
- // views::ContextMenuController overrides.
- virtual void ShowContextMenu(views::View* source,
- int x,
- int y,
- bool is_mouse_gesture) {
- system_menu_menu_->RunMenuAt(gfx::Point(x, y), views::Menu2::ALIGN_TOPLEFT);
- }
-
- // Main menu button.
- views::ImageButton* main_menu_;
-
- // Status Area view.
- StatusAreaView* status_area_;
-
- // System menus.
- scoped_ptr<views::SimpleMenuModel> system_menu_contents_;
- scoped_ptr<views::Menu2> system_menu_menu_;
-
- // CompactNavigationBar view.
- CompactNavigationBar* compact_navigation_bar_;
-
- // A toggle flag to show/hide the compact navigation bar.
- bool compact_navigation_bar_enabled_;
-
- // CompactLocationBar view.
- scoped_ptr<CompactLocationBar> compact_location_bar_;
-
- DISALLOW_COPY_AND_ASSIGN(NormalExtender);
-};
-
-// PopupExtender class creates dedicated title window for popup window.
-// The size and location of the created title window is controlled by
-// by window manager.
-class PopupExtender : public BrowserExtender {
- public:
- explicit PopupExtender(BrowserView* browser_view)
- : BrowserExtender(browser_view) {
- }
- virtual ~PopupExtender() {}
-
- private:
- // BrowserExtender overrides.
- virtual void Init() {
- // The visibility of toolbar is controlled in
- // the BrowserView::IsToolbarVisible method.
-
- views::Window* window = GetBrowserWindow();
- gfx::NativeWindow native_window = window->GetNativeWindow();
- // The window manager needs the min size for popups.
- gfx::Rect bounds = window->GetBounds();
- gtk_widget_set_size_request(
- GTK_WIDGET(native_window), bounds.width(), bounds.height());
- // If we don't explicitly resize here there is a race condition between
- // the X Server and the window manager. Windows will appear with a default
- // size of 200x200 if this happens.
- gtk_window_resize(native_window, bounds.width(), bounds.height());
- }
-
- virtual gfx::Rect Layout(const gfx::Rect& bounds) {
- return bounds;
- }
-
- virtual bool NonClientHitTest(const gfx::Point& point) {
- return false;
- }
-
- virtual void Show() {
- panel_controller_.reset(new PanelController(browser_view()));
- }
-
- virtual void Close() {
- if (panel_controller_.get())
- panel_controller_->Close();
- }
-
- virtual void UpdateTitleBar() {
- if (panel_controller_.get())
- panel_controller_->UpdateTitleBar();
- }
-
- virtual void ActivationChanged() {
- if (panel_controller_.get()) {
- if (GetBrowserWindow()->IsActive())
- panel_controller_->OnFocusIn();
- else
- panel_controller_->OnFocusOut();
- }
- }
-
- virtual bool ShouldForceHideToolbar() {
- // Always hide toolbar for popups.
- return true;
- }
-
- virtual void ToggleCompactNavigationBar() {}
-
- virtual void OnMouseEnteredToTab(Tab* tab) {}
-
- virtual void OnMouseMovedOnTab(Tab* tab) {}
-
- virtual void OnMouseExitedFromTab(Tab* tab) {}
-
- // Controls interactions with the window manager for popup panels.
- scoped_ptr<PanelController> panel_controller_;
-
- DISALLOW_COPY_AND_ASSIGN(PopupExtender);
-};
-
-} // namespace
-
-////////////////////////////////////////////////////////////////////////////////
-// BrowserExtender, public:
-
-// static
-BrowserExtender* BrowserExtender::Create(BrowserView* browser_view) {
- BrowserExtender* extender;
- if (browser_view->browser()->type() & Browser::TYPE_POPUP)
- extender = new PopupExtender(browser_view);
- else
- extender = new NormalExtender(browser_view);
- extender->Init();
- return extender;
-}

Powered by Google App Engine
This is Rietveld 408576698