| Index: chrome/browser/extensions/api/serial/serial_connection.cc
|
| diff --git a/chrome/browser/extensions/api/serial/serial_connection.cc b/chrome/browser/extensions/api/serial/serial_connection.cc
|
| deleted file mode 100644
|
| index ee8d215b0a5c0e9378485e8c47b84837dfb7bd05..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/api/serial/serial_connection.cc
|
| +++ /dev/null
|
| @@ -1,381 +0,0 @@
|
| -// Copyright 2012 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 "chrome/browser/extensions/api/serial/serial_connection.h"
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/files/file_path.h"
|
| -#include "base/lazy_instance.h"
|
| -#include "chrome/common/extensions/api/serial.h"
|
| -#include "extensions/browser/api/api_resource_manager.h"
|
| -
|
| -namespace extensions {
|
| -
|
| -namespace {
|
| -
|
| -const int kDefaultBufferSize = 4096;
|
| -
|
| -api::serial::SendError ConvertSendErrorFromMojo(
|
| - device::serial::SendError input) {
|
| - switch (input) {
|
| - case device::serial::SEND_ERROR_NONE:
|
| - return api::serial::SEND_ERROR_NONE;
|
| - case device::serial::SEND_ERROR_DISCONNECTED:
|
| - return api::serial::SEND_ERROR_DISCONNECTED;
|
| - case device::serial::SEND_ERROR_PENDING:
|
| - return api::serial::SEND_ERROR_PENDING;
|
| - case device::serial::SEND_ERROR_TIMEOUT:
|
| - return api::serial::SEND_ERROR_TIMEOUT;
|
| - case device::serial::SEND_ERROR_SYSTEM_ERROR:
|
| - return api::serial::SEND_ERROR_SYSTEM_ERROR;
|
| - }
|
| - return api::serial::SEND_ERROR_NONE;
|
| -}
|
| -
|
| -api::serial::ReceiveError ConvertReceiveErrorFromMojo(
|
| - device::serial::ReceiveError input) {
|
| - switch (input) {
|
| - case device::serial::RECEIVE_ERROR_NONE:
|
| - return api::serial::RECEIVE_ERROR_NONE;
|
| - case device::serial::RECEIVE_ERROR_DISCONNECTED:
|
| - return api::serial::RECEIVE_ERROR_DISCONNECTED;
|
| - case device::serial::RECEIVE_ERROR_TIMEOUT:
|
| - return api::serial::RECEIVE_ERROR_TIMEOUT;
|
| - case device::serial::RECEIVE_ERROR_DEVICE_LOST:
|
| - return api::serial::RECEIVE_ERROR_DEVICE_LOST;
|
| - case device::serial::RECEIVE_ERROR_SYSTEM_ERROR:
|
| - return api::serial::RECEIVE_ERROR_SYSTEM_ERROR;
|
| - }
|
| - return api::serial::RECEIVE_ERROR_NONE;
|
| -}
|
| -
|
| -api::serial::DataBits ConvertDataBitsFromMojo(device::serial::DataBits input) {
|
| - switch (input) {
|
| - case device::serial::DATA_BITS_NONE:
|
| - return api::serial::DATA_BITS_NONE;
|
| - case device::serial::DATA_BITS_SEVEN:
|
| - return api::serial::DATA_BITS_SEVEN;
|
| - case device::serial::DATA_BITS_EIGHT:
|
| - return api::serial::DATA_BITS_EIGHT;
|
| - }
|
| - return api::serial::DATA_BITS_NONE;
|
| -}
|
| -
|
| -device::serial::DataBits ConvertDataBitsToMojo(api::serial::DataBits input) {
|
| - switch (input) {
|
| - case api::serial::DATA_BITS_NONE:
|
| - return device::serial::DATA_BITS_NONE;
|
| - case api::serial::DATA_BITS_SEVEN:
|
| - return device::serial::DATA_BITS_SEVEN;
|
| - case api::serial::DATA_BITS_EIGHT:
|
| - return device::serial::DATA_BITS_EIGHT;
|
| - }
|
| - return device::serial::DATA_BITS_NONE;
|
| -}
|
| -
|
| -api::serial::ParityBit ConvertParityBitFromMojo(
|
| - device::serial::ParityBit input) {
|
| - switch (input) {
|
| - case device::serial::PARITY_BIT_NONE:
|
| - return api::serial::PARITY_BIT_NONE;
|
| - case device::serial::PARITY_BIT_ODD:
|
| - return api::serial::PARITY_BIT_ODD;
|
| - case device::serial::PARITY_BIT_NO:
|
| - return api::serial::PARITY_BIT_NO;
|
| - case device::serial::PARITY_BIT_EVEN:
|
| - return api::serial::PARITY_BIT_EVEN;
|
| - }
|
| - return api::serial::PARITY_BIT_NONE;
|
| -}
|
| -
|
| -device::serial::ParityBit ConvertParityBitToMojo(api::serial::ParityBit input) {
|
| - switch (input) {
|
| - case api::serial::PARITY_BIT_NONE:
|
| - return device::serial::PARITY_BIT_NONE;
|
| - case api::serial::PARITY_BIT_NO:
|
| - return device::serial::PARITY_BIT_NO;
|
| - case api::serial::PARITY_BIT_ODD:
|
| - return device::serial::PARITY_BIT_ODD;
|
| - case api::serial::PARITY_BIT_EVEN:
|
| - return device::serial::PARITY_BIT_EVEN;
|
| - }
|
| - return device::serial::PARITY_BIT_NONE;
|
| -}
|
| -
|
| -api::serial::StopBits ConvertStopBitsFromMojo(device::serial::StopBits input) {
|
| - switch (input) {
|
| - case device::serial::STOP_BITS_NONE:
|
| - return api::serial::STOP_BITS_NONE;
|
| - case device::serial::STOP_BITS_ONE:
|
| - return api::serial::STOP_BITS_ONE;
|
| - case device::serial::STOP_BITS_TWO:
|
| - return api::serial::STOP_BITS_TWO;
|
| - }
|
| - return api::serial::STOP_BITS_NONE;
|
| -}
|
| -
|
| -device::serial::StopBits ConvertStopBitsToMojo(api::serial::StopBits input) {
|
| - switch (input) {
|
| - case api::serial::STOP_BITS_NONE:
|
| - return device::serial::STOP_BITS_NONE;
|
| - case api::serial::STOP_BITS_ONE:
|
| - return device::serial::STOP_BITS_ONE;
|
| - case api::serial::STOP_BITS_TWO:
|
| - return device::serial::STOP_BITS_TWO;
|
| - }
|
| - return device::serial::STOP_BITS_NONE;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -static base::LazyInstance<
|
| - BrowserContextKeyedAPIFactory<ApiResourceManager<SerialConnection> > >
|
| - g_factory = LAZY_INSTANCE_INITIALIZER;
|
| -
|
| -// static
|
| -template <>
|
| -BrowserContextKeyedAPIFactory<ApiResourceManager<SerialConnection> >*
|
| -ApiResourceManager<SerialConnection>::GetFactoryInstance() {
|
| - return g_factory.Pointer();
|
| -}
|
| -
|
| -SerialConnection::SerialConnection(const std::string& port,
|
| - const std::string& owner_extension_id)
|
| - : ApiResource(owner_extension_id),
|
| - port_(port),
|
| - persistent_(false),
|
| - buffer_size_(kDefaultBufferSize),
|
| - receive_timeout_(0),
|
| - send_timeout_(0),
|
| - paused_(false),
|
| - io_handler_(device::SerialIoHandler::Create()) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - io_handler_->Initialize(
|
| - base::Bind(&SerialConnection::OnAsyncReadComplete, AsWeakPtr()),
|
| - base::Bind(&SerialConnection::OnAsyncWriteComplete, AsWeakPtr()),
|
| - content::BrowserThread::GetMessageLoopProxyForThread(
|
| - content::BrowserThread::FILE));
|
| -}
|
| -
|
| -SerialConnection::~SerialConnection() {
|
| - io_handler_->CancelRead(device::serial::RECEIVE_ERROR_DISCONNECTED);
|
| - io_handler_->CancelWrite(device::serial::SEND_ERROR_DISCONNECTED);
|
| -}
|
| -
|
| -bool SerialConnection::IsPersistent() const { return persistent(); }
|
| -
|
| -void SerialConnection::set_buffer_size(int buffer_size) {
|
| - buffer_size_ = buffer_size;
|
| -}
|
| -
|
| -void SerialConnection::set_receive_timeout(int receive_timeout) {
|
| - receive_timeout_ = receive_timeout;
|
| -}
|
| -
|
| -void SerialConnection::set_send_timeout(int send_timeout) {
|
| - send_timeout_ = send_timeout;
|
| -}
|
| -
|
| -void SerialConnection::set_paused(bool paused) {
|
| - paused_ = paused;
|
| - if (paused) {
|
| - io_handler_->CancelRead(device::serial::RECEIVE_ERROR_NONE);
|
| - }
|
| -}
|
| -
|
| -void SerialConnection::Open(const OpenCompleteCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - io_handler_->Open(port_, callback);
|
| -}
|
| -
|
| -bool SerialConnection::Receive(const ReceiveCompleteCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - if (!receive_complete_.is_null())
|
| - return false;
|
| - receive_complete_ = callback;
|
| - io_handler_->Read(buffer_size_);
|
| - receive_timeout_task_.reset();
|
| - if (receive_timeout_ > 0) {
|
| - receive_timeout_task_.reset(new TimeoutTask(
|
| - base::Bind(&SerialConnection::OnReceiveTimeout, AsWeakPtr()),
|
| - base::TimeDelta::FromMilliseconds(receive_timeout_)));
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool SerialConnection::Send(const std::string& data,
|
| - const SendCompleteCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - if (!send_complete_.is_null())
|
| - return false;
|
| - send_complete_ = callback;
|
| - io_handler_->Write(data);
|
| - send_timeout_task_.reset();
|
| - if (send_timeout_ > 0) {
|
| - send_timeout_task_.reset(new TimeoutTask(
|
| - base::Bind(&SerialConnection::OnSendTimeout, AsWeakPtr()),
|
| - base::TimeDelta::FromMilliseconds(send_timeout_)));
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool SerialConnection::Configure(
|
| - const api::serial::ConnectionOptions& options) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - if (options.persistent.get())
|
| - set_persistent(*options.persistent);
|
| - if (options.name.get())
|
| - set_name(*options.name);
|
| - if (options.buffer_size.get())
|
| - set_buffer_size(*options.buffer_size);
|
| - if (options.receive_timeout.get())
|
| - set_receive_timeout(*options.receive_timeout);
|
| - if (options.send_timeout.get())
|
| - set_send_timeout(*options.send_timeout);
|
| - bool success = io_handler_->ConfigurePort(
|
| - *device::serial::ConnectionOptions::From(options));
|
| - io_handler_->CancelRead(device::serial::RECEIVE_ERROR_NONE);
|
| - return success;
|
| -}
|
| -
|
| -void SerialConnection::SetIoHandlerForTest(
|
| - scoped_refptr<device::SerialIoHandler> handler) {
|
| - io_handler_ = handler;
|
| - io_handler_->Initialize(
|
| - base::Bind(&SerialConnection::OnAsyncReadComplete, AsWeakPtr()),
|
| - base::Bind(&SerialConnection::OnAsyncWriteComplete, AsWeakPtr()),
|
| - content::BrowserThread::GetMessageLoopProxyForThread(
|
| - content::BrowserThread::FILE));
|
| -}
|
| -
|
| -bool SerialConnection::GetInfo(api::serial::ConnectionInfo* info) const {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - info->paused = paused_;
|
| - info->persistent = persistent_;
|
| - info->name = name_;
|
| - info->buffer_size = buffer_size_;
|
| - info->receive_timeout = receive_timeout_;
|
| - info->send_timeout = send_timeout_;
|
| - device::serial::ConnectionInfoPtr port_info = io_handler_->GetPortInfo();
|
| - if (!port_info)
|
| - return false;
|
| -
|
| - info->bitrate.reset(new int(port_info->bitrate));
|
| - info->data_bits = ConvertDataBitsFromMojo(port_info->data_bits);
|
| - info->parity_bit = ConvertParityBitFromMojo(port_info->parity_bit);
|
| - info->stop_bits = ConvertStopBitsFromMojo(port_info->stop_bits);
|
| - info->cts_flow_control.reset(new bool(port_info->cts_flow_control));
|
| - return true;
|
| -}
|
| -
|
| -bool SerialConnection::Flush() const {
|
| - return io_handler_->Flush();
|
| -}
|
| -
|
| -bool SerialConnection::GetControlSignals(
|
| - api::serial::DeviceControlSignals* control_signals) const {
|
| - device::serial::DeviceControlSignalsPtr signals =
|
| - io_handler_->GetControlSignals();
|
| - if (!signals)
|
| - return false;
|
| -
|
| - control_signals->dcd = signals->dcd;
|
| - control_signals->cts = signals->cts;
|
| - control_signals->ri = signals->ri;
|
| - control_signals->dsr = signals->dsr;
|
| - return true;
|
| -}
|
| -
|
| -bool SerialConnection::SetControlSignals(
|
| - const api::serial::HostControlSignals& control_signals) {
|
| - return io_handler_->SetControlSignals(
|
| - *device::serial::HostControlSignals::From(control_signals));
|
| -}
|
| -
|
| -void SerialConnection::OnReceiveTimeout() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - io_handler_->CancelRead(device::serial::RECEIVE_ERROR_TIMEOUT);
|
| -}
|
| -
|
| -void SerialConnection::OnSendTimeout() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - io_handler_->CancelWrite(device::serial::SEND_ERROR_TIMEOUT);
|
| -}
|
| -
|
| -void SerialConnection::OnAsyncReadComplete(const std::string& data,
|
| - device::serial::ReceiveError error) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - DCHECK(!receive_complete_.is_null());
|
| - ReceiveCompleteCallback callback = receive_complete_;
|
| - receive_complete_.Reset();
|
| - receive_timeout_task_.reset();
|
| - callback.Run(data, ConvertReceiveErrorFromMojo(error));
|
| -}
|
| -
|
| -void SerialConnection::OnAsyncWriteComplete(int bytes_sent,
|
| - device::serial::SendError error) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - DCHECK(!send_complete_.is_null());
|
| - SendCompleteCallback callback = send_complete_;
|
| - send_complete_.Reset();
|
| - send_timeout_task_.reset();
|
| - callback.Run(bytes_sent, ConvertSendErrorFromMojo(error));
|
| -}
|
| -
|
| -SerialConnection::TimeoutTask::TimeoutTask(const base::Closure& closure,
|
| - const base::TimeDelta& delay)
|
| - : weak_factory_(this), closure_(closure), delay_(delay) {
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&TimeoutTask::Run, weak_factory_.GetWeakPtr()),
|
| - delay_);
|
| -}
|
| -
|
| -SerialConnection::TimeoutTask::~TimeoutTask() {}
|
| -
|
| -void SerialConnection::TimeoutTask::Run() const { closure_.Run(); }
|
| -
|
| -} // namespace extensions
|
| -
|
| -namespace mojo {
|
| -
|
| -// static
|
| -device::serial::HostControlSignalsPtr
|
| -TypeConverter<device::serial::HostControlSignalsPtr,
|
| - extensions::api::serial::HostControlSignals>::
|
| - ConvertFrom(const extensions::api::serial::HostControlSignals& input) {
|
| - device::serial::HostControlSignalsPtr output(
|
| - device::serial::HostControlSignals::New());
|
| - if (input.dtr.get()) {
|
| - output->has_dtr = true;
|
| - output->dtr = *input.dtr;
|
| - }
|
| - if (input.rts.get()) {
|
| - output->has_rts = true;
|
| - output->rts = *input.rts;
|
| - }
|
| - return output.Pass();
|
| -}
|
| -
|
| -// static
|
| -device::serial::ConnectionOptionsPtr
|
| -TypeConverter<device::serial::ConnectionOptionsPtr,
|
| - extensions::api::serial::ConnectionOptions>::
|
| - ConvertFrom(const extensions::api::serial::ConnectionOptions& input) {
|
| - device::serial::ConnectionOptionsPtr output(
|
| - device::serial::ConnectionOptions::New());
|
| - if (input.bitrate.get() && *input.bitrate > 0)
|
| - output->bitrate = *input.bitrate;
|
| - output->data_bits = extensions::ConvertDataBitsToMojo(input.data_bits);
|
| - output->parity_bit = extensions::ConvertParityBitToMojo(input.parity_bit);
|
| - output->stop_bits = extensions::ConvertStopBitsToMojo(input.stop_bits);
|
| - if (input.cts_flow_control.get()) {
|
| - output->has_cts_flow_control = true;
|
| - output->cts_flow_control = *input.cts_flow_control;
|
| - }
|
| - return output.Pass();
|
| -}
|
| -
|
| -} // namespace mojo
|
|
|