#include "components/page_image_service/image_service_impl.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/i18n/case_conversion.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/raw_ref.h"
#include "base/memory/weak_ptr.h"
#include "base/metrics/histogram_functions.h"
#include "components/omnibox/browser/autocomplete_scheme_classifier.h"
#include "components/omnibox/browser/remote_suggestions_service.h"
#include "components/omnibox/browser/search_suggestion_parser.h"
#include "components/optimization_guide/core/optimization_guide_decider.h"
#include "components/optimization_guide/core/optimization_guide_features.h"
#include "components/optimization_guide/proto/common_types.pb.h"
#include "components/optimization_guide/proto/hints.pb.h"
#include "components/optimization_guide/proto/salient_image_metadata.pb.h"
#include "components/page_image_service/features.h"
#include "components/page_image_service/image_service_consent_helper.h"
#include "components/page_image_service/metrics_util.h"
#include "components/search_engines/search_engine_type.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
#include "services/network/public/cpp/simple_url_loader.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
namespace page_image_service {
namespace {
void FulfillAllCallbacks(std::vector<ImageService::ResultCallback> callbacks,
const GURL& result) { … }
}
class ImageServiceImpl::SuggestEntityImageURLFetcher { … };
ImageServiceImpl::ImageServiceImpl(
TemplateURLService* template_url_service,
RemoteSuggestionsService* remote_suggestions_service,
optimization_guide::OptimizationGuideDecider* opt_guide,
syncer::SyncService* sync_service,
std::unique_ptr<AutocompleteSchemeClassifier>
autocomplete_scheme_classifier)
: … { … }
ImageServiceImpl::OptGuideRequest::OptGuideRequest() = default;
ImageServiceImpl::OptGuideRequest::~OptGuideRequest() = default;
ImageServiceImpl::OptGuideRequest::OptGuideRequest(OptGuideRequest&& other) =
default;
ImageServiceImpl::~ImageServiceImpl() = default;
base::WeakPtr<ImageService> ImageServiceImpl::GetWeakPtr() { … }
void ImageServiceImpl::FetchImageFor(mojom::ClientId client_id,
const GURL& page_url,
const mojom::Options& options,
ResultCallback callback) { … }
void ImageServiceImpl::GetConsentToFetchImage(
mojom::ClientId client_id,
base::OnceCallback<void(PageImageServiceConsentStatus)> callback) { … }
void ImageServiceImpl::OnConsentResult(mojom::ClientId client_id,
const GURL& page_url,
const mojom::Options& options,
ResultCallback callback,
PageImageServiceConsentStatus status) { … }
void ImageServiceImpl::FetchSuggestImage(const TemplateURL* template_url,
const SearchTermsData& search_terms_data,
mojom::ClientId client_id,
const std::u16string& search_query,
const std::string& entity_id,
ResultCallback callback) { … }
void ImageServiceImpl::OnSuggestImageFetched(
std::unique_ptr<SuggestEntityImageURLFetcher> fetcher,
ResultCallback callback,
const GURL& image_url) { … }
void ImageServiceImpl::FetchOptimizationGuideImage(mojom::ClientId client_id,
const GURL& page_url,
ResultCallback callback) { … }
void ImageServiceImpl::ProcessAllBatchedOptimizationGuideRequests(
mojom::ClientId client_id) { … }
void ImageServiceImpl::OnOptimizationGuideImageFetched(
mojom::ClientId client_id,
const GURL& url,
const base::flat_map<
optimization_guide::proto::OptimizationType,
optimization_guide::OptimizationGuideDecisionWithMetadata>& decisions) { … }
}