blob: 2ecb34099b619bae9edfa93f3574d7ea592bbdf5 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/video_capture/public/cpp/mock_receiver.h"
#include "base/stl_util.h"
#include "services/video_capture/public/mojom/scoped_access_permission.mojom.h"
namespace video_capture {
MockReceiver::MockReceiver()
: binding_(this), should_store_access_permissions_(false) {}
MockReceiver::MockReceiver(mojom::ReceiverRequest request)
: binding_(this, std::move(request)),
should_store_access_permissions_(false) {}
MockReceiver::~MockReceiver() = default;
void MockReceiver::HoldAccessPermissions() {
should_store_access_permissions_ = true;
}
void MockReceiver::ReleaseAccessPermissions() {
should_store_access_permissions_ = false;
access_permissions_.clear();
}
void MockReceiver::OnNewBuffer(
int32_t buffer_id,
media::mojom::VideoBufferHandlePtr buffer_handle) {
CHECK(!base::Contains(known_buffer_ids_, buffer_id));
known_buffer_ids_.push_back(buffer_id);
DoOnNewBuffer(buffer_id, &buffer_handle);
}
void MockReceiver::OnFrameReadyInBuffer(
int32_t buffer_id,
int32_t frame_feedback_id,
mojom::ScopedAccessPermissionPtr access_permission,
media::mojom::VideoFrameInfoPtr frame_info) {
DoOnFrameReadyInBuffer(buffer_id, frame_feedback_id, &access_permission,
&frame_info);
if (should_store_access_permissions_)
access_permissions_.emplace_back(std::move(access_permission));
}
void MockReceiver::OnBufferRetired(int32_t buffer_id) {
auto iter =
std::find(known_buffer_ids_.begin(), known_buffer_ids_.end(), buffer_id);
CHECK(iter != known_buffer_ids_.end());
known_buffer_ids_.erase(iter);
DoOnBufferRetired(buffer_id);
}
} // namespace video_capture