| Index: ash/common/wm/workspace/workspace_window_resizer.cc | 
| diff --git a/ash/common/wm/workspace/workspace_window_resizer.cc b/ash/common/wm/workspace/workspace_window_resizer.cc | 
| index bee0bb465bbc43dc61e7894ec244b06f7b367fbd..1f42dd64304ed2b06db3937ee9826c939afec58c 100644 | 
| --- a/ash/common/wm/workspace/workspace_window_resizer.cc | 
| +++ b/ash/common/wm/workspace/workspace_window_resizer.cc | 
| @@ -9,11 +9,8 @@ | 
| #include <utility> | 
| #include <vector> | 
|  | 
| -#include "ash/common/ash_switches.h" | 
| #include "ash/common/metrics/user_metrics_action.h" | 
| #include "ash/common/wm/default_window_resizer.h" | 
| -#include "ash/common/wm/dock/docked_window_layout_manager.h" | 
| -#include "ash/common/wm/dock/docked_window_resizer.h" | 
| #include "ash/common/wm/panels/panel_window_resizer.h" | 
| #include "ash/common/wm/window_positioning_utils.h" | 
| #include "ash/common/wm/window_state.h" | 
| @@ -67,7 +64,7 @@ std::unique_ptr<WindowResizer> CreateWindowResizer( | 
| // It may be possible to refactor and eliminate chaining. | 
| std::unique_ptr<WindowResizer> window_resizer; | 
|  | 
| -  if (!window_state->IsNormalOrSnapped() && !window_state->IsDocked()) | 
| +  if (!window_state->IsNormalOrSnapped()) | 
| return std::unique_ptr<WindowResizer>(); | 
|  | 
| int bounds_change = | 
| @@ -80,7 +77,6 @@ std::unique_ptr<WindowResizer> CreateWindowResizer( | 
| window->GetParent() ? window->GetParent()->GetShellWindowId() : -1; | 
| if (window->GetParent() && | 
| (parent_shell_window_id == kShellWindowId_DefaultContainer || | 
| -       parent_shell_window_id == kShellWindowId_DockedContainer || | 
| parent_shell_window_id == kShellWindowId_PanelContainer)) { | 
| window_resizer.reset( | 
| WorkspaceWindowResizer::Create(window_state, std::vector<WmWindow*>())); | 
| @@ -89,15 +85,9 @@ std::unique_ptr<WindowResizer> CreateWindowResizer( | 
| } | 
| window_resizer = window->GetShell()->CreateDragWindowResizer( | 
| std::move(window_resizer), window_state); | 
| -  if (window->GetType() == ui::wm::WINDOW_TYPE_PANEL) | 
| +  if (window->GetType() == ui::wm::WINDOW_TYPE_PANEL) { | 
| window_resizer.reset( | 
| PanelWindowResizer::Create(window_resizer.release(), window_state)); | 
| -  if (window_resizer && window->GetParent() && !window->GetTransientParent() && | 
| -      (parent_shell_window_id == kShellWindowId_DefaultContainer || | 
| -       parent_shell_window_id == kShellWindowId_DockedContainer || | 
| -       parent_shell_window_id == kShellWindowId_PanelContainer)) { | 
| -    window_resizer.reset( | 
| -        DockedWindowResizer::Create(window_resizer.release(), window_state)); | 
| } | 
| return window_resizer; | 
| } | 
| @@ -389,7 +379,6 @@ void WorkspaceWindowResizer::Drag(const gfx::Point& location_in_parent, | 
| snap_type_ = SNAP_NONE; | 
| snap_phantom_window_controller_.reset(); | 
| edge_cycler_.reset(); | 
| -    SetDraggedWindowDocked(false); | 
| } | 
| } | 
|  | 
| @@ -415,18 +404,15 @@ void WorkspaceWindowResizer::CompleteDrag() { | 
| details().restore_bounds.IsEmpty() ? initial_bounds | 
| : details().restore_bounds); | 
| } | 
| -    if (!dock_layout_->is_dragged_window_docked()) { | 
| -      // TODO(oshima): Add event source type to WMEvent and move | 
| -      // metrics recording inside WindowState::OnWMEvent. | 
| -      const wm::WMEvent event(snap_type_ == SNAP_LEFT | 
| -                                  ? wm::WM_EVENT_SNAP_LEFT | 
| -                                  : wm::WM_EVENT_SNAP_RIGHT); | 
| -      window_state()->OnWMEvent(&event); | 
| -      shell_->RecordUserMetricsAction(snap_type_ == SNAP_LEFT | 
| -                                          ? UMA_DRAG_MAXIMIZE_LEFT | 
| -                                          : UMA_DRAG_MAXIMIZE_RIGHT); | 
| -      snapped = true; | 
| -    } | 
| +    // TODO(oshima): Add event source type to WMEvent and move | 
| +    // metrics recording inside WindowState::OnWMEvent. | 
| +    const wm::WMEvent event(snap_type_ == SNAP_LEFT ? wm::WM_EVENT_SNAP_LEFT | 
| +                                                    : wm::WM_EVENT_SNAP_RIGHT); | 
| +    window_state()->OnWMEvent(&event); | 
| +    shell_->RecordUserMetricsAction(snap_type_ == SNAP_LEFT | 
| +                                        ? UMA_DRAG_MAXIMIZE_LEFT | 
| +                                        : UMA_DRAG_MAXIMIZE_RIGHT); | 
| +    snapped = true; | 
| } | 
|  | 
| if (!snapped) { | 
| @@ -444,7 +430,7 @@ void WorkspaceWindowResizer::CompleteDrag() { | 
| window_state()->SaveCurrentBoundsForRestore(); | 
| window_state()->Restore(); | 
| } | 
| -    } else if (!dock_layout_->is_dragged_window_docked()) { | 
| +    } else { | 
| // The window was not snapped and is not snapped. This is a user | 
| // resize/drag and so the current bounds should be maintained, clearing | 
| // any prior restore bounds. When the window is docked the restore bound | 
| @@ -510,8 +496,6 @@ WorkspaceWindowResizer::WorkspaceWindowResizer( | 
| did_lock_cursor_ = true; | 
| } | 
|  | 
| -  dock_layout_ = DockedWindowLayoutManager::Get(GetTarget()); | 
| - | 
| // Only support attaching to the right/bottom. | 
| DCHECK(attached_windows_.empty() || (details().window_component == HTRIGHT || | 
| details().window_component == HTBOTTOM)); | 
| @@ -875,28 +859,13 @@ void WorkspaceWindowResizer::UpdateSnapPhantomWindow(const gfx::Point& location, | 
| if (snap_type_ == SNAP_NONE || snap_type_ != last_type) { | 
| snap_phantom_window_controller_.reset(); | 
| edge_cycler_.reset(); | 
| -    if (snap_type_ == SNAP_NONE) { | 
| -      SetDraggedWindowDocked(false); | 
| +    if (snap_type_ == SNAP_NONE) | 
| return; | 
| -    } | 
| } | 
|  | 
| DCHECK(snap_type_ == SNAP_LEFT || snap_type_ == SNAP_RIGHT); | 
| -  DockedAlignment desired_alignment = (snap_type_ == SNAP_LEFT) | 
| -                                          ? DOCKED_ALIGNMENT_LEFT | 
| -                                          : DOCKED_ALIGNMENT_RIGHT; | 
| -  const bool can_dock = | 
| -      ash::switches::DockedWindowsEnabled() && | 
| -      dock_layout_->CanDockWindow(GetTarget(), desired_alignment) && | 
| -      dock_layout_->GetAlignmentOfWindow(GetTarget()) != DOCKED_ALIGNMENT_NONE; | 
| -  if (!can_dock) { | 
| -    // If the window cannot be docked, undock the window. This may change the | 
| -    // workspace bounds and hence |snap_type_|. | 
| -    SetDraggedWindowDocked(false); | 
| -    snap_type_ = GetSnapType(location); | 
| -  } | 
| const bool can_snap = snap_type_ != SNAP_NONE && window_state()->CanSnap(); | 
| -  if (!can_snap && !can_dock) { | 
| +  if (!can_snap) { | 
| snap_type_ = SNAP_NONE; | 
| snap_phantom_window_controller_.reset(); | 
| edge_cycler_.reset(); | 
| @@ -914,23 +883,10 @@ void WorkspaceWindowResizer::UpdateSnapPhantomWindow(const gfx::Point& location, | 
| // Update phantom window with snapped or docked guide bounds. | 
| // Windows that cannot be snapped or are less wide than kMaxDockWidth can get | 
| // docked without going through a snapping sequence. | 
| -  gfx::Rect phantom_bounds; | 
| -  const bool should_dock = | 
| -      can_dock && (!can_snap || | 
| -                   GetTarget()->GetBounds().width() <= | 
| -                       DockedWindowLayoutManager::kMaxDockWidth || | 
| -                   edge_cycler_->use_second_mode() || | 
| -                   dock_layout_->is_dragged_window_docked()); | 
| -  if (should_dock) { | 
| -    SetDraggedWindowDocked(true); | 
| -    phantom_bounds = GetTarget()->GetParent()->ConvertRectFromScreen( | 
| -        dock_layout_->dragged_bounds()); | 
| -  } else { | 
| -    phantom_bounds = | 
| -        (snap_type_ == SNAP_LEFT) | 
| -            ? wm::GetDefaultLeftSnappedWindowBoundsInParent(GetTarget()) | 
| -            : wm::GetDefaultRightSnappedWindowBoundsInParent(GetTarget()); | 
| -  } | 
| +  gfx::Rect phantom_bounds = | 
| +      (snap_type_ == SNAP_LEFT) | 
| +          ? wm::GetDefaultLeftSnappedWindowBoundsInParent(GetTarget()) | 
| +          : wm::GetDefaultRightSnappedWindowBoundsInParent(GetTarget()); | 
|  | 
| if (!snap_phantom_window_controller_) { | 
| snap_phantom_window_controller_.reset( | 
| @@ -993,20 +949,6 @@ WorkspaceWindowResizer::SnapType WorkspaceWindowResizer::GetSnapType( | 
| return SNAP_NONE; | 
| } | 
|  | 
| -void WorkspaceWindowResizer::SetDraggedWindowDocked(bool should_dock) { | 
| -  if (should_dock) { | 
| -    if (!dock_layout_->is_dragged_window_docked()) { | 
| -      window_state()->set_bounds_changed_by_user(false); | 
| -      dock_layout_->DockDraggedWindow(GetTarget()); | 
| -    } | 
| -  } else { | 
| -    if (dock_layout_->is_dragged_window_docked()) { | 
| -      dock_layout_->UndockDraggedWindow(); | 
| -      window_state()->set_bounds_changed_by_user(true); | 
| -    } | 
| -  } | 
| -} | 
| - | 
| bool WorkspaceWindowResizer::AreBoundsValidSnappedBounds( | 
| wm::WindowStateType snapped_type, | 
| const gfx::Rect& bounds_in_parent) const { | 
|  |