- // 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(
- 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;