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

Side by Side Diff: chrome/browser/ui/views/frame/browser_view.cc

Issue 14348011: Add a unit test for BrowserViewLayout (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/frame/browser_view.h" 5 #include "chrome/browser/ui/views/frame/browser_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 } 421 }
422 } 422 }
423 423
424 private: 424 private:
425 DISALLOW_COPY_AND_ASSIGN(ResizeCorner); 425 DISALLOW_COPY_AND_ASSIGN(ResizeCorner);
426 }; 426 };
427 427
428 /////////////////////////////////////////////////////////////////////////////// 428 ///////////////////////////////////////////////////////////////////////////////
429 // BrowserView, public: 429 // BrowserView, public:
430 430
431 BrowserView::BrowserView(Browser* browser) 431 BrowserView::BrowserView()
432 : views::ClientView(NULL, NULL), 432 : views::ClientView(NULL, NULL),
433 last_focused_view_storage_id_( 433 last_focused_view_storage_id_(
434 views::ViewStorage::GetInstance()->CreateStorageID()), 434 views::ViewStorage::GetInstance()->CreateStorageID()),
435 frame_(NULL), 435 frame_(NULL),
436 browser_(browser),
437 top_container_(NULL), 436 top_container_(NULL),
438 tabstrip_(NULL), 437 tabstrip_(NULL),
439 toolbar_(NULL), 438 toolbar_(NULL),
440 window_switcher_button_(NULL), 439 window_switcher_button_(NULL),
441 infobar_container_(NULL), 440 infobar_container_(NULL),
442 contents_web_view_(NULL), 441 contents_web_view_(NULL),
443 devtools_container_(NULL), 442 devtools_container_(NULL),
444 contents_container_(NULL), 443 contents_container_(NULL),
445 contents_split_(NULL), 444 contents_split_(NULL),
446 devtools_dock_side_(DEVTOOLS_DOCK_SIDE_BOTTOM), 445 devtools_dock_side_(DEVTOOLS_DOCK_SIDE_BOTTOM),
447 devtools_window_(NULL), 446 devtools_window_(NULL),
448 initialized_(false), 447 initialized_(false),
449 ignore_layout_(true), 448 ignore_layout_(true),
450 #if defined(OS_WIN) && !defined(USE_AURA) 449 #if defined(OS_WIN) && !defined(USE_AURA)
451 hung_window_detector_(&hung_plugin_action_), 450 hung_window_detector_(&hung_plugin_action_),
452 ticker_(0), 451 ticker_(0),
453 #endif 452 #endif
454 force_location_bar_focus_(false), 453 force_location_bar_focus_(false),
455 immersive_mode_controller_(chrome::CreateImmersiveModeController()), 454 immersive_mode_controller_(chrome::CreateImmersiveModeController()),
456 ALLOW_THIS_IN_INITIALIZER_LIST(color_change_listener_(this)), 455 ALLOW_THIS_IN_INITIALIZER_LIST(color_change_listener_(this)),
457 ALLOW_THIS_IN_INITIALIZER_LIST(activate_modal_dialog_factory_(this)) { 456 ALLOW_THIS_IN_INITIALIZER_LIST(activate_modal_dialog_factory_(this)) {
458 browser_->tab_strip_model()->AddObserver(this);
459 } 457 }
460 458
461 BrowserView::~BrowserView() { 459 BrowserView::~BrowserView() {
462 #if defined(USE_ASH) 460 #if defined(USE_ASH)
463 // Destroy BrowserLauncherItemController early on as it listens to the 461 // Destroy BrowserLauncherItemController early on as it listens to the
464 // TabstripModel, which is destroyed by the browser. 462 // TabstripModel, which is destroyed by the browser.
465 launcher_item_controller_.reset(); 463 launcher_item_controller_.reset();
466 #endif 464 #endif
467 465
468 // Immersive mode may need to reparent views before they are removed/deleted. 466 // Immersive mode may need to reparent views before they are removed/deleted.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 501
504 // It is possible that we were forced-closed by the native view system and 502 // It is possible that we were forced-closed by the native view system and
505 // that tabs remain in the browser. Close any such remaining tabs. 503 // that tabs remain in the browser. Close any such remaining tabs.
506 while (browser_->tab_strip_model()->count()) 504 while (browser_->tab_strip_model()->count())
507 delete browser_->tab_strip_model()->GetWebContentsAt(0); 505 delete browser_->tab_strip_model()->GetWebContentsAt(0);
508 506
509 // Explicitly set browser_ to NULL. 507 // Explicitly set browser_ to NULL.
510 browser_.reset(); 508 browser_.reset();
511 } 509 }
512 510
511 void BrowserView::Init(Browser* browser) {
512 browser_.reset(browser);
513 browser_->tab_strip_model()->AddObserver(this);
514 }
515
513 // static 516 // static
514 BrowserView* BrowserView::GetBrowserViewForNativeWindow( 517 BrowserView* BrowserView::GetBrowserViewForNativeWindow(
515 gfx::NativeWindow window) { 518 gfx::NativeWindow window) {
516 views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window); 519 views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
517 return widget ? 520 return widget ?
518 reinterpret_cast<BrowserView*>(widget->GetNativeWindowProperty( 521 reinterpret_cast<BrowserView*>(widget->GetNativeWindowProperty(
519 kBrowserViewKey)) : NULL; 522 kBrowserViewKey)) : NULL;
520 } 523 }
521 524
522 // static 525 // static
(...skipping 1393 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 child->Paint(canvas); 1919 child->Paint(canvas);
1917 } 1920 }
1918 1921
1919 infobar_container_->Paint(canvas); 1922 infobar_container_->Paint(canvas);
1920 } 1923 }
1921 1924
1922 void BrowserView::ViewHierarchyChanged(bool is_add, 1925 void BrowserView::ViewHierarchyChanged(bool is_add,
1923 views::View* parent, 1926 views::View* parent,
1924 views::View* child) { 1927 views::View* child) {
1925 if (!initialized_ && is_add && child == this && GetWidget()) { 1928 if (!initialized_ && is_add && child == this && GetWidget()) {
1926 Init(); 1929 InitViews();
1927 initialized_ = true; 1930 initialized_ = true;
1928 } 1931 }
1929 } 1932 }
1930 1933
1931 void BrowserView::ChildPreferredSizeChanged(View* child) { 1934 void BrowserView::ChildPreferredSizeChanged(View* child) {
1932 Layout(); 1935 Layout();
1933 } 1936 }
1934 1937
1935 void BrowserView::GetAccessibleState(ui::AccessibleViewState* state) { 1938 void BrowserView::GetAccessibleState(ui::AccessibleViewState* state) {
1936 state->role = ui::AccessibilityTypes::ROLE_CLIENT; 1939 state->role = ui::AccessibilityTypes::ROLE_CLIENT;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2008 sender->child_at(i)->InvalidateLayout(); 2011 sender->child_at(i)->InvalidateLayout();
2009 SchedulePaint(); 2012 SchedulePaint();
2010 Layout(); 2013 Layout();
2011 return false; 2014 return false;
2012 } 2015 }
2013 2016
2014 void BrowserView::OnSysColorChange() { 2017 void BrowserView::OnSysColorChange() {
2015 chrome::MaybeShowInvertBubbleView(browser_.get(), contents_container_); 2018 chrome::MaybeShowInvertBubbleView(browser_.get(), contents_container_);
2016 } 2019 }
2017 2020
2018 void BrowserView::Init() { 2021 void BrowserView::InitViews() {
2019 GetWidget()->AddObserver(this); 2022 GetWidget()->AddObserver(this);
2020 2023
2021 SetLayoutManager(new BrowserViewLayout); 2024 SetLayoutManager(new BrowserViewLayout(browser()));
2022 // Stow a pointer to this object onto the window handle so that we can get at 2025 // Stow a pointer to this object onto the window handle so that we can get at
2023 // it later when all we have is a native view. 2026 // it later when all we have is a native view.
2024 GetWidget()->SetNativeWindowProperty(kBrowserViewKey, this); 2027 GetWidget()->SetNativeWindowProperty(kBrowserViewKey, this);
2025 2028
2026 // Stow a pointer to the browser's profile onto the window handle so that we 2029 // Stow a pointer to the browser's profile onto the window handle so that we
2027 // can get it later when all we have is a native view. 2030 // can get it later when all we have is a native view.
2028 GetWidget()->SetNativeWindowProperty(Profile::kProfileKey, 2031 GetWidget()->SetNativeWindowProperty(Profile::kProfileKey,
2029 browser_->profile()); 2032 browser_->profile());
2030 2033
2031 // Initialize after |this| has a Widget and native window. 2034 // Initialize after |this| has a Widget and native window.
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after
2604 launcher_item_controller_.reset( 2607 launcher_item_controller_.reset(
2605 BrowserLauncherItemController::Create(browser_.get())); 2608 BrowserLauncherItemController::Create(browser_.get()));
2606 } 2609 }
2607 #endif // defined(USE_ASH) 2610 #endif // defined(USE_ASH)
2608 } 2611 }
2609 2612
2610 // static 2613 // static
2611 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) { 2614 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) {
2612 // Create the view and the frame. The frame will attach itself via the view 2615 // Create the view and the frame. The frame will attach itself via the view
2613 // so we don't need to do anything with the pointer. 2616 // so we don't need to do anything with the pointer.
2614 BrowserView* view = new BrowserView(browser); 2617 BrowserView* view = new BrowserView();
2618 view->Init(browser);
2615 (new BrowserFrame(view))->InitBrowserFrame(); 2619 (new BrowserFrame(view))->InitBrowserFrame();
2616 view->GetWidget()->non_client_view()->SetAccessibleName( 2620 view->GetWidget()->non_client_view()->SetAccessibleName(
2617 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)); 2621 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME));
2618 return view; 2622 return view;
2619 } 2623 }
2620 2624
2621 void BrowserView::ShowAvatarBubble(WebContents* web_contents, 2625 void BrowserView::ShowAvatarBubble(WebContents* web_contents,
2622 const gfx::Rect& rect) { 2626 const gfx::Rect& rect) {
2623 gfx::Point origin(rect.origin()); 2627 gfx::Point origin(rect.origin());
2624 views::View::ConvertPointToScreen(GetTabContentsContainerView(), &origin); 2628 views::View::ConvertPointToScreen(GetTabContentsContainerView(), &origin);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2728 2732
2729 Browser* modal_browser = 2733 Browser* modal_browser =
2730 chrome::FindBrowserWithWebContents(active_dialog->web_contents()); 2734 chrome::FindBrowserWithWebContents(active_dialog->web_contents());
2731 if (modal_browser && (browser_ != modal_browser)) { 2735 if (modal_browser && (browser_ != modal_browser)) {
2732 modal_browser->window()->FlashFrame(true); 2736 modal_browser->window()->FlashFrame(true);
2733 modal_browser->window()->Activate(); 2737 modal_browser->window()->Activate();
2734 } 2738 }
2735 2739
2736 AppModalDialogQueue::GetInstance()->ActivateModalDialog(); 2740 AppModalDialogQueue::GetInstance()->ActivateModalDialog();
2737 } 2741 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/browser/ui/views/frame/browser_view_layout.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698