blob: a24579380616baefb7426258e51ccdad29867749 [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_CONTEXTUAL_TASKS_CONTEXTUAL_TASKS_CONTEXT_CONTROLLER_IMPL_H_
#define CHROME_BROWSER_CONTEXTUAL_TASKS_CONTEXTUAL_TASKS_CONTEXT_CONTROLLER_IMPL_H_
#include <memory>
#include <set>
#include "base/memory/raw_ptr.h"
#include "chrome/browser/contextual_tasks/contextual_tasks_context_controller.h"
#include "components/sessions/core/session_id.h"
#include "url/gurl.h"
namespace contextual_tasks {
class ContextualTasksService;
enum class ContextualTaskContextSource;
} // namespace contextual_tasks
namespace contextual_tasks {
class ContextualTasksContextControllerImpl
: public ContextualTasksContextController {
public:
explicit ContextualTasksContextControllerImpl(
ContextualTasksService* service);
~ContextualTasksContextControllerImpl() override;
// ContextualTasksService implementation.
FeatureEligibility GetFeatureEligibility() override;
bool IsInitialized() override;
ContextualTask CreateTask() override;
ContextualTask CreateTaskFromUrl(const GURL& url) override;
void GetTaskById(const base::Uuid& task_id,
base::OnceCallback<void(std::optional<ContextualTask>)>
callback) const override;
void GetTasks(base::OnceCallback<void(std::vector<ContextualTask>)> callback)
const override;
void DeleteTask(const base::Uuid& task_id) override;
void UpdateThreadForTask(const base::Uuid& task_id,
ThreadType thread_type,
const std::string& server_id,
std::optional<std::string> conversation_turn_id,
std::optional<std::string> title) override;
void RemoveThreadFromTask(const base::Uuid& task_id,
ThreadType type,
const std::string& server_id) override;
std::optional<ContextualTask> GetTaskFromServerId(
ThreadType thread_type,
const std::string& server_id) override;
void AttachUrlToTask(const base::Uuid& task_id, const GURL& url) override;
void DetachUrlFromTask(const base::Uuid& task_id, const GURL& url) override;
void GetContextForTask(
const base::Uuid& task_id,
const std::set<ContextualTaskContextSource>& sources,
base::OnceCallback<void(std::unique_ptr<ContextualTaskContext>)>
context_callback) override;
void AssociateTabWithTask(const base::Uuid& task_id,
SessionID tab_id) override;
void DisassociateTabFromTask(const base::Uuid& task_id,
SessionID tab_id) override;
std::optional<ContextualTask> GetContextualTaskForTab(
SessionID tab_id) const override;
void ClearAllTabAssociationsForTask(const base::Uuid& task_id) override;
void AddObserver(Observer* observer) override;
void RemoveObserver(Observer* observer) override;
base::WeakPtr<syncer::DataTypeControllerDelegate>
GetAiThreadControllerDelegate() override;
private:
raw_ptr<ContextualTasksService> service_;
};
} // namespace contextual_tasks
#endif // CHROME_BROWSER_CONTEXTUAL_TASKS_CONTEXTUAL_TASKS_CONTEXT_CONTROLLER_IMPL_H_