Commit b52e656c authored by Rainhard Findling's avatar Rainhard Findling Committed by Commit Bot

Safety check UI: test for existence of cleaner child

* Adds tests to check for the existence of the Chrome cleaner child if
  the platform requirements are fulfilled and if the corresponding flag
  is enabled.
* Adds a mock of an incoming Chrome cleaner event from the safety check
  backend to the existing safety check page test.

Bug: 1087263
Change-Id: I89f04c03c1bcca59b72120b4379f7ad03fe7d572
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2236139
Commit-Queue: Rainhard Findling <rainhard@chromium.org>
Reviewed-by: default avatardpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776892}
parent 05c00770
......@@ -48,7 +48,7 @@
<if expr="_google_chrome and is_win">
<template is="dom-if" if="[[showChromeCleanerChild_(parentStatus_)]]"
restamp>
<settings-safety-check-chrome-cleaner-child>
<settings-safety-check-chrome-cleaner-child id="chromeCleanerChild">
</settings-safety-check-chrome-cleaner-child>
</template>
</if>
......
......@@ -133,6 +133,7 @@ js_type_check("closure_compile") {
#":reset_profile_banner_test",
#":route_tests",
":safety_check_chrome_cleaner_test",
":safety_check_page_branded_windows_test",
":safety_check_page_test",
#":search_engines_page_test",
......@@ -254,6 +255,15 @@ js_library("safety_check_chrome_cleaner_test") {
externs_list = [ "$externs_path/mocha-2.5.js" ]
}
js_library("safety_check_page_branded_windows_test") {
deps = [
"..:chai_assert",
"//chrome/browser/resources/settings:settings",
"//ui/webui/resources/js:load_time_data.m",
]
externs_list = [ "$externs_path/mocha-2.5.js" ]
}
js_library("safety_check_page_test") {
deps = [
":test_hats_browser_proxy",
......
......@@ -281,6 +281,31 @@ TEST_F('CrSettingsPasswordsCheckV3Test', 'All', function() {
mocha.run();
});
// eslint-disable-next-line no-var
var CrSettingsSafetyCheckPageBrandedWindowsV3Test =
class extends CrSettingsV3BrowserTest {
/** @override */
get browsePreload() {
return 'chrome://settings/test_loader.html?module=settings/safety_check_page_test.js';
}
/** @override */
get featureListInternal() {
return {
enabled: [
'features::kPrivacySettingsRedesign',
'features::kSafetyCheckChromeCleanerChild',
],
};
}
};
GEN('#if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)');
TEST_F('CrSettingsSafetyCheckPageBrandedWindowsV3Test', 'All', function() {
mocha.run();
});
GEN('#endif // defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)');
// eslint-disable-next-line no-var
var CrSettingsSafetyCheckPageV3Test = class extends CrSettingsV3BrowserTest {
/** @override */
......
......@@ -17,12 +17,13 @@ const testDisplayString = 'Test display string';
/**
* Fire a safety check Chrome cleaner event.
* @param {SafetyCheckChromeCleanerStatus} state
* @param {!SafetyCheckChromeCleanerStatus} state
*/
function fireSafetyCheckChromeCleanerEvent(state) {
const event = {};
event.newState = state;
event.displayString = testDisplayString;
const event = {
newState: state,
displayString: testDisplayString,
};
webUIListenerCallback(
SafetyCheckCallbackConstants.CHROME_CLEANER_CHANGED, event);
}
......
// Copyright 2020 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.
// clang-format off
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js';
// clang-format on
suite('SafetyCheckPageChromeCleanerFlagDisabledTests', function() {
/** @type {!SettingsSafetyCheckPageElement} */
let page;
suiteSetup(function() {
loadTimeData.overrideValues({
safetyCheckChromeCleanerChildEnabled: false,
});
});
setup(function() {
document.body.innerHTML = '';
page = /** @type {!SettingsSafetyCheckPageElement} */ (
document.createElement('settings-safety-check-page'));
document.body.appendChild(page);
flush();
});
teardown(function() {
page.remove();
});
test('testChromeCleanerNotPresent', async function() {
// User starts check.
page.$$('#safetyCheckParentButton').click();
flush();
// There is no Chrome cleaner child in safety check.
assertFalse(!!page.$$('#chromeCleanerChild'));
});
});
suite('SafetyCheckPageChromeCleanerFlagEnabledTests', function() {
/** @type {!SettingsSafetyCheckPageElement} */
let page;
suiteSetup(function() {
loadTimeData.overrideValues({
safetyCheckChromeCleanerChildEnabled: true,
});
});
setup(function() {
document.body.innerHTML = '';
page = /** @type {!SettingsSafetyCheckPageElement} */ (
document.createElement('settings-safety-check-page'));
document.body.appendChild(page);
flush();
});
teardown(function() {
page.remove();
});
test('testChromeCleanerNotPresent', async function() {
// User starts check.
page.$$('#safetyCheckParentButton').click();
flush();
// There is a Chrome cleaner child in safety check.
assertTrue(!!page.$$('#chromeCleanerChild'));
});
});
......@@ -6,7 +6,7 @@
import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {HatsBrowserProxyImpl, LifetimeBrowserProxyImpl, MetricsBrowserProxyImpl, OpenWindowProxyImpl, PasswordManagerImpl, PasswordManagerProxy, Router, routes, SafetyCheckBrowserProxy, SafetyCheckBrowserProxyImpl, SafetyCheckCallbackConstants, SafetyCheckExtensionsStatus, SafetyCheckIconStatus, SafetyCheckInteractions, SafetyCheckParentStatus, SafetyCheckPasswordsStatus, SafetyCheckSafeBrowsingStatus, SafetyCheckUpdatesStatus} from 'chrome://settings/settings.js';
import {HatsBrowserProxyImpl, LifetimeBrowserProxyImpl, MetricsBrowserProxyImpl, OpenWindowProxyImpl, PasswordManagerImpl, PasswordManagerProxy, Router, routes, SafetyCheckBrowserProxy, SafetyCheckBrowserProxyImpl, SafetyCheckCallbackConstants, SafetyCheckChromeCleanerStatus, SafetyCheckExtensionsStatus, SafetyCheckIconStatus, SafetyCheckInteractions, SafetyCheckParentStatus, SafetyCheckPasswordsStatus, SafetyCheckSafeBrowsingStatus, SafetyCheckUpdatesStatus} from 'chrome://settings/settings.js';
import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js';
import {TestBrowserProxy} from '../test_browser_proxy.m.js';
......@@ -23,61 +23,79 @@ const testDisplayString = 'Test display string';
/**
* Fire a safety check parent event.
* @param {SafetyCheckParentStatus} state
* @param {!SafetyCheckParentStatus} state
*/
function fireSafetyCheckParentEvent(state) {
const event = {};
event.newState = state;
event.displayString = testDisplayString;
const event = {
newState: state,
displayString: testDisplayString,
};
webUIListenerCallback(SafetyCheckCallbackConstants.PARENT_CHANGED, event);
}
/**
* Fire a safety check updates event.
* @param {SafetyCheckUpdatesStatus} state
* @param {!SafetyCheckUpdatesStatus} state
*/
function fireSafetyCheckUpdatesEvent(state) {
const event = {};
event.newState = state;
event.displayString = testDisplayString;
const event = {
newState: state,
displayString: testDisplayString,
};
webUIListenerCallback(SafetyCheckCallbackConstants.UPDATES_CHANGED, event);
}
/**
* Fire a safety check passwords event.
* @param {SafetyCheckPasswordsStatus} state
* @param {!SafetyCheckPasswordsStatus} state
*/
function fireSafetyCheckPasswordsEvent(state) {
const event = {};
event.newState = state;
event.displayString = testDisplayString;
const event = {
newState: state,
displayString: testDisplayString,
};
event.passwordsButtonString = null;
webUIListenerCallback(SafetyCheckCallbackConstants.PASSWORDS_CHANGED, event);
}
/**
* Fire a safety check safe browsing event.
* @param {SafetyCheckSafeBrowsingStatus} state
* @param {!SafetyCheckSafeBrowsingStatus} state
*/
function fireSafetyCheckSafeBrowsingEvent(state) {
const event = {};
event.newState = state;
event.displayString = testDisplayString;
const event = {
newState: state,
displayString: testDisplayString,
};
webUIListenerCallback(
SafetyCheckCallbackConstants.SAFE_BROWSING_CHANGED, event);
}
/**
* Fire a safety check extensions event.
* @param {SafetyCheckExtensionsStatus} state
* @param {!SafetyCheckExtensionsStatus} state
*/
function fireSafetyCheckExtensionsEvent(state) {
const event = {};
event.newState = state;
event.displayString = testDisplayString;
const event = {
newState: state,
displayString: testDisplayString,
};
webUIListenerCallback(SafetyCheckCallbackConstants.EXTENSIONS_CHANGED, event);
}
/**
* Fire a safety check Chrome cleaner event.
* @param {SafetyCheckChromeCleanerStatus} state
*/
function fireSafetyCheckChromeCleanerEvent(state) {
const event = {
newState: state,
displayString: testDisplayString,
};
webUIListenerCallback(
SafetyCheckCallbackConstants.CHROME_CLEANER_CHANGED, event);
}
/**
* Verify that the safety check child inside the page has been configured as
* specified.
......@@ -206,6 +224,8 @@ suite('SafetyCheckPageUiTests', function() {
SafetyCheckSafeBrowsingStatus.ENABLED_STANDARD);
fireSafetyCheckExtensionsEvent(
SafetyCheckExtensionsStatus.NO_BLOCKLISTED_EXTENSIONS);
fireSafetyCheckChromeCleanerEvent(
SafetyCheckChromeCleanerStatus.REPORTER_FOUND_NOTHING);
fireSafetyCheckParentEvent(SafetyCheckParentStatus.AFTER);
flush();
......
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