Remove persisted docked windows

Disables restoring windows to a docked state if the #ash-enable-docked-windows
flag is disabled. This change was meant to be in M57 right after CL:
https://codereview.chromium.org/2617733002 had landed, but it didn't make it
before the branch point.

BUG=668355

Review-Url: https://codereview.chromium.org/2652043004
Cr-Commit-Position: refs/heads/master@{#446754}
diff --git a/ash/common/wm/window_state.cc b/ash/common/wm/window_state.cc
index 13c4bff3..fbfa933 100644
--- a/ash/common/wm/window_state.cc
+++ b/ash/common/wm/window_state.cc
@@ -33,6 +33,8 @@
       return WM_EVENT_FULLSCREEN;
     case ui::SHOW_STATE_INACTIVE:
       return WM_EVENT_SHOW_INACTIVE;
+
+    // TODO(afakhry): Remove Docked Windows in M58.
     case ui::SHOW_STATE_DOCKED:
       return WM_EVENT_DOCK;
     case ui::SHOW_STATE_END:
diff --git a/ash/common/wm/wm_types.cc b/ash/common/wm/wm_types.cc
index 2e35f990..4deed1a 100644
--- a/ash/common/wm/wm_types.cc
+++ b/ash/common/wm/wm_types.cc
@@ -27,6 +27,8 @@
     case WINDOW_STATE_TYPE_LEFT_SNAPPED:
     case WINDOW_STATE_TYPE_AUTO_POSITIONED:
       return ui::SHOW_STATE_NORMAL;
+
+    // TODO(afakhry): Remove Docked Windows in M58.
     case WINDOW_STATE_TYPE_DOCKED:
       return ui::SHOW_STATE_DOCKED;
     case WINDOW_STATE_TYPE_MINIMIZED:
diff --git a/chrome/browser/extensions/api/sessions/sessions_api.cc b/chrome/browser/extensions/api/sessions/sessions_api.cc
index c628450..8d2cbdad 100644
--- a/chrome/browser/extensions/api/sessions/sessions_api.cc
+++ b/chrome/browser/extensions/api/sessions/sessions_api.cc
@@ -275,6 +275,8 @@
   windows::WindowState state = windows::WINDOW_STATE_NONE;
   switch (window.show_state) {
     case ui::SHOW_STATE_NORMAL:
+
+    // TODO(afakhry): Remove Docked Windows in M58.
     case ui::SHOW_STATE_DOCKED:
       state = windows::WINDOW_STATE_NORMAL;
       break;
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
index 323bfe4..bb334940 100644
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
@@ -216,6 +216,7 @@
 
   // When a panel is not docked it will be placed at a default origin in the
   // currently active target root window.
+  // TODO(afakhry): Remove Docked Windows in M58.
   bool use_default_bounds = create_params.state != ui::SHOW_STATE_DOCKED;
   // Sanitize initial origin reseting it in case it was not specified.
   using BoundsSpecification = AppWindow::BoundsSpecification;
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc
index 2c93bee..761872a 100644
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc
@@ -45,6 +45,7 @@
     case ui::SHOW_STATE_DEFAULT:
     case ui::SHOW_STATE_MINIMIZED:
     case ui::SHOW_STATE_INACTIVE:
+    // TODO(afakhry): Remove Docked Windows in M58.
     case ui::SHOW_STATE_DOCKED:
     case ui::SHOW_STATE_END:
       return ui::SHOW_STATE_NORMAL;
@@ -103,6 +104,8 @@
   // Use kPreMinimizedShowStateKey in case a window is minimized/hidden.
   ui::WindowShowState restore_state = widget()->GetNativeWindow()->GetProperty(
       aura::client::kPreMinimizedShowStateKey);
+
+  // TODO(afakhry): Remove in M58.
   if (widget()->GetNativeWindow()->GetProperty(aura::client::kShowStateKey) ==
           ui::SHOW_STATE_DOCKED ||
       restore_state == ui::SHOW_STATE_DOCKED) {
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
index abc6fb9..2f719c0 100644
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
@@ -6,6 +6,7 @@
 
 #include "apps/ui/views/app_window_frame_view.h"
 #include "ash/common/ash_constants.h"
+#include "ash/common/ash_switches.h"
 #include "ash/common/frame/custom_frame_view_ash.h"
 #include "ash/common/shelf/shelf_item_types.h"
 #include "ash/common/wm/panels/panel_frame_view.h"
@@ -128,9 +129,14 @@
     const AppWindow::CreateParams& create_params) {
   ChromeNativeAppWindowViewsAura::InitializeWindow(app_window, create_params);
   aura::Window* window = widget()->GetNativeWindow();
-  // Restore docked state on ash desktop.
-  if (create_params.state == ui::SHOW_STATE_DOCKED)
+
+  // TODO(afakhry): Remove Docked Windows in M58.
+  // Restore docked state on ash desktop if the docked windows flag is enabled.
+  if (create_params.state == ui::SHOW_STATE_DOCKED &&
+      ash::switches::DockedWindowsEnabled()) {
     window->SetProperty(aura::client::kShowStateKey, create_params.state);
+  }
+
   window->SetProperty(aura::client::kAppIdKey,
                       new std::string(app_window->extension_id()));
 
@@ -224,10 +230,14 @@
       }
       return ui::SHOW_STATE_FULLSCREEN;
     }
-    if (widget()->GetNativeWindow()->GetProperty(aura::client::kShowStateKey) ==
-            ui::SHOW_STATE_DOCKED ||
-        widget()->GetNativeWindow()->GetProperty(
-            aura::client::kPreMinimizedShowStateKey) == ui::SHOW_STATE_DOCKED) {
+
+    // TODO(afakhry): Remove Docked Windows in M58.
+    if (ash::switches::DockedWindowsEnabled() &&
+        (widget()->GetNativeWindow()->GetProperty(
+             aura::client::kShowStateKey) == ui::SHOW_STATE_DOCKED ||
+         widget()->GetNativeWindow()->GetProperty(
+             aura::client::kPreMinimizedShowStateKey) ==
+             ui::SHOW_STATE_DOCKED)) {
       return ui::SHOW_STATE_DOCKED;
     }
   }
diff --git a/chrome/browser/ui/views/chrome_views_delegate.cc b/chrome/browser/ui/views/chrome_views_delegate.cc
index 5c3e141..96f14b1 100644
--- a/chrome/browser/ui/views/chrome_views_delegate.cc
+++ b/chrome/browser/ui/views/chrome_views_delegate.cc
@@ -231,7 +231,9 @@
   window_preferences->SetInteger("bottom", bounds.bottom());
   window_preferences->SetBoolean("maximized",
                                  show_state == ui::SHOW_STATE_MAXIMIZED);
+  // TODO(afakhry): Remove Docked Windows in M58.
   window_preferences->SetBoolean("docked", show_state == ui::SHOW_STATE_DOCKED);
+
   gfx::Rect work_area(display::Screen::GetScreen()
                           ->GetDisplayNearestWindow(window->GetNativeView())
                           .work_area());
diff --git a/chrome/browser/ui/views/frame/browser_frame_ash.cc b/chrome/browser/ui/views/frame/browser_frame_ash.cc
index 58ba903..1ec42a0 100644
--- a/chrome/browser/ui/views/frame/browser_frame_ash.cc
+++ b/chrome/browser/ui/views/frame/browser_frame_ash.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/ui/views/frame/browser_frame_ash.h"
 
+#include "ash/common/ash_switches.h"
 #include "ash/common/wm/window_state.h"
 #include "ash/common/wm/window_state_delegate.h"
 #include "ash/shell.h"
@@ -118,7 +119,9 @@
     *show_state = ui::SHOW_STATE_NORMAL;
   }
 
-  if (ash::wm::GetWindowState(GetNativeWindow())->IsDocked()) {
+  // TODO(afakhry): Remove Docked Windows in M58.
+  if (ash::switches::DockedWindowsEnabled() &&
+      ash::wm::GetWindowState(GetNativeWindow())->IsDocked()) {
     if (browser_view_->browser()->is_app()) {
       // Only web app windows (not tabbed browser windows) persist docked state.
       *show_state = ui::SHOW_STATE_DOCKED;
diff --git a/chrome/browser/ui/window_sizer/window_sizer.cc b/chrome/browser/ui/window_sizer/window_sizer.cc
index 446d116..2848985a 100644
--- a/chrome/browser/ui/window_sizer/window_sizer.cc
+++ b/chrome/browser/ui/window_sizer/window_sizer.cc
@@ -23,6 +23,7 @@
 #include "ui/display/screen.h"
 
 #if defined(USE_ASH)
+#include "ash/common/ash_switches.h"
 #include "ash/common/wm/window_positioner.h"  // nogncheck
 #include "ash/shell.h"  // nogncheck
 #include "chrome/browser/ui/ash/ash_util.h"  // nogncheck
@@ -80,11 +81,14 @@
       if (*show_state == ui::SHOW_STATE_DEFAULT && maximized)
         *show_state = ui::SHOW_STATE_MAXIMIZED;
 #if defined(USE_ASH)
-      bool docked = false;
-      wp_pref->GetBoolean("docked", &docked);
-      if (*show_state == ui::SHOW_STATE_DEFAULT && docked &&
-          !browser_->is_type_tabbed()) {
-        *show_state = ui::SHOW_STATE_DOCKED;
+      // TODO(afakhry): Remove Docked Windows in M58.
+      if (ash::switches::DockedWindowsEnabled()) {
+        bool docked = false;
+        wp_pref->GetBoolean("docked", &docked);
+        if (*show_state == ui::SHOW_STATE_DEFAULT && docked &&
+            !browser_->is_type_tabbed()) {
+          *show_state = ui::SHOW_STATE_DOCKED;
+        }
       }
 #endif  // USE_ASH
     }
diff --git a/components/sessions/core/session_service_commands.cc b/components/sessions/core/session_service_commands.cc
index ecedfe6..d066372 100644
--- a/components/sessions/core/session_service_commands.cc
+++ b/components/sessions/core/session_service_commands.cc
@@ -113,7 +113,7 @@
   // SHOW_STATE_INACTIVE (4) never persisted.
   PERSISTED_SHOW_STATE_FULLSCREEN = 5,
   PERSISTED_SHOW_STATE_DETACHED_DEPRECATED = 6,
-  PERSISTED_SHOW_STATE_DOCKED = 7,
+  PERSISTED_SHOW_STATE_DOCKED_DEPRECATED = 7,
   PERSISTED_SHOW_STATE_END = 7
 };
 
@@ -140,8 +140,10 @@
       return PERSISTED_SHOW_STATE_MAXIMIZED;
     case ui::SHOW_STATE_FULLSCREEN:
       return PERSISTED_SHOW_STATE_FULLSCREEN;
+
+    // TODO(afakhry): Remove Docked Windows in M58.
     case ui::SHOW_STATE_DOCKED:
-      return PERSISTED_SHOW_STATE_DOCKED;
+      return PERSISTED_SHOW_STATE_DOCKED_DEPRECATED;
 
     case ui::SHOW_STATE_DEFAULT:
     case ui::SHOW_STATE_INACTIVE:
@@ -165,7 +167,7 @@
       return ui::SHOW_STATE_MAXIMIZED;
     case PERSISTED_SHOW_STATE_FULLSCREEN:
       return ui::SHOW_STATE_FULLSCREEN;
-    case PERSISTED_SHOW_STATE_DOCKED:
+    case PERSISTED_SHOW_STATE_DOCKED_DEPRECATED:
       return ui::SHOW_STATE_DOCKED;
     case PERSISTED_SHOW_STATE_DETACHED_DEPRECATED:
       return ui::SHOW_STATE_NORMAL;
diff --git a/ui/views/mus/desktop_window_tree_host_mus.cc b/ui/views/mus/desktop_window_tree_host_mus.cc
index 2273016..0aac63a 100644
--- a/ui/views/mus/desktop_window_tree_host_mus.cc
+++ b/ui/views/mus/desktop_window_tree_host_mus.cc
@@ -202,6 +202,7 @@
   desktop_native_widget_aura_->OnDesktopWindowTreeHostDestroyed(this);
 }
 
+// TODO(afakhry): Remove Docked Windows in M58.
 bool DesktopWindowTreeHostMus::IsDocked() const {
   return window()->GetProperty(aura::client::kShowStateKey) ==
          ui::SHOW_STATE_DOCKED;
@@ -358,6 +359,7 @@
 }
 
 void DesktopWindowTreeHostMus::ShowWindowWithState(ui::WindowShowState state) {
+  // TODO(afakhry): Remove Docked Windows in M58.
   if (state == ui::SHOW_STATE_MAXIMIZED || state == ui::SHOW_STATE_FULLSCREEN ||
       state == ui::SHOW_STATE_DOCKED) {
     window()->SetProperty(aura::client::kShowStateKey, state);
diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc
index 8082fb5a..5edfc18 100644
--- a/ui/views/widget/native_widget_aura.cc
+++ b/ui/views/widget/native_widget_aura.cc
@@ -534,6 +534,7 @@
   if (!window_)
     return;
 
+  // TODO(afakhry): Remove Docked Windows in M58.
   if (state == ui::SHOW_STATE_MAXIMIZED || state == ui::SHOW_STATE_FULLSCREEN ||
       state == ui::SHOW_STATE_DOCKED) {
     window_->SetProperty(aura::client::kShowStateKey, state);
@@ -992,6 +993,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // NativeWidgetAura, private:
 
+// TODO(afakhry): Remove Docked Windows in M58.
 bool NativeWidgetAura::IsDocked() const {
   return window_ &&
          window_->GetProperty(aura::client::kShowStateKey) ==