chromium/services/accessibility/os_accessibility_service.cc

// 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.

#include "services/accessibility/os_accessibility_service.h"

#include <memory>

#include "services/accessibility/assistive_technology_controller_impl.h"
#include "services/accessibility/features/v8_manager.h"

namespace ax {

OSAccessibilityService::OSAccessibilityService(
    mojo::PendingReceiver<mojom::AccessibilityService> receiver)
    : receiver_(this, std::move(receiver)) {
  at_controller_ = std::make_unique<AssistiveTechnologyControllerImpl>();
}

OSAccessibilityService::~OSAccessibilityService() = default;

void OSAccessibilityService::BindAccessibilityServiceClient(
    mojo::PendingRemote<mojom::AccessibilityServiceClient>
        accessibility_client_remote) {
  at_controller_->BindAccessibilityServiceClient(
      std::move(accessibility_client_remote));
}

void OSAccessibilityService::BindAssistiveTechnologyController(
    mojo::PendingReceiver<mojom::AssistiveTechnologyController>
        at_at_controller_receiver,
    const std::vector<mojom::AssistiveTechnologyType>& enabled_features) {
  at_controller_->Bind(std::move(at_at_controller_receiver));
  at_controller_->EnableAssistiveTechnology(enabled_features);
}

void OSAccessibilityService::ConnectDevToolsAgent(
    mojo::PendingAssociatedReceiver<::blink::mojom::DevToolsAgent> agent,
    mojom::AssistiveTechnologyType type) {
  auto& manager = at_controller_->GetOrCreateV8Manager(type);
  manager.ConnectDevToolsAgent(std::move(agent));
}

}  // namespace ax