// 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.
#import "ios/web/navigation/wk_navigation_action_policy_util.h"
#import "base/feature_list.h"
#import "ios/web/common/features.h"
#import "ios/web/navigation/block_universal_links_buildflags.h"
namespace web {
const WKNavigationActionPolicy
kNavigationActionPolicyAllowAndBlockUniversalLinks =
static_cast<WKNavigationActionPolicy>(WKNavigationActionPolicyAllow +
2);
WKNavigationActionPolicy GetAllowNavigationActionPolicy(bool block_universal) {
// When both the `block_universal_links_in_off_the_record` gn arg and the
// `web::features::kBlockUniversalLinksInOffTheRecordMode` feature flag are
// enabled, the returned value will block opening native applications if
// `off_the_record` is true to prevent sharing off the record state.
#if BUILDFLAG(BLOCK_UNIVERSAL_LINKS_IN_OFF_THE_RECORD_MODE)
bool block_universal_links_enabled = base::FeatureList::IsEnabled(
web::features::kBlockUniversalLinksInOffTheRecordMode);
if (block_universal && block_universal_links_enabled) {
return kNavigationActionPolicyAllowAndBlockUniversalLinks;
}
#endif // BUILDFLAG(BLOCK_UNIVERSAL_LINKS_IN_OFF_THE_RECORD_MODE)
return WKNavigationActionPolicyAllow;
}
} // namespace web