1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Include test fixture.
GEN_INCLUDE(['testing/e2e_test_base.js']);
/**
* Test fixture for repeated_tree_change_handler.js.
* Note it uses SwitchAccess extension because `repeated_tree_change_handler.js`
* is only loaded there.
*/
AccessibilityExtensionRepeatedTreeChangeHandlerTest =
class extends E2ETestBase {
/** @override */
testGenCppIncludes() {
super.testGenCppIncludes();
GEN(`
#include "ash/accessibility/accessibility_controller.h"
#include "chrome/browser/ash/accessibility/accessibility_manager.h"
`);
}
/** @override */
testGenPreamble() {
super.testGenPreamble();
GEN(`
auto* controller = ash::AccessibilityController::Get();
controller->DisableSwitchAccessDisableConfirmationDialogTesting();
// Don't show the dialog saying Switch Access was enabled.
controller->DisableSwitchAccessEnableNotificationTesting();
base::OnceClosure load_cb =
base::BindOnce(&ash::AccessibilityManager::SetSwitchAccessEnabled,
base::Unretained(ash::AccessibilityManager::Get()),
true);
`);
super.testGenPreambleCommon('kSwitchAccessExtensionId');
}
/** @override */
async setUpDeferred() {
await super.setUpDeferred();
const imports = TestImportManager.getImports();
globalThis.RepeatedTreeChangeHandler = imports.RepeatedTreeChangeHandler;
}
};
TEST_F(
'AccessibilityExtensionRepeatedTreeChangeHandlerTest',
'RepeatedTreeChangeHandledOnce', function() {
this.runWithLoadedDesktop(() => {
this.handlerCallCount = 0;
const handler = () => this.handlerCallCount++;
const repeatedHandler =
new RepeatedTreeChangeHandler('allTreeChanges', handler);
// Simulate events being fired.
repeatedHandler.onChange_();
repeatedHandler.onChange_();
repeatedHandler.onChange_();
repeatedHandler.onChange_();
repeatedHandler.onChange_();
// Yield before verifying how many times the handler was called.
setTimeout(() => assertEquals(this.handlerCallCount, 1), 0);
});
});
TEST_F(
'AccessibilityExtensionRepeatedTreeChangeHandlerTest', 'Predicate',
function() {
this.runWithLoadedDesktop(() => {
this.handlerCallCount = 0;
const handler = () => this.handlerCallCount++;
const repeatedHandler = new RepeatedTreeChangeHandler(
'allTreeChanges', handler,
{predicate: c => c.type === 'nodeRemoved'});
// Simulate events being fired.
repeatedHandler.onChange_({type: 'nodeAdded'});
repeatedHandler.onChange_({type: 'nodeAdded'});
repeatedHandler.onChange_({type: 'nodeAdded'});
repeatedHandler.onChange_({type: 'nodeRemoved'});
repeatedHandler.onChange_({type: 'nodeRemoved'});
repeatedHandler.onChange_({type: 'nodeRemoved'});
repeatedHandler.onChange_({type: 'nodeRemoved'});
// Verify that nodes that don't satisfy the predicate aren't added to
// the change stack.
assertEquals(repeatedHandler.changeStack_.length, 4);
// Yield before verifying how many times the handler was called.
setTimeout(() => assertEquals(this.handlerCallCount, 1), 0);
});
});
|