| Index: chrome/browser/ui/views/frame/browser_view.cc
|
| diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
|
| index 8c09f98eca3ae2e39a0a10d38c2a07ce850bf467..67f2c9fb2205465b9190d24d528e2bcc940f3eae 100644
|
| --- a/chrome/browser/ui/views/frame/browser_view.cc
|
| +++ b/chrome/browser/ui/views/frame/browser_view.cc
|
| @@ -69,6 +69,7 @@
|
| #include "chrome/browser/ui/views/frame/browser_view_layout.h"
|
| #include "chrome/browser/ui/views/frame/browser_view_layout_delegate.h"
|
| #include "chrome/browser/ui/views/frame/contents_container.h"
|
| +#include "chrome/browser/ui/views/frame/devtools_container.h"
|
| #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
|
| #include "chrome/browser/ui/views/frame/top_container_view.h"
|
| #include "chrome/browser/ui/views/fullscreen_exit_bubble_views.h"
|
| @@ -400,8 +401,6 @@ BrowserView::BrowserView()
|
| contents_web_view_(NULL),
|
| devtools_container_(NULL),
|
| contents_container_(NULL),
|
| - contents_split_(NULL),
|
| - devtools_dock_side_(DEVTOOLS_DOCK_SIDE_BOTTOM),
|
| devtools_window_(NULL),
|
| initialized_(false),
|
| in_process_fullscreen_(false),
|
| @@ -493,7 +492,7 @@ BrowserView* BrowserView::GetBrowserViewForBrowser(const Browser* browser) {
|
| }
|
|
|
| void BrowserView::InitStatusBubble() {
|
| - status_bubble_.reset(new StatusBubbleViews(contents_container_));
|
| + status_bubble_.reset(new StatusBubbleViews(contents_web_view_));
|
| }
|
|
|
| gfx::Rect BrowserView::GetToolbarBounds() const {
|
| @@ -1008,7 +1007,7 @@ void BrowserView::ToolbarSizeChanged(bool is_animating) {
|
| // wrapping it will do it.
|
| if ((call_state == NORMAL) && !is_animating) {
|
| contents_web_view_->InvalidateLayout();
|
| - contents_split_->Layout();
|
| + contents_container_->Layout();
|
| }
|
| }
|
|
|
| @@ -1273,7 +1272,7 @@ void BrowserView::WebContentsFocused(WebContents* contents) {
|
| if (contents_web_view_->GetWebContents() == contents)
|
| contents_web_view_->OnWebContentsFocused(contents);
|
| else
|
| - devtools_container_->OnWebContentsFocused(contents);
|
| + devtools_web_view_->OnWebContentsFocused(contents);
|
| }
|
|
|
| void BrowserView::ShowWebsiteSettings(Profile* profile,
|
| @@ -1735,8 +1734,8 @@ void BrowserView::GetAccessiblePanes(std::vector<views::View*>* panes) {
|
| if (download_shelf_.get())
|
| panes->push_back(download_shelf_.get());
|
| panes->push_back(GetTabContentsContainerView());
|
| - if (devtools_container_->visible())
|
| - panes->push_back(devtools_container_);
|
| + if (devtools_web_view_->visible())
|
| + panes->push_back(devtools_web_view_);
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -1936,29 +1935,18 @@ void BrowserView::InitViews() {
|
| contents_web_view_->SetEmbedFullscreenWidgetMode(
|
| implicit_cast<content::WebContentsDelegate*>(browser_.get())->
|
| EmbedsFullscreenWidget());
|
| - contents_container_ = new ContentsContainer(contents_web_view_);
|
|
|
| - SkColor bg_color = GetWidget()->GetThemeProvider()->
|
| - GetColor(ThemeProperties::COLOR_TOOLBAR);
|
| + devtools_web_view_ = new views::WebView(browser_->profile());
|
| + devtools_web_view_->set_id(VIEW_ID_DEV_TOOLS_DOCKED);
|
| + devtools_web_view_->SetVisible(false);
|
|
|
| - devtools_container_ = new views::WebView(browser_->profile());
|
| - devtools_container_->set_id(VIEW_ID_DEV_TOOLS_DOCKED);
|
| - devtools_container_->SetVisible(false);
|
| + devtools_container_ = new DevToolsContainer(
|
| + contents_web_view_, devtools_web_view_);
|
|
|
| + contents_container_ = new ContentsContainer(devtools_container_);
|
| views::View* contents_container_view = contents_container_;
|
| -
|
| - contents_split_ = new views::SingleSplitView(
|
| - contents_container_view,
|
| - devtools_container_,
|
| - views::SingleSplitView::VERTICAL_SPLIT,
|
| - this);
|
| - contents_split_->set_id(VIEW_ID_CONTENTS_SPLIT);
|
| - contents_split_->SetAccessibleName(
|
| - l10n_util::GetStringUTF16(IDS_ACCNAME_WEB_CONTENTS));
|
| - contents_split_->set_background(
|
| - views::Background::CreateSolidBackground(bg_color));
|
| - AddChildView(contents_split_);
|
| - set_contents_view(contents_split_);
|
| + AddChildView(contents_container_view);
|
| + set_contents_view(contents_container_view);
|
|
|
| InitStatusBubble();
|
|
|
| @@ -1997,7 +1985,6 @@ void BrowserView::InitViews() {
|
| tabstrip_,
|
| toolbar_,
|
| infobar_container_,
|
| - contents_split_,
|
| contents_container_,
|
| immersive_mode_controller_.get());
|
| SetLayoutManager(browser_view_layout);
|
| @@ -2138,98 +2125,40 @@ bool BrowserView::MaybeShowInfoBar(WebContents* contents) {
|
| void BrowserView::UpdateDevToolsForContents(WebContents* web_contents) {
|
| DevToolsWindow* new_devtools_window = web_contents ?
|
| DevToolsWindow::GetDockedInstanceForInspectedTab(web_contents) : NULL;
|
| - // Fast return in case of the same window having same orientation.
|
| - if (devtools_window_ == new_devtools_window) {
|
| - if (!new_devtools_window ||
|
| - (new_devtools_window->dock_side() == devtools_dock_side_)) {
|
| - return;
|
| - }
|
| - }
|
|
|
| // Replace tab contents.
|
| if (devtools_window_ != new_devtools_window) {
|
| - devtools_container_->SetWebContents(
|
| + devtools_web_view_->SetWebContents(
|
| new_devtools_window ? new_devtools_window->web_contents() : NULL);
|
| }
|
|
|
| - // Store last used position.
|
| - if (devtools_window_) {
|
| - int split_size = contents_split_->GetDividerSize();
|
| - if (devtools_dock_side_ == DEVTOOLS_DOCK_SIDE_RIGHT) {
|
| - devtools_window_->SetWidth(contents_split_->width() -
|
| - split_size - contents_split_->divider_offset());
|
| - } else if (devtools_dock_side_ == DEVTOOLS_DOCK_SIDE_BOTTOM) {
|
| - devtools_window_->SetHeight(contents_split_->height() -
|
| - split_size - contents_split_->divider_offset());
|
| - }
|
| - }
|
| -
|
| - // Show / hide container if necessary. Changing dock orientation is
|
| - // hide + show.
|
| - bool should_hide = devtools_window_ && (!new_devtools_window ||
|
| - devtools_dock_side_ != new_devtools_window->dock_side());
|
| - bool should_show = new_devtools_window && (!devtools_window_ || should_hide);
|
| -
|
| - if (should_hide)
|
| - HideDevToolsContainer();
|
| -
|
| - devtools_window_ = new_devtools_window;
|
| -
|
| - if (should_show) {
|
| - devtools_dock_side_ = new_devtools_window->dock_side();
|
| - ShowDevToolsContainer();
|
| - } else if (new_devtools_window) {
|
| - UpdateDevToolsSplitPosition();
|
| - contents_split_->Layout();
|
| - }
|
| -}
|
| -
|
| -void BrowserView::ShowDevToolsContainer() {
|
| - if (!devtools_focus_tracker_.get()) {
|
| + if (!devtools_window_ && new_devtools_window &&
|
| + !devtools_focus_tracker_.get()) {
|
| // Install devtools focus tracker when dev tools window is shown for the
|
| // first time.
|
| devtools_focus_tracker_.reset(
|
| - new views::ExternalFocusTracker(devtools_container_,
|
| + new views::ExternalFocusTracker(devtools_web_view_,
|
| GetFocusManager()));
|
| }
|
|
|
| - gfx::Size min_devtools_size(devtools_window_->GetMinimumWidth(),
|
| - devtools_window_->GetMinimumHeight());
|
| - devtools_container_->SetPreferredSize(min_devtools_size);
|
| -
|
| - devtools_container_->SetVisible(true);
|
| - devtools_dock_side_ = devtools_window_->dock_side();
|
| - bool dock_to_right = devtools_dock_side_ == DEVTOOLS_DOCK_SIDE_RIGHT;
|
| - contents_split_->set_orientation(
|
| - dock_to_right ? views::SingleSplitView::HORIZONTAL_SPLIT
|
| - : views::SingleSplitView::VERTICAL_SPLIT);
|
| - UpdateDevToolsSplitPosition();
|
| - contents_split_->InvalidateLayout();
|
| - Layout();
|
| -}
|
| -
|
| -void BrowserView::HideDevToolsContainer() {
|
| // Restore focus to the last focused view when hiding devtools window.
|
| - devtools_focus_tracker_->FocusLastFocusedExternalView();
|
| - devtools_container_->SetVisible(false);
|
| - contents_split_->InvalidateLayout();
|
| - Layout();
|
| -}
|
| + if (devtools_window_ && !new_devtools_window &&
|
| + devtools_focus_tracker_.get()) {
|
| + devtools_focus_tracker_->FocusLastFocusedExternalView();
|
| + devtools_focus_tracker_.reset();
|
| + }
|
|
|
| -void BrowserView::UpdateDevToolsSplitPosition() {
|
| - contents_split_->set_resize_disabled(
|
| - devtools_window_->dock_side() == DEVTOOLS_DOCK_SIDE_MINIMIZED);
|
| - int split_size = contents_split_->GetDividerSize();
|
| - if (devtools_window_->dock_side() == DEVTOOLS_DOCK_SIDE_RIGHT) {
|
| - int split_offset = contents_split_->width() - split_size -
|
| - devtools_window_->GetWidth(contents_split_->width());
|
| - contents_split_->set_divider_offset(split_offset);
|
| + devtools_window_ = new_devtools_window;
|
| + if (devtools_window_) {
|
| + devtools_web_view_->SetPreferredSize(devtools_window_->GetMinimumSize());
|
| + devtools_web_view_->SetVisible(true);
|
| + devtools_container_->SetContentsViewOffsets(
|
| + devtools_window_->GetTopLeftContentsOffset(),
|
| + devtools_window_->GetBottomRightContentsOffset());
|
| } else {
|
| - int height = devtools_window_->dock_side() == DEVTOOLS_DOCK_SIDE_MINIMIZED ?
|
| - devtools_window_->GetMinimizedHeight() :
|
| - devtools_window_->GetHeight(contents_split_->height());
|
| - int split_offset = contents_split_->height() - split_size - height;
|
| - contents_split_->set_divider_offset(split_offset);
|
| + devtools_web_view_->SetVisible(false);
|
| + devtools_container_->SetContentsViewOffsets(
|
| + gfx::Size(), gfx::Size());
|
| }
|
| }
|
|
|
|
|