This directory contains the source code for the Chrome Cleanup Tool, a standalone application distributed to Chrome users to find and remove Unwanted Software (UwS).
The tool and its tests are Windows-only.
The application is distributed in two versions:
The Software Reporter runs in the background and, if it finds UwS that can be removed, reports this to Chrome. Chrome then downloads the full Cleanup Tool and shows a prompt on the settings page asking the user for permission to remove the UwS.
This directory contains the source for both.
Code in Chromium that deals with the Software Reporter Tool and Chrome Cleanup Tool includes:
sw_reporter_installer_win*
)chrome_cleanup_handler.*
)chrome_cleaner_*
)To build all targets for this project, use:
//chrome/chrome_cleaner:chrome_cleaner
The main build targets are:
There is also a tool, generate_test_uws
, which will create some harmless text files that the tool will detect as UwS:
The public build will link to the test scanning engine in chrome/chrome_cleaner/engines/target/test_engine_delegate.cc
which only detects test files. This is the default when building on the Chromium buildbots.
If is_internal_chrome_cleaner_build
is set in GN, the build looks for internal resources in the chrome_cleaner/internal
directory. These resources are not open source so are only available internally to Google. They include the licensed scanning engine used to find real-world UwS.
To ship a non-test version of the tool, implement EngineDelegate to wrap an engine that can detect and remove UwS. The engine will be run inside a sandbox with low privileges. To perform operations like opening file handles, scanning process memory, and deleting files, the engine will need to call the callbacks passed to EngineDelegate as privileged_file_calls
, privileged_scan_calls
and privileged_removal_calls
.
To check out the internal resources set both of these to True in .gclient:
checkout_src_internal
(standard argument defined in DEPS)checkout_chrome_cleaner_internal
(defined in src-internal's DEPS, causes the internal resources to be checked out under chrome/chrome_cleaner/internal
)To actually build with the internal resources, also set is_internal_chrome_cleaner_build
to true in args.gn.
The build is controlled by the following arguments that can be set in args.gn:
is_internal_chrome_cleaner_build
: If true, GN targets will depend on targets in chrome/chrome_cleaner/internal, otherwise will depend only on public resources.is_official_chrome_cleaner_build
: If true, various development options will be disabled since the build is meant for release to end users.reporter_branding_path
, cleaner_branding_path
, version_path
: Paths to resource files that will be used to populate the VERSIONINFO of the executables.is_internal_chrome_cleaner_build
is set, these are overridden to identify as Google.