910e62b5创建于 1月15日历史提交
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/actor/actor_task_metadata.h"

#include "url/gurl.h"

namespace actor {

ActorTaskMetadata::ActorTaskMetadata() = default;

ActorTaskMetadata::ActorTaskMetadata(ActorTaskMetadata&&) = default;

ActorTaskMetadata& ActorTaskMetadata::operator=(const ActorTaskMetadata&) =
    default;

ActorTaskMetadata::ActorTaskMetadata(
    const optimization_guide::proto::Actions& actions) {
  if (!actions.has_task_metadata()) {
    return;
  }
  const optimization_guide::proto::TaskMetadata& task_metadata =
      actions.task_metadata();
  if (!task_metadata.has_security()) {
    return;
  }
  const optimization_guide::proto::SecurityMetadata& security =
      task_metadata.security();
  for (const std::string_view added_origin :
       security.added_writable_mainframe_origins()) {
    auto parsed_origin = url::Origin::Create(GURL(added_origin));
    if (!parsed_origin.opaque()) {
      added_writable_mainframe_origins_.insert(std::move(parsed_origin));
    }
  }
}

ActorTaskMetadata::~ActorTaskMetadata() = default;

ActorTaskMetadata
ActorTaskMetadata::WithAddedWritableMainframeOriginsForTesting(
    std::vector<url::Origin> origins) {
  ActorTaskMetadata metadata;
  for (auto origin : origins) {
    metadata.added_writable_mainframe_origins_.insert(std::move(origin));
  }
  return metadata;
}

}  // namespace actor