Port application/window-controls_test to non-hosted

Bug: 416405566
Change-Id: I0ac6400ce7c089b3efd278019e630f63a13ccc31
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6616831
Reviewed-by: Alex Rudenko <alexrudenko@chromium.org>
Commit-Queue: Liviu Rau <liviurau@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
diff --git a/test/e2e/application/BUILD.gn b/test/e2e/application/BUILD.gn
index eb68ccd..0a1fa96 100644
--- a/test/e2e/application/BUILD.gn
+++ b/test/e2e/application/BUILD.gn
@@ -8,7 +8,6 @@
   sources = [
     "frame-tree_test.ts",
     "shared-storage_test.ts",
-    "window-controls_test.ts",
   ]
 
   deps = [
diff --git a/test/e2e/application/window-controls_test.ts b/test/e2e/application/window-controls_test.ts
deleted file mode 100644
index d2e0e3c6..0000000
--- a/test/e2e/application/window-controls_test.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {assert} from 'chai';
-import type {ElementHandle} from 'puppeteer-core';
-
-import {selectOption, waitFor} from '../../shared/helper.js';
-import {navigateToApplicationTab} from '../helpers/application-helpers.js';
-
-const TEST_HTML_FILE = 'window-controls';
-
-async function assertChecked(checkbox: ElementHandle<HTMLInputElement>, expected: boolean) {
-  const checked = await checkbox.evaluate(el => el.checked);
-  assert.strictEqual(checked, expected);
-}
-
-describe('The Window Controls Overlay', () => {
-  it('shows emulation controls when manifest with property display_overide is present', async () => {
-    await navigateToApplicationTab(TEST_HTML_FILE);
-    const windowControlsCheckbox =
-        await (await waitFor('[title="Emulate the Window Controls Overlay on"]')).toElement('input');
-    const controlsDropDown = await waitFor('select');
-
-    // Verify dropdown options
-    const options = await controlsDropDown.$$('option');
-    const values = await Promise.all(options.map(option => option.evaluate(el => el.value)));
-    assert.deepEqual(values, ['Windows', 'Mac', 'Linux']);
-
-    // Verify selecting an option
-    void selectOption(await controlsDropDown.toElement('select'), 'Linux');
-    const selectedOption = await controlsDropDown.evaluate(input => input.value);
-    assert.strictEqual(selectedOption, 'Linux');
-
-    // Verify clicking the checkbox
-    await assertChecked(windowControlsCheckbox, false);
-    await windowControlsCheckbox.click();
-    await assertChecked(windowControlsCheckbox, true);
-  });
-});
diff --git a/test/e2e_non_hosted/application/BUILD.gn b/test/e2e_non_hosted/application/BUILD.gn
index 419d9f3..0dad788 100644
--- a/test/e2e_non_hosted/application/BUILD.gn
+++ b/test/e2e_non_hosted/application/BUILD.gn
@@ -13,6 +13,7 @@
     "service-worker-update_test.ts",
     "session-storage_test.ts",
     "storage_test.ts",
+    "window-controls_test.ts",
   ]
 
   deps = [
diff --git a/test/e2e_non_hosted/application/window-controls_test.ts b/test/e2e_non_hosted/application/window-controls_test.ts
new file mode 100644
index 0000000..812741f
--- /dev/null
+++ b/test/e2e_non_hosted/application/window-controls_test.ts
@@ -0,0 +1,45 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {assert} from 'chai';
+import type {ElementHandle} from 'puppeteer-core';
+
+import {navigateToApplicationTab} from '../../e2e/helpers/application-helpers.js';
+import {selectOption} from '../../shared/helper.js';
+
+const TEST_HTML_FILE = 'window-controls';
+
+async function assertChecked(checkbox: ElementHandle<HTMLInputElement>, expected: boolean) {
+  const checked = await checkbox.evaluate(el => el.checked);
+  assert.strictEqual(checked, expected);
+}
+
+describe('The Window Controls Overlay', () => {
+  // TODO (liviurau): Update navigateToApplicationTab helper to work in docked
+  // mode and remove the setup below.
+  setup({dockingMode: 'undocked'});
+
+  it('shows emulation controls when manifest with property display_overide is present',
+     async ({devToolsPage, inspectedPage}) => {
+       await navigateToApplicationTab(TEST_HTML_FILE, devToolsPage, inspectedPage);
+       const windowControlsCheckbox =
+           await (await devToolsPage.waitFor('[title="Emulate the Window Controls Overlay on"]')).toElement('input');
+       const controlsDropDown = await devToolsPage.waitFor('select');
+
+       // Verify dropdown options
+       const options = await controlsDropDown.$$('option');
+       const values = await Promise.all(options.map(option => option.evaluate(el => el.value)));
+       assert.deepEqual(values, ['Windows', 'Mac', 'Linux']);
+
+       // Verify selecting an option
+       void selectOption(await controlsDropDown.toElement('select'), 'Linux');
+       const selectedOption = await controlsDropDown.evaluate(input => input.value);
+       assert.strictEqual(selectedOption, 'Linux');
+
+       // Verify clicking the checkbox
+       await assertChecked(windowControlsCheckbox, false);
+       await windowControlsCheckbox.click();
+       await assertChecked(windowControlsCheckbox, true);
+     });
+});