Commit 17b90edd authored by Sammie Quon's avatar Sammie Quon Committed by Commit Bot

autotest private api: Allow setting fullscreen & minimized in tablet.

Ran into this issue when trying to write a tast-test. The main way is
to press the home button which we can use an accelerator for, but its
still helpful for tests to do this, and you can still you minimize and
fullscreen accelerators in tablet mode with a keyboard.

Added a test and formatted the file.

Test: added test, manual
Bug: 1045185
Change-Id: Iead7516d133929b93452bf4f29e24e462e728a8b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2025967
Commit-Queue: Sammie Quon <sammiequon@chromium.org>
Reviewed-by: default avatarMitsuru Oshima (slow in TOK) <oshima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736980}
parent c5576193
...@@ -3302,11 +3302,12 @@ AutotestPrivateSetAppWindowStateFunction::Run() { ...@@ -3302,11 +3302,12 @@ AutotestPrivateSetAppWindowStateFunction::Run() {
if (expected_state == ash::WindowStateType::kLeftSnapped) { if (expected_state == ash::WindowStateType::kLeftSnapped) {
ash::SplitViewTestApi().SnapWindow( ash::SplitViewTestApi().SnapWindow(
window, ash::SplitViewTestApi::SnapPosition::LEFT); window, ash::SplitViewTestApi::SnapPosition::LEFT);
return RespondLater();
} else if (expected_state == ash::WindowStateType::kRightSnapped) { } else if (expected_state == ash::WindowStateType::kRightSnapped) {
ash::SplitViewTestApi().SnapWindow( ash::SplitViewTestApi().SnapWindow(
window, ash::SplitViewTestApi::SnapPosition::RIGHT); window, ash::SplitViewTestApi::SnapPosition::RIGHT);
return RespondLater();
} }
return RespondLater();
} }
const ash::WMEvent event(ToWMEventType(params->change.event_type)); const ash::WMEvent event(ToWMEventType(params->change.event_type));
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
function newAcceletator(keyCode, shift, control, alt, search) { function newAccelerator(keyCode, shift, control, alt, search) {
var accelerator = new Object(); var accelerator = new Object();
accelerator.keyCode = keyCode; accelerator.keyCode = keyCode;
accelerator.shift = shift ? true : false; accelerator.shift = shift ? true : false;
...@@ -270,8 +270,8 @@ var defaultTests = [ ...@@ -270,8 +270,8 @@ var defaultTests = [
}, },
// This test verifies that getArcState returns provisioned False in case ARC // This test verifies that getArcState returns provisioned False in case ARC
// is not provisioned by default. // is not provisioned by default.
function arcNotProvisioned() {chrome.autotestPrivate.getArcState( function arcNotProvisioned() {
function(state) { chrome.autotestPrivate.getArcState(function(state) {
chrome.test.assertFalse(state.provisioned); chrome.test.assertFalse(state.provisioned);
chrome.test.assertNoLastError(); chrome.test.assertNoLastError();
chrome.test.succeed(); chrome.test.succeed();
...@@ -329,7 +329,7 @@ var defaultTests = [ ...@@ -329,7 +329,7 @@ var defaultTests = [
// This test verifies that api to wait for launcher state transition // This test verifies that api to wait for launcher state transition
// works as expected // works as expected
function waitForLauncherStatePeeking() { function waitForLauncherStatePeeking() {
var togglePeeking = newAcceletator('search', /*shift=*/false); var togglePeeking = newAccelerator('search', false /* shift */);
function closeLauncher() { function closeLauncher() {
togglePeeking.pressed = true; togglePeeking.pressed = true;
...@@ -370,7 +370,7 @@ var defaultTests = [ ...@@ -370,7 +370,7 @@ var defaultTests = [
// This test verifies that api to wait for launcher state transition // This test verifies that api to wait for launcher state transition
// works as expected // works as expected
function waitForLauncherStateFullscreen() { function waitForLauncherStateFullscreen() {
var toggleFullscreen = newAcceletator('search', /*shift=*/true); var toggleFullscreen = newAccelerator('search', true /* shift */);
function closeLauncher() { function closeLauncher() {
toggleFullscreen.pressed = true; toggleFullscreen.pressed = true;
chrome.autotestPrivate.activateAccelerator( chrome.autotestPrivate.activateAccelerator(
...@@ -678,8 +678,16 @@ var defaultTests = [ ...@@ -678,8 +678,16 @@ var defaultTests = [
window.captionButtonVisibleStatus, window.captionButtonVisibleStatus,
kMinimizeMask | kMaximizeRestoreMask | kCloseMask | kMinimizeMask | kMaximizeRestoreMask | kCloseMask |
kLeftSnappedMask | kRightSnappedMask); kLeftSnappedMask | kRightSnappedMask);
chrome.test.assertNoLastError();
chrome.test.succeed(); // Revert window state back to normal for the next test.
var revert_change = new Object();
revert_change.eventType = 'WMEventNormal';
chrome.autotestPrivate.setAppWindowState(
window.id, revert_change, function(state) {
chrome.test.assertEq(state, 'Normal');
chrome.test.assertNoLastError();
chrome.test.succeed();
});
}); });
}); });
}); });
...@@ -688,17 +696,55 @@ var defaultTests = [ ...@@ -688,17 +696,55 @@ var defaultTests = [
}); });
}, },
// Tests that setting the window state in tablet mode works.
function setWindowStateInTabletMode() {
chrome.autotestPrivate.setTabletModeEnabled(true, function(isEnabled) {
chrome.test.assertTrue(isEnabled);
chrome.autotestPrivate.getAppWindowList(function(list) {
chrome.test.assertEq(1, list.length);
var window = list[0];
chrome.test.assertEq(window.stateType, 'Maximized');
chrome.test.assertTrue(window.isVisible);
chrome.test.assertTrue(window.isActive);
var change = new Object();
change.eventType = 'WMEventFullscreen';
chrome.autotestPrivate.setAppWindowState(
window.id, change, function(state) {
chrome.test.assertEq(state, 'Fullscreen');
chrome.autotestPrivate.setTabletModeEnabled(
false, function(isEnabled) {
chrome.test.assertFalse(isEnabled);
// Revert window state back to normal and exit tablet mode
// for the next test.
var revert_change = new Object();
revert_change.eventType = 'WMEventNormal';
chrome.autotestPrivate.setAppWindowState(
window.id, revert_change, function(state) {
chrome.test.assertEq(state, 'Normal');
chrome.test.assertNoLastError();
chrome.test.succeed();
});
});
});
});
});
},
// This test verifies that api to activate accelrator works as expected. // This test verifies that api to activate accelrator works as expected.
function acceleratorTest() { function acceleratorTest() {
// Ash level accelerator. // Ash level accelerator.
var newBrowser = newAcceletator('n', /*shift=*/false, /*control=*/true); var newBrowser = newAccelerator('n', false /* shift */, true /* control */);
chrome.autotestPrivate.activateAccelerator( chrome.autotestPrivate.activateAccelerator(
newBrowser, newBrowser,
function() { function() {
chrome.autotestPrivate.getAppWindowList(function(list) { chrome.autotestPrivate.getAppWindowList(function(list) {
chrome.test.assertEq(2, list.length); chrome.test.assertEq(2, list.length);
var closeWindow = newAcceletator( var closeWindow =
'w', /*shift=*/false, /*control=*/true); newAccelerator('w', false /* shift */, true /* control */);
chrome.autotestPrivate.activateAccelerator( chrome.autotestPrivate.activateAccelerator(
closeWindow, closeWindow,
function(success) { function(success) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment