// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_COMPONENTS_SECURITY_INTERSTITIALS_SAFE_BROWSING_SAFE_BROWSING_CLIENT_H_
#define IOS_COMPONENTS_SECURITY_INTERSTITIALS_SAFE_BROWSING_SAFE_BROWSING_CLIENT_H_
#include "base/memory/weak_ptr.h"
#include "components/keyed_service/core/keyed_service.h"
namespace safe_browsing {
class HashRealTimeService;
class RealTimeUrlLookupService;
} // namespace safe_browsing
namespace security_interstitials {
struct UnsafeResource;
} // namespace security_interstitials
namespace variations {
class VariationsService;
} // namespace variations
namespace web {
class WebState;
} // namespace web
class GURL;
class SafeBrowsingService;
// Abstract interface to be implemented by clients of ios safe browsing.
class SafeBrowsingClient : public KeyedService {
public:
// Returns this as a weak pointer.
virtual base::WeakPtr<SafeBrowsingClient> AsWeakPtr() = 0;
// Gets the safe browsing service for this client. Must not be nullptr.
virtual SafeBrowsingService* GetSafeBrowsingService() = 0;
// Gets the real time url look up service. Clients may return nullptr.
virtual safe_browsing::RealTimeUrlLookupService*
GetRealTimeUrlLookupService() = 0;
// Gets the hash-real-time service factory. Client may return nullptr.
virtual safe_browsing::HashRealTimeService* GetHashRealTimeService() = 0;
// Gets the variations service. Clients may return nullptr.
virtual variations::VariationsService* GetVariationsService() = 0;
// Returns whether or not `resource` should be blocked from loading.
virtual bool ShouldBlockUnsafeResource(
const security_interstitials::UnsafeResource& resource) const = 0;
// Called when safe browsing decided to cancel loading in the main frame.
// `web_state` The associated web state.
// `url` The url which was cancelled.
virtual void OnMainFrameUrlQueryCancellationDecided(web::WebState* web_state,
const GURL& url) = 0;
};
#endif // IOS_COMPONENTS_SECURITY_INTERSTITIALS_SAFE_BROWSING_SAFE_BROWSING_CLIENT_H_