#include "content/browser/shared_storage/shared_storage_header_observer.h"
#include <deque>
#include <iterator>
#include <map>
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/metrics/histogram_functions.h"
#include "base/notreached.h"
#include "base/strings/utf_string_conversions.h"
#include "components/services/storage/shared_storage/shared_storage_manager.h"
#include "content/browser/bad_message.h"
#include "content/browser/navigation_or_document_handle.h"
#include "content/browser/renderer_host/frame_tree_node.h"
#include "content/browser/shared_storage/shared_storage_event_params.h"
#include "content/browser/shared_storage/shared_storage_worklet_host_manager.h"
#include "content/browser/storage_partition_impl.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/common/content_client.h"
#include "services/network/public/cpp/is_potentially_trustworthy.h"
#include "services/network/public/mojom/optional_bool.mojom.h"
#include "third_party/blink/public/common/shared_storage/shared_storage_utils.h"
namespace content {
namespace {
OperationPtr;
ContextType;
bool IsSharedStorageAllowedByPermissionsPolicy(
SharedStorageHeaderObserver::PermissionsPolicyDoubleCheckStatus
permissions_policy_status) { … }
int GetMainFrameIdFromRFH(RenderFrameHost* rfh) { … }
int GetMainFrameIdFromNavigationOrDocumentHandle(
NavigationOrDocumentHandle* navigation_or_document_handle) { … }
}
SharedStorageHeaderObserver::SharedStorageHeaderObserver(
StoragePartitionImpl* storage_partition)
: … { … }
SharedStorageHeaderObserver::~SharedStorageHeaderObserver() = default;
void SharedStorageHeaderObserver::HeaderReceived(
const url::Origin& request_origin,
ContextType context_type,
NavigationOrDocumentHandle* navigation_or_document_handle,
std::vector<OperationPtr> operations,
base::OnceClosure callback,
mojo::ReportBadMessageCallback bad_message_callback,
bool can_defer) { … }
bool SharedStorageHeaderObserver::Invoke(const url::Origin& request_origin,
int main_frame_id,
OperationPtr operation) { … }
bool SharedStorageHeaderObserver::Set(
const url::Origin& request_origin,
int main_frame_id,
std::string key,
std::string value,
network::mojom::OptionalBool ignore_if_present) { … }
bool SharedStorageHeaderObserver::Append(const url::Origin& request_origin,
int main_frame_id,
std::string key,
std::string value) { … }
bool SharedStorageHeaderObserver::Delete(const url::Origin& request_origin,
int main_frame_id,
std::string key) { … }
bool SharedStorageHeaderObserver::Clear(const url::Origin& request_origin,
int main_frame_id) { … }
storage::SharedStorageManager*
SharedStorageHeaderObserver::GetSharedStorageManager() { … }
SharedStorageHeaderObserver::PermissionsPolicyDoubleCheckStatus
SharedStorageHeaderObserver::DoPermissionsPolicyDoubleCheck(
const url::Origin& request_origin,
ContextType context_type,
NavigationOrDocumentHandle* navigation_or_document_handle) { … }
bool SharedStorageHeaderObserver::IsSharedStorageAllowedBySiteSettings(
NavigationOrDocumentHandle* navigation_or_document_handle,
const url::Origin& request_origin,
std::string* out_debug_message) { … }
void SharedStorageHeaderObserver::NotifySharedStorageAccessed(
AccessType type,
int main_frame_id,
const url::Origin& request_origin,
const SharedStorageEventParams& params) { … }
}