[AW] Package name logging ComponentInstallerPolicy
Add ComponentInstallerPolicy for WebViewAppsPackageNamesAllowlist. Registration is gated behind a command line flag. Bug: 1202702 Test: android_webview_unittests Change-Id: I78e21c0601dc7e7557f2c164ed5c28d4b3767505 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2860008 Reviewed-by: Mugdha Lakhani <nator@chromium.org> Reviewed-by: Hazem Ashmawy <hazems@chromium.org> Commit-Queue: Laís Minchillo <laisminchillo@chromium.org> Auto-Submit: Laís Minchillo <laisminchillo@chromium.org> Cr-Commit-Position: refs/heads/master@{#886050}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
be11ef1a02
commit
17a805b62b
android_webview
@@ -58,9 +58,10 @@ const base::Feature kWebViewMeasureScreenCoverage{
|
|||||||
const base::Feature kWebViewOriginTrials{"WebViewOriginTrials",
|
const base::Feature kWebViewOriginTrials{"WebViewOriginTrials",
|
||||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
// Enables package name logging for the most popular WebView embedders.
|
// Enables package name logging for the most popular WebView embedders that are
|
||||||
const base::Feature kWebViewPackageNameLogging{
|
// on a dynamically generated allowlist.
|
||||||
"WebViewPackageNameLogging", base::FEATURE_DISABLED_BY_DEFAULT};
|
const base::Feature kWebViewAppsPackageNamesAllowlist{
|
||||||
|
"WebViewAppsPackageNamesAllowlist", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
// Restricts all of WebView's out-of-process renderer threads to use only LITTLE
|
// Restricts all of WebView's out-of-process renderer threads to use only LITTLE
|
||||||
// cores on big.LITTLE architectures when the power mode is idle.
|
// cores on big.LITTLE architectures when the power mode is idle.
|
||||||
|
@@ -14,6 +14,7 @@ namespace features {
|
|||||||
// alongside the definition of their values in the .cc file.
|
// alongside the definition of their values in the .cc file.
|
||||||
|
|
||||||
// Alphabetical:
|
// Alphabetical:
|
||||||
|
extern const base::Feature kWebViewAppsPackageNamesAllowlist;
|
||||||
extern const base::Feature kWebViewBrotliSupport;
|
extern const base::Feature kWebViewBrotliSupport;
|
||||||
extern const base::Feature kWebViewConnectionlessSafeBrowsing;
|
extern const base::Feature kWebViewConnectionlessSafeBrowsing;
|
||||||
extern const base::Feature kWebViewCpuAffinityRestrictToLittleCores;
|
extern const base::Feature kWebViewCpuAffinityRestrictToLittleCores;
|
||||||
@@ -23,7 +24,6 @@ extern const base::Feature kWebViewJavaJsBridgeMojo;
|
|||||||
extern const base::Feature kWebViewMeasureScreenCoverage;
|
extern const base::Feature kWebViewMeasureScreenCoverage;
|
||||||
extern const base::Feature kWebViewMixedContentAutoupgrades;
|
extern const base::Feature kWebViewMixedContentAutoupgrades;
|
||||||
extern const base::Feature kWebViewOriginTrials;
|
extern const base::Feature kWebViewOriginTrials;
|
||||||
extern const base::Feature kWebViewPackageNameLogging;
|
|
||||||
extern const base::Feature kWebViewPowerSchedulerThrottleIdle;
|
extern const base::Feature kWebViewPowerSchedulerThrottleIdle;
|
||||||
extern const base::Feature kWebViewSuppressDifferentOriginSubframeJSDialogs;
|
extern const base::Feature kWebViewSuppressDifferentOriginSubframeJSDialogs;
|
||||||
extern const base::Feature kWebViewTestFeature;
|
extern const base::Feature kWebViewTestFeature;
|
||||||
|
@@ -53,4 +53,8 @@ const char kFinchSeedMinUpdatePeriod[] = "finch-seed-min-update-period";
|
|||||||
const char kWebViewEnableModernCookieSameSite[] =
|
const char kWebViewEnableModernCookieSameSite[] =
|
||||||
"webview-enable-modern-cookie-same-site";
|
"webview-enable-modern-cookie-same-site";
|
||||||
|
|
||||||
|
// Enables downloading Apps Package Names Allowlist.
|
||||||
|
const char kWebViewAppsPackageNamesAllowlist[] =
|
||||||
|
"webview-apps-package-names-allowlist";
|
||||||
|
|
||||||
} // namespace switches
|
} // namespace switches
|
||||||
|
@@ -18,6 +18,7 @@ extern const char kFinchSeedIgnorePendingDownload[];
|
|||||||
extern const char kFinchSeedMinDownloadPeriod[];
|
extern const char kFinchSeedMinDownloadPeriod[];
|
||||||
extern const char kFinchSeedMinUpdatePeriod[];
|
extern const char kFinchSeedMinUpdatePeriod[];
|
||||||
extern const char kWebViewEnableModernCookieSameSite[];
|
extern const char kWebViewEnableModernCookieSameSite[];
|
||||||
|
extern const char kWebViewAppsPackageNamesAllowlist[];
|
||||||
|
|
||||||
} // namespace switches
|
} // namespace switches
|
||||||
|
|
||||||
|
@@ -130,6 +130,8 @@ source_set("nonembedded") {
|
|||||||
"component_updater/aw_component_updater_configurator.h",
|
"component_updater/aw_component_updater_configurator.h",
|
||||||
"component_updater/installer_policies/aw_origin_trials_component_installer.cc",
|
"component_updater/installer_policies/aw_origin_trials_component_installer.cc",
|
||||||
"component_updater/installer_policies/aw_origin_trials_component_installer.h",
|
"component_updater/installer_policies/aw_origin_trials_component_installer.h",
|
||||||
|
"component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.cc",
|
||||||
|
"component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.h",
|
||||||
"component_updater/installer_policies/aw_trust_token_key_commitments_component_installer_policy.cc",
|
"component_updater/installer_policies/aw_trust_token_key_commitments_component_installer_policy.cc",
|
||||||
"component_updater/installer_policies/aw_trust_token_key_commitments_component_installer_policy.h",
|
"component_updater/installer_policies/aw_trust_token_key_commitments_component_installer_policy.h",
|
||||||
"component_updater/registration.cc",
|
"component_updater/registration.cc",
|
||||||
|
121
android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.cc
Normal file
121
android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.cc
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
// Copyright 2021 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.
|
||||||
|
|
||||||
|
#include "android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "android_webview/nonembedded/component_updater/aw_component_installer_policy_delegate.h"
|
||||||
|
#include "base/files/file_path.h"
|
||||||
|
#include "base/files/file_util.h"
|
||||||
|
#include "base/memory/ref_counted.h"
|
||||||
|
#include "base/memory/scoped_refptr.h"
|
||||||
|
#include "base/path_service.h"
|
||||||
|
#include "base/stl_util.h"
|
||||||
|
#include "base/values.h"
|
||||||
|
#include "base/version.h"
|
||||||
|
#include "components/component_updater/component_installer.h"
|
||||||
|
#include "components/component_updater/component_updater_paths.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
// The SHA256 of the SubjectPublicKeyInfo used to sign the extension.
|
||||||
|
// The extension id is: aemllinfpjdgcldgaelcgakpjmaekbai
|
||||||
|
const uint8_t kWebViewAppsPackageNamesAllowlistPublicKeySHA256[32] = {
|
||||||
|
0x04, 0xcb, 0xb8, 0xd5, 0xf9, 0x36, 0x2b, 0x36, 0x04, 0xb2, 0x60,
|
||||||
|
0xaf, 0x9c, 0x04, 0xa1, 0x08, 0xa3, 0xe9, 0xdc, 0x92, 0x46, 0xe7,
|
||||||
|
0xae, 0xc8, 0x3e, 0x32, 0x6f, 0x74, 0x43, 0x02, 0xf3, 0x7e};
|
||||||
|
|
||||||
|
const char kWebViewAppsPackageNamesAllowlistName[] =
|
||||||
|
"WebViewAppsPackageNamesAllowlist";
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
namespace android_webview {
|
||||||
|
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy::
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy() {
|
||||||
|
std::vector<uint8_t> hash;
|
||||||
|
GetHash(&hash);
|
||||||
|
delegate_ = std::make_unique<AwComponentInstallerPolicyDelegate>(hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy::
|
||||||
|
~AwPackageNamesAllowlistComponentInstallerPolicy() = default;
|
||||||
|
|
||||||
|
update_client::CrxInstaller::Result
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy::OnCustomInstall(
|
||||||
|
const base::DictionaryValue& manifest,
|
||||||
|
const base::FilePath& install_dir) {
|
||||||
|
// Nothing custom here.
|
||||||
|
return update_client::CrxInstaller::Result(/* error = */ 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AwPackageNamesAllowlistComponentInstallerPolicy::OnCustomUninstall() {
|
||||||
|
delegate_->OnCustomUninstall();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AwPackageNamesAllowlistComponentInstallerPolicy::ComponentReady(
|
||||||
|
const base::Version& version,
|
||||||
|
const base::FilePath& install_dir,
|
||||||
|
std::unique_ptr<base::DictionaryValue> manifest) {
|
||||||
|
delegate_->ComponentReady(version, install_dir, std::move(manifest));
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegisterWebViewAppsPackageNamesAllowlistComponent(
|
||||||
|
base::OnceCallback<bool(const update_client::CrxComponent&)>
|
||||||
|
register_callback,
|
||||||
|
base::OnceClosure registration_finished) {
|
||||||
|
base::MakeRefCounted<component_updater::ComponentInstaller>(
|
||||||
|
std::make_unique<AwPackageNamesAllowlistComponentInstallerPolicy>())
|
||||||
|
->Register(std::move(register_callback),
|
||||||
|
std::move(registration_finished));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AwPackageNamesAllowlistComponentInstallerPolicy::
|
||||||
|
SupportsGroupPolicyEnabledComponentUpdates() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AwPackageNamesAllowlistComponentInstallerPolicy::
|
||||||
|
RequiresNetworkEncryption() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called during startup and installation before ComponentReady().
|
||||||
|
bool AwPackageNamesAllowlistComponentInstallerPolicy::VerifyInstallation(
|
||||||
|
const base::DictionaryValue& manifest,
|
||||||
|
const base::FilePath& install_dir) const {
|
||||||
|
return manifest.HasKey(kWebViewAppsPackageNamesAllowlistName);
|
||||||
|
}
|
||||||
|
|
||||||
|
base::FilePath
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy::GetRelativeInstallDir() const {
|
||||||
|
return base::FilePath(FILE_PATH_LITERAL("WebViewAppsPackageNamesAllowlist"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AwPackageNamesAllowlistComponentInstallerPolicy::GetHash(
|
||||||
|
std::vector<uint8_t>* hash) const {
|
||||||
|
DCHECK(hash);
|
||||||
|
hash->assign(
|
||||||
|
kWebViewAppsPackageNamesAllowlistPublicKeySHA256,
|
||||||
|
kWebViewAppsPackageNamesAllowlistPublicKeySHA256 +
|
||||||
|
base::size(kWebViewAppsPackageNamesAllowlistPublicKeySHA256));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string AwPackageNamesAllowlistComponentInstallerPolicy::GetName() const {
|
||||||
|
return kWebViewAppsPackageNamesAllowlistName;
|
||||||
|
}
|
||||||
|
|
||||||
|
update_client::InstallerAttributes
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy::GetInstallerAttributes()
|
||||||
|
const {
|
||||||
|
return update_client::InstallerAttributes();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace android_webview
|
71
android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.h
Normal file
71
android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.h
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
// Copyright 2021 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.
|
||||||
|
|
||||||
|
#ifndef ANDROID_WEBVIEW_NONEMBEDDED_COMPONENT_UPDATER_INSTALLER_POLICIES_AW_PACKAGE_NAMES_ALLOWLIST_COMPONENT_INSTALLER_POLICY_H_
|
||||||
|
#define ANDROID_WEBVIEW_NONEMBEDDED_COMPONENT_UPDATER_INSTALLER_POLICIES_AW_PACKAGE_NAMES_ALLOWLIST_COMPONENT_INSTALLER_POLICY_H_
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "android_webview/nonembedded/component_updater/aw_component_installer_policy_delegate.h"
|
||||||
|
#include "base/callback.h"
|
||||||
|
#include "base/files/file_path.h"
|
||||||
|
#include "base/values.h"
|
||||||
|
#include "base/version.h"
|
||||||
|
#include "components/component_updater/component_installer.h"
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
class DictionaryValue;
|
||||||
|
class FilePath;
|
||||||
|
class Version;
|
||||||
|
} // namespace base
|
||||||
|
|
||||||
|
namespace android_webview {
|
||||||
|
|
||||||
|
class AwPackageNamesAllowlistComponentInstallerPolicy
|
||||||
|
: public component_updater::ComponentInstallerPolicy {
|
||||||
|
public:
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy();
|
||||||
|
~AwPackageNamesAllowlistComponentInstallerPolicy() override;
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy(
|
||||||
|
const AwPackageNamesAllowlistComponentInstallerPolicy&) = delete;
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicy& operator=(
|
||||||
|
const AwPackageNamesAllowlistComponentInstallerPolicy&) = delete;
|
||||||
|
|
||||||
|
void GetHash(std::vector<uint8_t>* hash) const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// The following methods override ComponentInstallerPolicy.
|
||||||
|
bool SupportsGroupPolicyEnabledComponentUpdates() const override;
|
||||||
|
bool RequiresNetworkEncryption() const override;
|
||||||
|
update_client::CrxInstaller::Result OnCustomInstall(
|
||||||
|
const base::DictionaryValue& manifest,
|
||||||
|
const base::FilePath& install_dir) override;
|
||||||
|
void OnCustomUninstall() override;
|
||||||
|
bool VerifyInstallation(const base::DictionaryValue& manifest,
|
||||||
|
const base::FilePath& install_dir) const override;
|
||||||
|
void ComponentReady(const base::Version& version,
|
||||||
|
const base::FilePath& install_dir,
|
||||||
|
std::unique_ptr<base::DictionaryValue> manifest) override;
|
||||||
|
base::FilePath GetRelativeInstallDir() const override;
|
||||||
|
std::string GetName() const override;
|
||||||
|
update_client::InstallerAttributes GetInstallerAttributes() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unique_ptr<AwComponentInstallerPolicyDelegate> delegate_;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Call once during startup to make the component update service aware of
|
||||||
|
// the package name logging component.
|
||||||
|
void RegisterWebViewAppsPackageNamesAllowlistComponent(
|
||||||
|
base::OnceCallback<bool(const update_client::CrxComponent&)>
|
||||||
|
register_callback,
|
||||||
|
base::OnceClosure registration_finished);
|
||||||
|
|
||||||
|
} // namespace android_webview
|
||||||
|
|
||||||
|
#endif // ANDROID_WEBVIEW_NONEMBEDDED_COMPONENT_UPDATER_INSTALLER_POLICIES_AW_PACKAGE_NAMES_ALLOWLIST_COMPONENT_INSTALLER_POLICY_H_
|
60
android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy_unittest.cc
Normal file
60
android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy_unittest.cc
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
// Copyright 2021 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.
|
||||||
|
|
||||||
|
#include "android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "android_webview/common/aw_switches.h"
|
||||||
|
#include "base/memory/ref_counted.h"
|
||||||
|
#include "base/memory/scoped_refptr.h"
|
||||||
|
#include "base/stl_util.h"
|
||||||
|
#include "base/test/task_environment.h"
|
||||||
|
#include "base/values.h"
|
||||||
|
#include "base/version.h"
|
||||||
|
#include "components/update_client/utils.h"
|
||||||
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
|
||||||
|
namespace android_webview {
|
||||||
|
|
||||||
|
const uint8_t kWebViewAppsPackageNamesAllowlistPublicKeySHA256[32] = {
|
||||||
|
0x04, 0xcb, 0xb8, 0xd5, 0xf9, 0x36, 0x2b, 0x36, 0x04, 0xb2, 0x60,
|
||||||
|
0xaf, 0x9c, 0x04, 0xa1, 0x08, 0xa3, 0xe9, 0xdc, 0x92, 0x46, 0xe7,
|
||||||
|
0xae, 0xc8, 0x3e, 0x32, 0x6f, 0x74, 0x43, 0x02, 0xf3, 0x7e};
|
||||||
|
|
||||||
|
class AwPackageNamesAllowlistComponentInstallerPolicyTest
|
||||||
|
: public ::testing::Test {
|
||||||
|
public:
|
||||||
|
AwPackageNamesAllowlistComponentInstallerPolicyTest() = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
base::test::TaskEnvironment env_;
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO(crbug.com/1202702): Add a test that calls
|
||||||
|
// RegisterWebViewAppsPackageNamesAllowlistComponent() and checks that
|
||||||
|
// registration_finished is called.
|
||||||
|
|
||||||
|
TEST_F(AwPackageNamesAllowlistComponentInstallerPolicyTest, ComponentHash) {
|
||||||
|
auto policy =
|
||||||
|
std::make_unique<AwPackageNamesAllowlistComponentInstallerPolicy>();
|
||||||
|
|
||||||
|
std::vector<uint8_t> expected;
|
||||||
|
expected.assign(
|
||||||
|
kWebViewAppsPackageNamesAllowlistPublicKeySHA256,
|
||||||
|
kWebViewAppsPackageNamesAllowlistPublicKeySHA256 +
|
||||||
|
base::size(kWebViewAppsPackageNamesAllowlistPublicKeySHA256));
|
||||||
|
|
||||||
|
std::vector<uint8_t> actual;
|
||||||
|
policy->GetHash(&actual);
|
||||||
|
|
||||||
|
EXPECT_EQ(expected, actual);
|
||||||
|
|
||||||
|
std::string expected_id = "aemllinfpjdgcldgaelcgakpjmaekbai";
|
||||||
|
std::string actual_id = update_client::GetCrxIdFromPublicKeyHash(actual);
|
||||||
|
|
||||||
|
EXPECT_EQ(expected_id, actual_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace android_webview
|
@@ -6,26 +6,40 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#include "android_webview/common/aw_switches.h"
|
||||||
#include "android_webview/nonembedded/component_updater/installer_policies/aw_origin_trials_component_installer.h"
|
#include "android_webview/nonembedded/component_updater/installer_policies/aw_origin_trials_component_installer.h"
|
||||||
|
#include "android_webview/nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy.h"
|
||||||
#include "android_webview/nonembedded/component_updater/installer_policies/aw_trust_token_key_commitments_component_installer_policy.h"
|
#include "android_webview/nonembedded/component_updater/installer_policies/aw_trust_token_key_commitments_component_installer_policy.h"
|
||||||
#include "base/barrier_closure.h"
|
#include "base/barrier_closure.h"
|
||||||
#include "base/callback.h"
|
#include "base/callback.h"
|
||||||
#include "base/callback_helpers.h"
|
#include "base/callback_helpers.h"
|
||||||
|
#include "base/command_line.h"
|
||||||
|
|
||||||
namespace android_webview {
|
namespace android_webview {
|
||||||
|
|
||||||
// Update when changing the components WebView registers.
|
// Update when changing the components WebView registers.
|
||||||
constexpr int kNumWebViewComponents = 2;
|
constexpr int kNumWebViewComponents = 3;
|
||||||
|
|
||||||
void RegisterComponentsForUpdate(
|
void RegisterComponentsForUpdate(
|
||||||
base::RepeatingCallback<bool(const update_client::CrxComponent&)>
|
base::RepeatingCallback<bool(const update_client::CrxComponent&)>
|
||||||
register_callback,
|
register_callback,
|
||||||
base::OnceClosure on_finished) {
|
base::OnceClosure on_finished) {
|
||||||
|
// TODO(crbug.com/1202702): remove command line flag
|
||||||
|
bool package_names_allowlist_enabled =
|
||||||
|
base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||||
|
switches::kWebViewAppsPackageNamesAllowlist);
|
||||||
|
int num_webview_components =
|
||||||
|
package_names_allowlist_enabled ? kNumWebViewComponents : 2;
|
||||||
|
|
||||||
base::RepeatingClosure barrier_closure = base::BarrierClosure(
|
base::RepeatingClosure barrier_closure = base::BarrierClosure(
|
||||||
kNumWebViewComponents, base::BindOnce(std::move(on_finished)));
|
num_webview_components, base::BindOnce(std::move(on_finished)));
|
||||||
|
|
||||||
RegisterOriginTrialsComponent(register_callback, barrier_closure);
|
RegisterOriginTrialsComponent(register_callback, barrier_closure);
|
||||||
RegisterTrustTokensComponent(register_callback, barrier_closure);
|
RegisterTrustTokensComponent(register_callback, barrier_closure);
|
||||||
|
if (package_names_allowlist_enabled) {
|
||||||
|
RegisterWebViewAppsPackageNamesAllowlistComponent(register_callback,
|
||||||
|
barrier_closure);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace android_webview
|
} // namespace android_webview
|
||||||
|
@@ -533,6 +533,7 @@ test("android_webview_unittests") {
|
|||||||
"../nonembedded/component_updater/aw_component_installer_policy_delegate_unittest.cc",
|
"../nonembedded/component_updater/aw_component_installer_policy_delegate_unittest.cc",
|
||||||
"../nonembedded/component_updater/aw_component_update_service_test.cc",
|
"../nonembedded/component_updater/aw_component_update_service_test.cc",
|
||||||
"../nonembedded/component_updater/aw_component_updater_configurator_unittest.cc",
|
"../nonembedded/component_updater/aw_component_updater_configurator_unittest.cc",
|
||||||
|
"../nonembedded/component_updater/installer_policies/aw_package_names_allowlist_component_installer_policy_unittest.cc",
|
||||||
]
|
]
|
||||||
|
|
||||||
deps += [ "//v8:v8_external_startup_data_assets" ]
|
deps += [ "//v8:v8_external_startup_data_assets" ]
|
||||||
|
Reference in New Issue
Block a user