Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 140 #include "ui/views/controls/textfield/textfield.h" | 140 #include "ui/views/controls/textfield/textfield.h" |
| 141 #include "ui/views/controls/webview/webview.h" | 141 #include "ui/views/controls/webview/webview.h" |
| 142 #include "ui/views/focus/external_focus_tracker.h" | 142 #include "ui/views/focus/external_focus_tracker.h" |
| 143 #include "ui/views/focus/view_storage.h" | 143 #include "ui/views/focus/view_storage.h" |
| 144 #include "ui/views/layout/grid_layout.h" | 144 #include "ui/views/layout/grid_layout.h" |
| 145 #include "ui/views/widget/native_widget.h" | 145 #include "ui/views/widget/native_widget.h" |
| 146 #include "ui/views/widget/root_view.h" | 146 #include "ui/views/widget/root_view.h" |
| 147 #include "ui/views/widget/widget.h" | 147 #include "ui/views/widget/widget.h" |
| 148 #include "ui/views/window/dialog_delegate.h" | 148 #include "ui/views/window/dialog_delegate.h" |
| 149 | 149 |
| 150 #if !defined(OS_CHROMEOS) | 150 #if defined(OS_CHROMEOS) |
| 151 #include "chrome/browser/ui/ash/ash_util.h" | |
| 152 #else // defined(OS_CHROMEOS) | |
| 151 #include "chrome/browser/ui/views/profiles/profile_chooser_view.h" | 153 #include "chrome/browser/ui/views/profiles/profile_chooser_view.h" |
| 152 #endif | 154 #endif // !defined(OS_CHROMEOS) |
|
sky
2017/02/01 21:36:12
Conditional ifdefs are harder to read. Please star
Qiang(Joe) Xu
2017/02/01 21:54:23
Done.
| |
| 153 | |
| 154 #if defined(USE_ASH) | |
| 155 #include "chrome/browser/ui/ash/ash_util.h" | |
| 156 #endif | |
| 157 | 155 |
| 158 #if defined(USE_AURA) | 156 #if defined(USE_AURA) |
| 159 #include "ui/aura/client/window_parenting_client.h" | 157 #include "ui/aura/client/window_parenting_client.h" |
| 160 #include "ui/aura/window.h" | 158 #include "ui/aura/window.h" |
| 161 #include "ui/aura/window_tree_host.h" | 159 #include "ui/aura/window_tree_host.h" |
| 162 #endif | 160 #endif |
| 163 | 161 |
| 164 #if defined(OS_WIN) | 162 #if defined(OS_WIN) |
| 165 #include "base/win/windows_version.h" | 163 #include "base/win/windows_version.h" |
| 166 #include "chrome/browser/win/jumplist.h" | 164 #include "chrome/browser/win/jumplist.h" |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 519 // The background image starts tiling horizontally at the window left edge and | 517 // The background image starts tiling horizontally at the window left edge and |
| 520 // vertically at the top edge of the horizontal tab strip (or where it would | 518 // vertically at the top edge of the horizontal tab strip (or where it would |
| 521 // be). We expect our parent's origin to be the window origin. | 519 // be). We expect our parent's origin to be the window origin. |
| 522 gfx::Point window_point(point + GetMirroredPosition().OffsetFromOrigin()); | 520 gfx::Point window_point(point + GetMirroredPosition().OffsetFromOrigin()); |
| 523 window_point.Offset(frame_->GetThemeBackgroundXInset(), | 521 window_point.Offset(frame_->GetThemeBackgroundXInset(), |
| 524 -frame_->GetTopInset(false)); | 522 -frame_->GetTopInset(false)); |
| 525 return window_point; | 523 return window_point; |
| 526 } | 524 } |
| 527 | 525 |
| 528 bool BrowserView::IsTabStripVisible() const { | 526 bool BrowserView::IsTabStripVisible() const { |
| 529 if (immersive_mode_controller_->ShouldHideTopViews() && | |
| 530 immersive_mode_controller_->ShouldHideTabIndicators()) { | |
| 531 return false; | |
| 532 } | |
| 533 | |
| 534 // Return false if this window does not normally display a tabstrip. | 527 // Return false if this window does not normally display a tabstrip. |
| 535 if (!browser_->SupportsWindowFeature(Browser::FEATURE_TABSTRIP)) | 528 if (!browser_->SupportsWindowFeature(Browser::FEATURE_TABSTRIP)) |
| 536 return false; | 529 return false; |
| 537 | 530 |
| 538 // Return false if the tabstrip has not yet been created (by InitViews()), | 531 // Return false if the tabstrip has not yet been created (by InitViews()), |
| 539 // since callers may otherwise try to access it. Note that we can't just check | 532 // since callers may otherwise try to access it. Note that we can't just check |
| 540 // this alone, as the tabstrip is created unconditionally even for windows | 533 // this alone, as the tabstrip is created unconditionally even for windows |
| 541 // that won't display it. | 534 // that won't display it. |
| 542 return tabstrip_ != nullptr; | 535 return tabstrip_ != nullptr; |
| 543 } | 536 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 586 } | 579 } |
| 587 | 580 |
| 588 WebContents* BrowserView::GetActiveWebContents() const { | 581 WebContents* BrowserView::GetActiveWebContents() const { |
| 589 return browser_->tab_strip_model()->GetActiveWebContents(); | 582 return browser_->tab_strip_model()->GetActiveWebContents(); |
| 590 } | 583 } |
| 591 | 584 |
| 592 /////////////////////////////////////////////////////////////////////////////// | 585 /////////////////////////////////////////////////////////////////////////////// |
| 593 // BrowserView, BrowserWindow implementation: | 586 // BrowserView, BrowserWindow implementation: |
| 594 | 587 |
| 595 void BrowserView::Show() { | 588 void BrowserView::Show() { |
| 596 #if !defined(OS_WIN) && !defined(USE_ASH) | 589 #if !defined(OS_WIN) && !defined(OS_CHROMEOS) |
| 597 // The Browser associated with this browser window must become the active | 590 // The Browser associated with this browser window must become the active |
| 598 // browser at the time |Show()| is called. This is the natural behavior under | 591 // browser at the time |Show()| is called. This is the natural behavior under |
| 599 // Windows and Ash, but other platforms will not trigger | 592 // Windows and Ash, but other platforms will not trigger |
| 600 // OnWidgetActivationChanged() until we return to the runloop. Therefore any | 593 // OnWidgetActivationChanged() until we return to the runloop. Therefore any |
| 601 // calls to Browser::GetLastActive() will return the wrong result if we do not | 594 // calls to Browser::GetLastActive() will return the wrong result if we do not |
| 602 // explicitly set it here. | 595 // explicitly set it here. |
| 603 // A similar block also appears in BrowserWindowCocoa::Show(). | 596 // A similar block also appears in BrowserWindowCocoa::Show(). |
| 604 BrowserList::SetLastActive(browser()); | 597 BrowserList::SetLastActive(browser()); |
| 605 #endif | 598 #endif |
| 606 | 599 |
| (...skipping 1044 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1651 return window_title; | 1644 return window_title; |
| 1652 } | 1645 } |
| 1653 return base::string16(); | 1646 return base::string16(); |
| 1654 } | 1647 } |
| 1655 | 1648 |
| 1656 views::View* BrowserView::GetInitiallyFocusedView() { | 1649 views::View* BrowserView::GetInitiallyFocusedView() { |
| 1657 return nullptr; | 1650 return nullptr; |
| 1658 } | 1651 } |
| 1659 | 1652 |
| 1660 bool BrowserView::ShouldShowWindowTitle() const { | 1653 bool BrowserView::ShouldShowWindowTitle() const { |
| 1661 #if defined(USE_ASH) | 1654 #if defined(OS_CHROMEOS) |
| 1662 // For Ash only, trusted windows (apps and settings) do not show a title, | 1655 // For Ash only, trusted windows (apps and settings) do not show a title, |
|
sky
2017/02/01 21:36:12
Ash -> Chrome OS (I think I'm not sure what the ri
Qiang(Joe) Xu
2017/02/01 21:54:23
Done.
| |
| 1663 // crbug.com/119411. Child windows (i.e. popups) do show a title. | 1656 // crbug.com/119411. Child windows (i.e. popups) do show a title. |
| 1664 if (browser_->is_trusted_source()) | 1657 if (browser_->is_trusted_source()) |
| 1665 return false; | 1658 return false; |
| 1666 #endif // USE_ASH | 1659 #endif // OS_CHROMEOS |
| 1667 | 1660 |
| 1668 return browser_->SupportsWindowFeature(Browser::FEATURE_TITLEBAR); | 1661 return browser_->SupportsWindowFeature(Browser::FEATURE_TITLEBAR); |
| 1669 } | 1662 } |
| 1670 | 1663 |
| 1671 gfx::ImageSkia BrowserView::GetWindowAppIcon() { | 1664 gfx::ImageSkia BrowserView::GetWindowAppIcon() { |
| 1672 if (browser_->is_app()) { | 1665 if (browser_->is_app()) { |
| 1673 WebContents* contents = browser_->tab_strip_model()->GetActiveWebContents(); | 1666 WebContents* contents = browser_->tab_strip_model()->GetActiveWebContents(); |
| 1674 extensions::TabHelper* extensions_tab_helper = | 1667 extensions::TabHelper* extensions_tab_helper = |
| 1675 contents ? extensions::TabHelper::FromWebContents(contents) : nullptr; | 1668 contents ? extensions::TabHelper::FromWebContents(contents) : nullptr; |
| 1676 if (extensions_tab_helper && extensions_tab_helper->GetExtensionAppIcon()) | 1669 if (extensions_tab_helper && extensions_tab_helper->GetExtensionAppIcon()) |
| 1677 return gfx::ImageSkia::CreateFrom1xBitmap( | 1670 return gfx::ImageSkia::CreateFrom1xBitmap( |
| 1678 *extensions_tab_helper->GetExtensionAppIcon()); | 1671 *extensions_tab_helper->GetExtensionAppIcon()); |
| 1679 } | 1672 } |
| 1680 | 1673 |
| 1681 return GetWindowIcon(); | 1674 return GetWindowIcon(); |
| 1682 } | 1675 } |
| 1683 | 1676 |
| 1684 gfx::ImageSkia BrowserView::GetWindowIcon() { | 1677 gfx::ImageSkia BrowserView::GetWindowIcon() { |
| 1685 // Use the default icon for devtools. | 1678 // Use the default icon for devtools. |
| 1686 if (browser_->is_devtools()) | 1679 if (browser_->is_devtools()) |
| 1687 return gfx::ImageSkia(); | 1680 return gfx::ImageSkia(); |
| 1688 | 1681 |
| 1689 if (browser_->is_app() || browser_->is_type_popup()) | 1682 if (browser_->is_app() || browser_->is_type_popup()) |
| 1690 return browser_->GetCurrentPageIcon().AsImageSkia(); | 1683 return browser_->GetCurrentPageIcon().AsImageSkia(); |
| 1691 return gfx::ImageSkia(); | 1684 return gfx::ImageSkia(); |
| 1692 } | 1685 } |
| 1693 | 1686 |
| 1694 bool BrowserView::ShouldShowWindowIcon() const { | 1687 bool BrowserView::ShouldShowWindowIcon() const { |
| 1695 #if defined(USE_ASH) | 1688 #if defined(OS_CHROMEOS) |
| 1696 // For Ash only, trusted windows (apps and settings) do not show an icon, | 1689 // For Ash only, trusted windows (apps and settings) do not show an icon, |
| 1697 // crbug.com/119411. Child windows (i.e. popups) do show an icon. | 1690 // crbug.com/119411. Child windows (i.e. popups) do show an icon. |
| 1698 if (browser_->is_trusted_source()) | 1691 if (browser_->is_trusted_source()) |
| 1699 return false; | 1692 return false; |
| 1700 #endif // USE_ASH | 1693 #endif // OS_CHROMEOS |
| 1701 | 1694 |
| 1702 return browser_->SupportsWindowFeature(Browser::FEATURE_TITLEBAR); | 1695 return browser_->SupportsWindowFeature(Browser::FEATURE_TITLEBAR); |
| 1703 } | 1696 } |
| 1704 | 1697 |
| 1705 bool BrowserView::ExecuteWindowsCommand(int command_id) { | 1698 bool BrowserView::ExecuteWindowsCommand(int command_id) { |
| 1706 // This function handles WM_SYSCOMMAND, WM_APPCOMMAND, and WM_COMMAND. | 1699 // This function handles WM_SYSCOMMAND, WM_APPCOMMAND, and WM_COMMAND. |
| 1707 #if defined(OS_WIN) | 1700 #if defined(OS_WIN) |
| 1708 if (command_id == IDC_DEBUG_FRAME_TOGGLE) | 1701 if (command_id == IDC_DEBUG_FRAME_TOGGLE) |
| 1709 GetWidget()->DebugToggleFrameType(); | 1702 GetWidget()->DebugToggleFrameType(); |
| 1710 #endif | 1703 #endif |
| (...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2345 // order to let the layout occur. | 2338 // order to let the layout occur. |
| 2346 in_process_fullscreen_ = false; | 2339 in_process_fullscreen_ = false; |
| 2347 ToolbarSizeChanged(false); | 2340 ToolbarSizeChanged(false); |
| 2348 | 2341 |
| 2349 WebContents* contents = browser_->tab_strip_model()->GetActiveWebContents(); | 2342 WebContents* contents = browser_->tab_strip_model()->GetActiveWebContents(); |
| 2350 if (contents && PermissionRequestManager::FromWebContents(contents)) | 2343 if (contents && PermissionRequestManager::FromWebContents(contents)) |
| 2351 PermissionRequestManager::FromWebContents(contents)->UpdateAnchorPosition(); | 2344 PermissionRequestManager::FromWebContents(contents)->UpdateAnchorPosition(); |
| 2352 } | 2345 } |
| 2353 | 2346 |
| 2354 bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { | 2347 bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { |
| 2355 #if defined(USE_ASH) | 2348 #if defined(OS_CHROMEOS) |
| 2356 // Kiosk mode needs the whole screen. | 2349 // Kiosk mode needs the whole screen. |
| 2357 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) | 2350 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) |
| 2358 return false; | 2351 return false; |
| 2359 | 2352 |
| 2360 return url.is_empty(); | 2353 return url.is_empty(); |
| 2361 #else | 2354 #else |
| 2362 // No immersive except in Ash. | 2355 // No immersive except in Ash. |
| 2363 return false; | 2356 return false; |
| 2364 #endif // !USE_ASH | 2357 #endif |
| 2365 } | 2358 } |
| 2366 | 2359 |
| 2367 void BrowserView::LoadAccelerators() { | 2360 void BrowserView::LoadAccelerators() { |
| 2368 views::FocusManager* focus_manager = GetFocusManager(); | 2361 views::FocusManager* focus_manager = GetFocusManager(); |
| 2369 DCHECK(focus_manager); | 2362 DCHECK(focus_manager); |
| 2370 | 2363 |
| 2371 // Let's fill our own accelerator table. | 2364 // Let's fill our own accelerator table. |
| 2372 const bool is_app_mode = chrome::IsRunningInForcedAppMode(); | 2365 const bool is_app_mode = chrome::IsRunningInForcedAppMode(); |
| 2373 const std::vector<AcceleratorMapping> accelerator_list(GetAcceleratorList()); | 2366 const std::vector<AcceleratorMapping> accelerator_list(GetAcceleratorList()); |
| 2374 for (const auto& entry : accelerator_list) { | 2367 for (const auto& entry : accelerator_list) { |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2643 } | 2636 } |
| 2644 | 2637 |
| 2645 extensions::ActiveTabPermissionGranter* | 2638 extensions::ActiveTabPermissionGranter* |
| 2646 BrowserView::GetActiveTabPermissionGranter() { | 2639 BrowserView::GetActiveTabPermissionGranter() { |
| 2647 content::WebContents* web_contents = GetActiveWebContents(); | 2640 content::WebContents* web_contents = GetActiveWebContents(); |
| 2648 if (!web_contents) | 2641 if (!web_contents) |
| 2649 return nullptr; | 2642 return nullptr; |
| 2650 return extensions::TabHelper::FromWebContents(web_contents) | 2643 return extensions::TabHelper::FromWebContents(web_contents) |
| 2651 ->active_tab_permission_granter(); | 2644 ->active_tab_permission_granter(); |
| 2652 } | 2645 } |
| OLD | NEW |