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 @@ ...@@ -48,7 +48,7 @@
<if expr="_google_chrome and is_win"> <if expr="_google_chrome and is_win">
<template is="dom-if" if="[[showChromeCleanerChild_(parentStatus_)]]" <template is="dom-if" if="[[showChromeCleanerChild_(parentStatus_)]]"
restamp> restamp>
<settings-safety-check-chrome-cleaner-child> <settings-safety-check-chrome-cleaner-child id="chromeCleanerChild">
</settings-safety-check-chrome-cleaner-child> </settings-safety-check-chrome-cleaner-child>
</template> </template>
</if> </if>
......
...@@ -133,6 +133,7 @@ js_type_check("closure_compile") { ...@@ -133,6 +133,7 @@ js_type_check("closure_compile") {
#":reset_profile_banner_test", #":reset_profile_banner_test",
#":route_tests", #":route_tests",
":safety_check_chrome_cleaner_test", ":safety_check_chrome_cleaner_test",
":safety_check_page_branded_windows_test",
":safety_check_page_test", ":safety_check_page_test",
#":search_engines_page_test", #":search_engines_page_test",
...@@ -254,6 +255,15 @@ js_library("safety_check_chrome_cleaner_test") { ...@@ -254,6 +255,15 @@ js_library("safety_check_chrome_cleaner_test") {
externs_list = [ "$externs_path/mocha-2.5.js" ] 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") { js_library("safety_check_page_test") {
deps = [ deps = [
":test_hats_browser_proxy", ":test_hats_browser_proxy",
......
...@@ -281,6 +281,31 @@ TEST_F('CrSettingsPasswordsCheckV3Test', 'All', function() { ...@@ -281,6 +281,31 @@ TEST_F('CrSettingsPasswordsCheckV3Test', 'All', function() {
mocha.run(); 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 // eslint-disable-next-line no-var
var CrSettingsSafetyCheckPageV3Test = class extends CrSettingsV3BrowserTest { var CrSettingsSafetyCheckPageV3Test = class extends CrSettingsV3BrowserTest {
/** @override */ /** @override */
......
...@@ -17,12 +17,13 @@ const testDisplayString = 'Test display string'; ...@@ -17,12 +17,13 @@ const testDisplayString = 'Test display string';
/** /**
* Fire a safety check Chrome cleaner event. * Fire a safety check Chrome cleaner event.
* @param {SafetyCheckChromeCleanerStatus} state * @param {!SafetyCheckChromeCleanerStatus} state
*/ */
function fireSafetyCheckChromeCleanerEvent(state) { function fireSafetyCheckChromeCleanerEvent(state) {
const event = {}; const event = {
event.newState = state; newState: state,
event.displayString = testDisplayString; displayString: testDisplayString,
};
webUIListenerCallback( webUIListenerCallback(
SafetyCheckCallbackConstants.CHROME_CLEANER_CHANGED, event); 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 @@ ...@@ -6,7 +6,7 @@
import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js'; import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.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 {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 {assertEquals, assertFalse, assertTrue} from '../chai_assert.js';
import {TestBrowserProxy} from '../test_browser_proxy.m.js'; import {TestBrowserProxy} from '../test_browser_proxy.m.js';
...@@ -23,61 +23,79 @@ const testDisplayString = 'Test display string'; ...@@ -23,61 +23,79 @@ const testDisplayString = 'Test display string';
/** /**
* Fire a safety check parent event. * Fire a safety check parent event.
* @param {SafetyCheckParentStatus} state * @param {!SafetyCheckParentStatus} state
*/ */
function fireSafetyCheckParentEvent(state) { function fireSafetyCheckParentEvent(state) {
const event = {}; const event = {
event.newState = state; newState: state,
event.displayString = testDisplayString; displayString: testDisplayString,
};
webUIListenerCallback(SafetyCheckCallbackConstants.PARENT_CHANGED, event); webUIListenerCallback(SafetyCheckCallbackConstants.PARENT_CHANGED, event);
} }
/** /**
* Fire a safety check updates event. * Fire a safety check updates event.
* @param {SafetyCheckUpdatesStatus} state * @param {!SafetyCheckUpdatesStatus} state
*/ */
function fireSafetyCheckUpdatesEvent(state) { function fireSafetyCheckUpdatesEvent(state) {
const event = {}; const event = {
event.newState = state; newState: state,
event.displayString = testDisplayString; displayString: testDisplayString,
};
webUIListenerCallback(SafetyCheckCallbackConstants.UPDATES_CHANGED, event); webUIListenerCallback(SafetyCheckCallbackConstants.UPDATES_CHANGED, event);
} }
/** /**
* Fire a safety check passwords event. * Fire a safety check passwords event.
* @param {SafetyCheckPasswordsStatus} state * @param {!SafetyCheckPasswordsStatus} state
*/ */
function fireSafetyCheckPasswordsEvent(state) { function fireSafetyCheckPasswordsEvent(state) {
const event = {}; const event = {
event.newState = state; newState: state,
event.displayString = testDisplayString; displayString: testDisplayString,
};
event.passwordsButtonString = null; event.passwordsButtonString = null;
webUIListenerCallback(SafetyCheckCallbackConstants.PASSWORDS_CHANGED, event); webUIListenerCallback(SafetyCheckCallbackConstants.PASSWORDS_CHANGED, event);
} }
/** /**
* Fire a safety check safe browsing event. * Fire a safety check safe browsing event.
* @param {SafetyCheckSafeBrowsingStatus} state * @param {!SafetyCheckSafeBrowsingStatus} state
*/ */
function fireSafetyCheckSafeBrowsingEvent(state) { function fireSafetyCheckSafeBrowsingEvent(state) {
const event = {}; const event = {
event.newState = state; newState: state,
event.displayString = testDisplayString; displayString: testDisplayString,
};
webUIListenerCallback( webUIListenerCallback(
SafetyCheckCallbackConstants.SAFE_BROWSING_CHANGED, event); SafetyCheckCallbackConstants.SAFE_BROWSING_CHANGED, event);
} }
/** /**
* Fire a safety check extensions event. * Fire a safety check extensions event.
* @param {SafetyCheckExtensionsStatus} state * @param {!SafetyCheckExtensionsStatus} state
*/ */
function fireSafetyCheckExtensionsEvent(state) { function fireSafetyCheckExtensionsEvent(state) {
const event = {}; const event = {
event.newState = state; newState: state,
event.displayString = testDisplayString; displayString: testDisplayString,
};
webUIListenerCallback(SafetyCheckCallbackConstants.EXTENSIONS_CHANGED, event); 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 * Verify that the safety check child inside the page has been configured as
* specified. * specified.
...@@ -206,6 +224,8 @@ suite('SafetyCheckPageUiTests', function() { ...@@ -206,6 +224,8 @@ suite('SafetyCheckPageUiTests', function() {
SafetyCheckSafeBrowsingStatus.ENABLED_STANDARD); SafetyCheckSafeBrowsingStatus.ENABLED_STANDARD);
fireSafetyCheckExtensionsEvent( fireSafetyCheckExtensionsEvent(
SafetyCheckExtensionsStatus.NO_BLOCKLISTED_EXTENSIONS); SafetyCheckExtensionsStatus.NO_BLOCKLISTED_EXTENSIONS);
fireSafetyCheckChromeCleanerEvent(
SafetyCheckChromeCleanerStatus.REPORTER_FOUND_NOTHING);
fireSafetyCheckParentEvent(SafetyCheckParentStatus.AFTER); fireSafetyCheckParentEvent(SafetyCheckParentStatus.AFTER);
flush(); 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