blob: 26e35a8f38978821965fab185d97df0f490763dd [file] [log] [blame]
// Copyright 2024 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/chrome/browser/text_selection/model/text_classifier_util.h"
#import "base/command_line.h"
#import "components/optimization_guide/core/hints/optimization_guide_decider.h"
#import "components/optimization_guide/core/hints/optimization_guide_decision.h"
#import "ios/chrome/browser/optimization_guide/model/optimization_guide_service.h"
#import "ios/chrome/browser/optimization_guide/model/optimization_guide_service_factory.h"
#import "ios/chrome/browser/shared/model/profile/profile_ios.h"
#import "ios/chrome/browser/text_selection/model/text_selection_util.h"
bool IsEntitySelectionAllowedForURL(web::WebState* web_state) {
ProfileIOS* profile =
ProfileIOS::FromBrowserState(web_state->GetBrowserState());
CHECK(profile);
OptimizationGuideService* optimization_guide_service =
OptimizationGuideServiceFactory::GetForProfile(profile);
GURL url = web_state->GetLastCommittedURL();
if (!url.is_valid()) {
return false;
}
if (url.host() == base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
kForceAllowDomainForEntitySelection)) {
return true;
}
if (url.HostIsIPAddress()) {
// IP address sites are often private sites that cannot be checked.
return false;
}
return optimization_guide_service->CanApplyOptimization(
url, optimization_guide::proto::TEXT_CLASSIFIER_ENTITY_DETECTION,
/*optimization_metadata=*/nullptr) !=
optimization_guide::OptimizationGuideDecision::kFalse;
}