Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1598)

Unified Diff: chrome/browser/extensions/api/serial/serial_api.cc

Issue 369893008: Move the serial API to extensions/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add missing dependency from usb_service to chromeos Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/serial/serial_api.cc
diff --git a/chrome/browser/extensions/api/serial/serial_api.cc b/chrome/browser/extensions/api/serial/serial_api.cc
deleted file mode 100644
index 128c03cba2d4d98aed5baf66cf4761943f816b46..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/api/serial/serial_api.cc
+++ /dev/null
@@ -1,429 +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_api.h"
-
-#include <algorithm>
-
-#include "base/values.h"
-#include "chrome/browser/extensions/api/serial/serial_connection.h"
-#include "chrome/browser/extensions/api/serial/serial_event_dispatcher.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/extensions/api/serial.h"
-#include "content/public/browser/browser_thread.h"
-#include "device/serial/serial_device_enumerator.h"
-#include "extensions/browser/extension_system.h"
-
-using content::BrowserThread;
-
-namespace extensions {
-
-namespace api {
-
-namespace {
-
-// It's a fool's errand to come up with a default bitrate, because we don't get
-// to control both sides of the communication. Unless the other side has
-// implemented auto-bitrate detection (rare), if we pick the wrong rate, then
-// you're gonna have a bad time. Close doesn't count.
-//
-// But we'd like to pick something that has a chance of working, and 9600 is a
-// good balance between popularity and speed. So 9600 it is.
-const int kDefaultBufferSize = 4096;
-const int kDefaultBitrate = 9600;
-const serial::DataBits kDefaultDataBits = serial::DATA_BITS_EIGHT;
-const serial::ParityBit kDefaultParityBit = serial::PARITY_BIT_NO;
-const serial::StopBits kDefaultStopBits = serial::STOP_BITS_ONE;
-const int kDefaultReceiveTimeout = 0;
-const int kDefaultSendTimeout = 0;
-
-const char kErrorConnectFailed[] = "Failed to connect to the port.";
-const char kErrorSerialConnectionNotFound[] = "Serial connection not found.";
-const char kErrorGetControlSignalsFailed[] = "Failed to get control signals.";
-
-template <class T>
-void SetDefaultScopedPtrValue(scoped_ptr<T>& ptr, const T& value) {
- if (!ptr.get())
- ptr.reset(new T(value));
-}
-
-} // namespace
-
-SerialAsyncApiFunction::SerialAsyncApiFunction()
- : manager_(NULL) {
-}
-
-SerialAsyncApiFunction::~SerialAsyncApiFunction() {}
-
-bool SerialAsyncApiFunction::PrePrepare() {
- manager_ = ApiResourceManager<SerialConnection>::Get(browser_context());
- DCHECK(manager_);
- return true;
-}
-
-bool SerialAsyncApiFunction::Respond() {
- return error_.empty();
-}
-
-SerialConnection* SerialAsyncApiFunction::GetSerialConnection(
- int api_resource_id) {
- return manager_->Get(extension_->id(), api_resource_id);
-}
-
-void SerialAsyncApiFunction::RemoveSerialConnection(int api_resource_id) {
- manager_->Remove(extension_->id(), api_resource_id);
-}
-
-SerialGetDevicesFunction::SerialGetDevicesFunction() {}
-
-bool SerialGetDevicesFunction::Prepare() {
- set_work_thread_id(BrowserThread::FILE);
- return true;
-}
-
-void SerialGetDevicesFunction::Work() {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
-
- scoped_ptr<device::SerialDeviceEnumerator> enumerator =
- device::SerialDeviceEnumerator::Create();
- mojo::Array<device::serial::DeviceInfoPtr> devices = enumerator->GetDevices();
- results_ = serial::GetDevices::Results::Create(
- devices.To<std::vector<linked_ptr<serial::DeviceInfo> > >());
-}
-
-SerialConnectFunction::SerialConnectFunction() {}
-
-SerialConnectFunction::~SerialConnectFunction() {}
-
-bool SerialConnectFunction::Prepare() {
- params_ = serial::Connect::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- // Fill in any omitted options to ensure a known initial configuration.
- if (!params_->options.get())
- params_->options.reset(new serial::ConnectionOptions());
- serial::ConnectionOptions* options = params_->options.get();
-
- SetDefaultScopedPtrValue(options->persistent, false);
- SetDefaultScopedPtrValue(options->buffer_size, kDefaultBufferSize);
- SetDefaultScopedPtrValue(options->bitrate, kDefaultBitrate);
- SetDefaultScopedPtrValue(options->cts_flow_control, false);
- SetDefaultScopedPtrValue(options->receive_timeout, kDefaultReceiveTimeout);
- SetDefaultScopedPtrValue(options->send_timeout, kDefaultSendTimeout);
-
- if (options->data_bits == serial::DATA_BITS_NONE)
- options->data_bits = kDefaultDataBits;
- if (options->parity_bit == serial::PARITY_BIT_NONE)
- options->parity_bit = kDefaultParityBit;
- if (options->stop_bits == serial::STOP_BITS_NONE)
- options->stop_bits = kDefaultStopBits;
-
- serial_event_dispatcher_ = SerialEventDispatcher::Get(browser_context());
- DCHECK(serial_event_dispatcher_);
-
- return true;
-}
-
-void SerialConnectFunction::AsyncWorkStart() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- connection_ = CreateSerialConnection(params_->path, extension_->id());
- connection_->Open(base::Bind(&SerialConnectFunction::OnConnected, this));
-}
-
-void SerialConnectFunction::OnConnected(bool success) {
- DCHECK(connection_);
-
- if (success) {
- if (!connection_->Configure(*params_->options.get())) {
- delete connection_;
- connection_ = NULL;
- }
- } else {
- delete connection_;
- connection_ = NULL;
- }
-
- BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SerialConnectFunction::FinishConnect,
- this));
-}
-
-void SerialConnectFunction::FinishConnect() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- if (!connection_) {
- error_ = kErrorConnectFailed;
- } else {
- int id = manager_->Add(connection_);
- serial::ConnectionInfo info;
- info.connection_id = id;
- if (connection_->GetInfo(&info)) {
- serial_event_dispatcher_->PollConnection(extension_->id(), id);
- results_ = serial::Connect::Results::Create(info);
- } else {
- RemoveSerialConnection(id);
- error_ = kErrorConnectFailed;
- }
- }
- AsyncWorkCompleted();
-}
-
-SerialConnection* SerialConnectFunction::CreateSerialConnection(
- const std::string& port, const std::string& extension_id) const {
- return new SerialConnection(port, extension_id);
-}
-
-SerialUpdateFunction::SerialUpdateFunction() {}
-
-SerialUpdateFunction::~SerialUpdateFunction() {}
-
-bool SerialUpdateFunction::Prepare() {
- params_ = serial::Update::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- return true;
-}
-
-void SerialUpdateFunction::Work() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- return;
- }
- bool success = connection->Configure(params_->options);
- results_ = serial::Update::Results::Create(success);
-}
-
-SerialDisconnectFunction::SerialDisconnectFunction() {}
-
-SerialDisconnectFunction::~SerialDisconnectFunction() {}
-
-bool SerialDisconnectFunction::Prepare() {
- params_ = serial::Disconnect::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- return true;
-}
-
-void SerialDisconnectFunction::Work() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- return;
- }
- RemoveSerialConnection(params_->connection_id);
- results_ = serial::Disconnect::Results::Create(true);
-}
-
-SerialSendFunction::SerialSendFunction() {}
-
-SerialSendFunction::~SerialSendFunction() {}
-
-bool SerialSendFunction::Prepare() {
- params_ = serial::Send::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- return true;
-}
-
-void SerialSendFunction::AsyncWorkStart() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- AsyncWorkCompleted();
- return;
- }
-
- if (!connection->Send(params_->data,
- base::Bind(&SerialSendFunction::OnSendComplete,
- this))) {
- OnSendComplete(0, serial::SEND_ERROR_PENDING);
- }
-}
-
-void SerialSendFunction::OnSendComplete(int bytes_sent,
- serial::SendError error) {
- serial::SendInfo send_info;
- send_info.bytes_sent = bytes_sent;
- send_info.error = error;
- results_ = serial::Send::Results::Create(send_info);
- AsyncWorkCompleted();
-}
-
-SerialFlushFunction::SerialFlushFunction() {}
-
-SerialFlushFunction::~SerialFlushFunction() {}
-
-bool SerialFlushFunction::Prepare() {
- params_ = serial::Flush::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
- return true;
-}
-
-void SerialFlushFunction::Work() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- return;
- }
-
- bool success = connection->Flush();
- results_ = serial::Flush::Results::Create(success);
-}
-
-SerialSetPausedFunction::SerialSetPausedFunction() {}
-
-SerialSetPausedFunction::~SerialSetPausedFunction() {}
-
-bool SerialSetPausedFunction::Prepare() {
- params_ = serial::SetPaused::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- serial_event_dispatcher_ = SerialEventDispatcher::Get(browser_context());
- DCHECK(serial_event_dispatcher_);
- return true;
-}
-
-void SerialSetPausedFunction::Work() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- return;
- }
-
- if (params_->paused != connection->paused()) {
- connection->set_paused(params_->paused);
- if (!params_->paused) {
- serial_event_dispatcher_->PollConnection(extension_->id(),
- params_->connection_id);
- }
- }
-
- results_ = serial::SetPaused::Results::Create();
-}
-
-SerialGetInfoFunction::SerialGetInfoFunction() {}
-
-SerialGetInfoFunction::~SerialGetInfoFunction() {}
-
-bool SerialGetInfoFunction::Prepare() {
- params_ = serial::GetInfo::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- return true;
-}
-
-void SerialGetInfoFunction::Work() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- return;
- }
-
- serial::ConnectionInfo info;
- info.connection_id = params_->connection_id;
- connection->GetInfo(&info);
- results_ = serial::GetInfo::Results::Create(info);
-}
-
-SerialGetConnectionsFunction::SerialGetConnectionsFunction() {}
-
-SerialGetConnectionsFunction::~SerialGetConnectionsFunction() {}
-
-bool SerialGetConnectionsFunction::Prepare() {
- return true;
-}
-
-void SerialGetConnectionsFunction::Work() {
- std::vector<linked_ptr<serial::ConnectionInfo> > infos;
- const base::hash_set<int>* connection_ids = manager_->GetResourceIds(
- extension_->id());
- if (connection_ids) {
- for (base::hash_set<int>::const_iterator it = connection_ids->begin();
- it != connection_ids->end(); ++it) {
- int connection_id = *it;
- SerialConnection *connection = GetSerialConnection(connection_id);
- if (connection) {
- linked_ptr<serial::ConnectionInfo> info(new serial::ConnectionInfo());
- info->connection_id = connection_id;
- connection->GetInfo(info.get());
- infos.push_back(info);
- }
- }
- }
- results_ = serial::GetConnections::Results::Create(infos);
-}
-
-SerialGetControlSignalsFunction::SerialGetControlSignalsFunction() {}
-
-SerialGetControlSignalsFunction::~SerialGetControlSignalsFunction() {}
-
-bool SerialGetControlSignalsFunction::Prepare() {
- params_ = serial::GetControlSignals::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- return true;
-}
-
-void SerialGetControlSignalsFunction::Work() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- return;
- }
-
- serial::DeviceControlSignals signals;
- if (!connection->GetControlSignals(&signals)) {
- error_ = kErrorGetControlSignalsFailed;
- return;
- }
-
- results_ = serial::GetControlSignals::Results::Create(signals);
-}
-
-SerialSetControlSignalsFunction::SerialSetControlSignalsFunction() {}
-
-SerialSetControlSignalsFunction::~SerialSetControlSignalsFunction() {}
-
-bool SerialSetControlSignalsFunction::Prepare() {
- params_ = serial::SetControlSignals::Params::Create(*args_);
- EXTENSION_FUNCTION_VALIDATE(params_.get());
-
- return true;
-}
-
-void SerialSetControlSignalsFunction::Work() {
- SerialConnection* connection = GetSerialConnection(params_->connection_id);
- if (!connection) {
- error_ = kErrorSerialConnectionNotFound;
- return;
- }
-
- bool success = connection->SetControlSignals(params_->signals);
- results_ = serial::SetControlSignals::Results::Create(success);
-}
-
-} // namespace api
-
-} // namespace extensions
-
-namespace mojo {
-
-// static
-linked_ptr<extensions::api::serial::DeviceInfo>
-TypeConverter<device::serial::DeviceInfoPtr,
- linked_ptr<extensions::api::serial::DeviceInfo> >::
- ConvertTo(const device::serial::DeviceInfoPtr& device) {
- linked_ptr<extensions::api::serial::DeviceInfo> info(
- new extensions::api::serial::DeviceInfo);
- info->path = device->path;
- if (device->has_vendor_id)
- info->vendor_id.reset(new int(static_cast<int>(device->vendor_id)));
- if (device->has_product_id)
- info->product_id.reset(new int(static_cast<int>(device->product_id)));
- if (device->display_name)
- info->display_name.reset(new std::string(device->display_name));
- return info;
-}
-
-} // namespace mojo
« no previous file with comments | « chrome/browser/extensions/api/serial/serial_api.h ('k') | chrome/browser/extensions/api/serial/serial_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698