Commit ece26dd9 authored by miket@chromium.org's avatar miket@chromium.org

Move serial out of experimental.

This CL is unremarkable except that I figured out that we're improperly
including some permissions for experimental APIs (which are already
covered by the blanket experimental permission). This made it tougher
because I used http://codereview.chromium.org/10440097/, which
benefited unwittingly from a pre-declared socket permission, as an
example. I then ran into missing namespace problems because I hadn't
done everything necessary (such as including serial in api_permission.cc).

I did my job as a good citizen and removed the superfluous USB permission.

Also ran build.py to update docs.

BUG=138370
TEST=no new ones; updated old ones to build.

Review URL: https://chromiumcodereview.appspot.com/10852016

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150186 0039d316-1c4b-4281-b951-d872f2087c98
parent d5a578fa
......@@ -89,7 +89,7 @@ SerialOpenFunction::~SerialOpenFunction() {
bool SerialOpenFunction::Prepare() {
set_work_thread_id(BrowserThread::FILE);
params_ = api::experimental_serial::Open::Params::Create(*args_);
params_ = api::serial::Open::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
if (params_->options.get()) {
......@@ -166,7 +166,7 @@ SerialCloseFunction::~SerialCloseFunction() {
bool SerialCloseFunction::Prepare() {
set_work_thread_id(BrowserThread::FILE);
params_ = api::experimental_serial::Close::Params::Create(*args_);
params_ = api::serial::Close::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
return true;
......@@ -197,7 +197,7 @@ SerialReadFunction::~SerialReadFunction() {
bool SerialReadFunction::Prepare() {
set_work_thread_id(BrowserThread::FILE);
params_ = api::experimental_serial::Read::Params::Create(*args_);
params_ = api::serial::Read::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
if (params_->bytes_to_read <= 0 || params_->bytes_to_read >= 1024 * 1024) {
error_ = kSerialReadInvalidBytesToRead;
......@@ -242,7 +242,7 @@ SerialWriteFunction::~SerialWriteFunction() {
bool SerialWriteFunction::Prepare() {
set_work_thread_id(BrowserThread::FILE);
params_ = api::experimental_serial::Write::Params::Create(*args_);
params_ = api::serial::Write::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
io_buffer_size_ = params_->data.size();
......@@ -277,7 +277,7 @@ SerialFlushFunction::~SerialFlushFunction() {
bool SerialFlushFunction::Prepare() {
set_work_thread_id(BrowserThread::FILE);
params_ = api::experimental_serial::Flush::Params::Create(*args_);
params_ = api::serial::Flush::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
return true;
}
......@@ -307,7 +307,7 @@ SerialGetControlSignalsFunction::~SerialGetControlSignalsFunction() {
bool SerialGetControlSignalsFunction::Prepare() {
set_work_thread_id(BrowserThread::FILE);
params_ = api::experimental_serial::GetControlSignals::Params::Create(
params_ = api::serial::GetControlSignals::Params::Create(
*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
......@@ -347,7 +347,7 @@ SerialSetControlSignalsFunction::~SerialSetControlSignalsFunction() {
bool SerialSetControlSignalsFunction::Prepare() {
set_work_thread_id(BrowserThread::FILE);
params_ = api::experimental_serial::SetControlSignals::Params::Create(
params_ = api::serial::SetControlSignals::Params::Create(
*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
......
......@@ -10,7 +10,7 @@
#include "base/memory/ref_counted.h"
#include "chrome/browser/extensions/api/api_function.h"
#include "chrome/browser/extensions/api/api_resource_manager.h"
#include "chrome/common/extensions/api/experimental_serial.h"
#include "chrome/common/extensions/api/serial.h"
#include "net/base/io_buffer.h"
namespace extensions {
......@@ -35,7 +35,7 @@ class SerialAsyncApiFunction : public AsyncApiFunction {
class SerialGetPortsFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.getPorts")
DECLARE_EXTENSION_FUNCTION_NAME("serial.getPorts")
SerialGetPortsFunction();
......@@ -50,7 +50,7 @@ class SerialGetPortsFunction : public SerialAsyncApiFunction {
class SerialOpenFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.open")
DECLARE_EXTENSION_FUNCTION_NAME("serial.open")
SerialOpenFunction();
......@@ -71,7 +71,7 @@ class SerialOpenFunction : public SerialAsyncApiFunction {
virtual bool DoesPortExist(const std::string& port);
private:
scoped_ptr<api::experimental_serial::Open::Params> params_;
scoped_ptr<api::serial::Open::Params> params_;
int src_id_;
int bitrate_;
......@@ -81,7 +81,7 @@ class SerialOpenFunction : public SerialAsyncApiFunction {
class SerialCloseFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.close")
DECLARE_EXTENSION_FUNCTION_NAME("serial.close")
SerialCloseFunction();
......@@ -94,12 +94,12 @@ class SerialCloseFunction : public SerialAsyncApiFunction {
virtual bool Respond() OVERRIDE;
private:
scoped_ptr<api::experimental_serial::Close::Params> params_;
scoped_ptr<api::serial::Close::Params> params_;
};
class SerialReadFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.read")
DECLARE_EXTENSION_FUNCTION_NAME("serial.read")
SerialReadFunction();
......@@ -112,12 +112,12 @@ class SerialReadFunction : public SerialAsyncApiFunction {
virtual bool Respond() OVERRIDE;
private:
scoped_ptr<api::experimental_serial::Read::Params> params_;
scoped_ptr<api::serial::Read::Params> params_;
};
class SerialWriteFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.write")
DECLARE_EXTENSION_FUNCTION_NAME("serial.write")
SerialWriteFunction();
......@@ -130,14 +130,14 @@ class SerialWriteFunction : public SerialAsyncApiFunction {
virtual bool Respond() OVERRIDE;
private:
scoped_ptr<api::experimental_serial::Write::Params> params_;
scoped_ptr<api::serial::Write::Params> params_;
scoped_refptr<net::IOBuffer> io_buffer_;
size_t io_buffer_size_;
};
class SerialFlushFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.flush")
DECLARE_EXTENSION_FUNCTION_NAME("serial.flush")
SerialFlushFunction();
......@@ -150,12 +150,12 @@ class SerialFlushFunction : public SerialAsyncApiFunction {
virtual bool Respond() OVERRIDE;
private:
scoped_ptr<api::experimental_serial::Flush::Params> params_;
scoped_ptr<api::serial::Flush::Params> params_;
};
class SerialGetControlSignalsFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.getControlSignals")
DECLARE_EXTENSION_FUNCTION_NAME("serial.getControlSignals")
SerialGetControlSignalsFunction();
......@@ -168,13 +168,13 @@ class SerialGetControlSignalsFunction : public SerialAsyncApiFunction {
virtual bool Respond() OVERRIDE;
private:
scoped_ptr<api::experimental_serial::GetControlSignals::Params> params_;
scoped_ptr<api::serial::GetControlSignals::Params> params_;
bool api_response_;
};
class SerialSetControlSignalsFunction : public SerialAsyncApiFunction {
public:
DECLARE_EXTENSION_FUNCTION_NAME("experimental.serial.setControlSignals")
DECLARE_EXTENSION_FUNCTION_NAME("serial.setControlSignals")
SerialSetControlSignalsFunction();
......@@ -187,7 +187,7 @@ class SerialSetControlSignalsFunction : public SerialAsyncApiFunction {
virtual bool Respond() OVERRIDE;
private:
scoped_ptr<api::experimental_serial::SetControlSignals::Params> params_;
scoped_ptr<api::serial::SetControlSignals::Params> params_;
};
} // namespace extensions
......
......@@ -172,10 +172,10 @@ IN_PROC_BROWSER_TEST_F(SerialApiTest, SerialFakeHardware) {
#if SIMULATE_SERIAL_PORTS
ASSERT_TRUE(ExtensionFunctionDispatcher::OverrideFunction(
"experimental.serial.getPorts",
"serial.getPorts",
FakeSerialGetPortsFunctionFactory));
ASSERT_TRUE(ExtensionFunctionDispatcher::OverrideFunction(
"experimental.serial.open",
"serial.open",
FakeSerialOpenFunctionFactory));
#endif
......
......@@ -236,7 +236,7 @@
"min_manifest_version": 2
},
"serial": {
"channel": "stable",
"channel": "dev",
"extension_types": ["platform_app"]
},
"socket": {
......@@ -283,10 +283,6 @@
"extension", "packaged_app", "hosted_app", "platform_app"
]
},
"usb": {
"channel": "stable",
"extension_types": ["platform_app"]
},
"videoCapture": {
"channel": "stable",
"extension_types": ["platform_app"]
......
......@@ -46,9 +46,9 @@
'experimental_idltest.idl',
'experimental_media_galleries.idl',
'experimental_push_messaging.idl',
'experimental_serial.idl',
'experimental_usb.idl',
'file_system.idl',
'serial.idl',
'socket.idl',
],
'cc_dir': 'chrome/common/extensions/api',
......
......@@ -4,7 +4,7 @@
// File-level comment to appease parser. Eventually this will not be necessary.
namespace experimental.serial {
namespace serial {
callback GetPortsCallback = void (DOMString[] ports);
......
......@@ -210,6 +210,7 @@ Here are the supported chrome.* APIs:
</li><li><a href="idle.html" js="">idle</a>
</li><li><a href="permissions.html" js="">permissions</a>
</li><li><a href="runtime.html" js="">runtime</a>
</li><li><a href="serial.html" js="">serial</a>
</li><li><a href="socket.html" js="">socket</a>
</li><li><a href="storage.html" js="">storage</a>
</li><li><a href="tts.html" js="">tts</a>
......
......@@ -216,7 +216,6 @@ on the following experimental APIs:
<a href="experimental.commands.html">experimental.commands</a></li><li>
<a href="experimental.identity.html">experimental.identity</a></li><li>
<a href="experimental.mediaGalleries.html">experimental.mediaGalleries</a></li><li>
<a href="experimental.serial.html">experimental.serial</a></li><li>
<a href="experimental.usb.html">experimental.usb</a></li>
</ul>
<p class="doc-family extensions">
......
......@@ -252,7 +252,6 @@ on the following experimental APIs:
<a href="experimental.infobars.html">experimental.infobars</a></li><li>
<a href="experimental.offscreenTabs.html">experimental.offscreenTabs</a></li><li>
<a href="experimental.processes.html">experimental.processes</a></li><li>
<a href="experimental.serial.html">experimental.serial</a></li><li>
<a href="experimental.speechInput.html">experimental.speechInput</a></li><li>
<a href="experimental.usb.html">experimental.usb</a></li>
</ul>
......
......@@ -346,6 +346,8 @@
<a href="javascript:void(0);" onclick="setFilter('chrome.runtime', this)">chrome.runtime</a><span>, </span>
</span><span>
<a href="javascript:void(0);" onclick="setFilter('chrome.scriptBadge', this)">chrome.scriptBadge</a><span>, </span>
</span><span>
<a href="javascript:void(0);" onclick="setFilter('chrome.serial', this)">chrome.serial</a><span>, </span>
</span><span>
<a href="javascript:void(0);" onclick="setFilter('chrome.socket', this)">chrome.socket</a><span>, </span>
</span><span>
......
......@@ -55,7 +55,6 @@ var MODULE_SCHEMAS = [
'../../api/experimental_processes.json',
'../../api/experimental_push_messaging.json', // autogenerated
'../../api/experimental_rlz.json',
'../../api/experimental_serial.json', // autogenerated
'../../api/experimental_speech_input.json',
'../../api/experimental_usb.json', // autogenerated
'../../api/extension.json',
......@@ -82,6 +81,7 @@ var MODULE_SCHEMAS = [
'../../api/proxy.json',
'../../api/runtime.json',
'../../api/script_badge.json',
'../../api/serial.json', // autogenerated
'../../api/socket.json', // autogenerated
'../../api/storage.json',
'../../api/system_private.json',
......
......@@ -177,14 +177,6 @@
"chrome.experimental.processes.terminate": "experimental.processes.html#method-terminate",
"chrome.experimental.record.captureURLs": "experimental.record.html#method-captureURLs",
"chrome.experimental.record.replayURLs": "experimental.record.html#method-replayURLs",
"chrome.experimental.serial.close": "experimental.serial.html#method-close",
"chrome.experimental.serial.flush": "experimental.serial.html#method-flush",
"chrome.experimental.serial.getControlSignals": "experimental.serial.html#method-getControlSignals",
"chrome.experimental.serial.getPorts": "experimental.serial.html#method-getPorts",
"chrome.experimental.serial.open": "experimental.serial.html#method-open",
"chrome.experimental.serial.read": "experimental.serial.html#method-read",
"chrome.experimental.serial.setControlSignals": "experimental.serial.html#method-setControlSignals",
"chrome.experimental.serial.write": "experimental.serial.html#method-write",
"chrome.experimental.speechInput.isRecording": "experimental.speechInput.html#method-isRecording",
"chrome.experimental.speechInput.onError": "experimental.speechInput.html#event-onError",
"chrome.experimental.speechInput.onResult": "experimental.speechInput.html#event-onResult",
......@@ -304,6 +296,14 @@
"chrome.scriptBadge.getPopup": "scriptBadge.html#method-getPopup",
"chrome.scriptBadge.onClicked": "scriptBadge.html#event-onClicked",
"chrome.scriptBadge.setPopup": "scriptBadge.html#method-setPopup",
"chrome.serial.close": "serial.html#method-close",
"chrome.serial.flush": "serial.html#method-flush",
"chrome.serial.getControlSignals": "serial.html#method-getControlSignals",
"chrome.serial.getPorts": "serial.html#method-getPorts",
"chrome.serial.open": "serial.html#method-open",
"chrome.serial.read": "serial.html#method-read",
"chrome.serial.setControlSignals": "serial.html#method-setControlSignals",
"chrome.serial.write": "serial.html#method-write",
"chrome.socket.bind": "socket.html#method-bind",
"chrome.socket.connect": "socket.html#method-connect",
"chrome.socket.create": "socket.html#method-create",
......
......@@ -117,9 +117,6 @@ void APIPermission::RegisterAllPermissions(
{ kTtsEngine, "ttsEngine", kFlagCannotBeOptional,
IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE,
PermissionMessage::kTtsEngine },
{ kUsb, "usb", kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_USB,
PermissionMessage::kNone },
{ kWebNavigation, "webNavigation", kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs },
{ kWebRequest, "webRequest" },
......@@ -157,6 +154,7 @@ void APIPermission::RegisterAllPermissions(
PermissionMessage::kFullAccess },
// Platform-app permissions.
{ kSerial, "serial", kFlagCannotBeOptional },
{ kSocket, "socket", kFlagCannotBeOptional },
{ kAppWindow, "app.window" },
{ kAudioCapture, "audioCapture", kFlagNone,
......
......@@ -70,6 +70,7 @@ class APIPermission {
kPlugin,
kPrivacy,
kProxy,
kSerial,
kSocket,
kStorage,
kSystemPrivate,
......@@ -79,7 +80,6 @@ class APIPermission {
kTts,
kTtsEngine,
kUnlimitedStorage,
kUsb,
kVideoCapture,
kWallpaperPrivate,
kWebNavigation,
......
......@@ -608,8 +608,8 @@ TEST(PermissionsTest, PermissionMessages) {
// Platform apps. TODO(miket): must we skip?
skip.insert(APIPermission::kFileSystem);
skip.insert(APIPermission::kSerial);
skip.insert(APIPermission::kSocket);
skip.insert(APIPermission::kUsb);
PermissionsInfo* info = PermissionsInfo::GetInstance();
APIPermissionSet permissions = info->GetAll();
......
......@@ -9,7 +9,6 @@
}
},
"permissions": [
"experimental",
"dns"
"experimental"
]
}
......@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
const serial = chrome.serial;
// TODO(miket): opening Bluetooth ports on OSX is unreliable. Investigate.
function shouldSkipPort(portName) {
return portName.match(/[Bb]luetooth/);
......@@ -33,34 +35,31 @@ var testSerial = function() {
var doNextOperation = function() {
switch (operation++) {
case 0:
chrome.experimental.serial.getPorts(onGetPorts);
serial.getPorts(onGetPorts);
break;
case 1:
var bitrate = 57600;
console.log('Opening serial device ' + serialPort + ' at ' +
bitrate + ' bps.');
chrome.experimental.serial.open(serialPort, {bitrate: bitrate},
onOpen);
serial.open(serialPort, {bitrate: bitrate}, onOpen);
break;
case 2:
chrome.experimental.serial.setControlSignals(
connectionId, {dtr: true}, onSetControlSignals);
serial.setControlSignals(connectionId, {dtr: true}, onSetControlSignals);
break;
case 3:
chrome.experimental.serial.getControlSignals(connectionId,
onGetControlSignals);
serial.getControlSignals(connectionId,onGetControlSignals);
break;
case 4:
chrome.experimental.serial.write(connectionId, writeBuffer, onWrite);
serial.write(connectionId, writeBuffer, onWrite);
break;
case 5:
chrome.experimental.serial.read(connectionId, bytesToRead, onRead);
serial.read(connectionId, bytesToRead, onRead);
break;
case 6:
chrome.experimental.serial.flush(connectionId, onFlush);
serial.flush(connectionId, onFlush);
break;
case 50: // GOTO 4 EVER
chrome.experimental.serial.close(connectionId, onClose);
serial.close(connectionId, onClose);
break;
default:
// Beware! If you forget to assign a case for your next test, the whole
......@@ -94,9 +93,8 @@ var testSerial = function() {
bytesToRead -= readInfo.bytesRead;
var readBufferIndex = bufferLength - readInfo.bytesRead;
var messageUint8View = new Uint8Array(readInfo.data);
for (var i = 0; i < readInfo.bytesRead; i++) {
for (var i = 0; i < readInfo.bytesRead; i++)
readBufferUint8View[i + readBufferIndex] = messageUint8View[i];
}
if (bytesToRead == 0) {
chrome.test.assertEq(writeBufferUint8View, readBufferUint8View,
'Buffer read was not equal to buffer written.');
......
{
"name": "chrome.experimental.serial",
"name": "chrome.serial",
"version": "0.1",
"manifest_version": 2,
"description": "end-to-end browser test for chrome.experimental.serial API",
"description": "end-to-end browser test for chrome.serial API",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"permissions": [
"experimental",
"serial"
]
}
......@@ -16,7 +16,7 @@ var testGetPorts = function() {
chrome.test.succeed();
}
chrome.experimental.serial.getPorts(onGetPorts);
chrome.serial.getPorts(onGetPorts);
};
var testMaybeOpenPort = function() {
......@@ -44,7 +44,7 @@ var testMaybeOpenPort = function() {
var onOpen = function(connectionInfo) {
var id = connectionInfo.connectionId;
if (id > 0)
chrome.experimental.serial.close(id, onClose);
chrome.serial.close(id, onClose);
else
onFinishedWithPort();
};
......@@ -56,7 +56,7 @@ var testMaybeOpenPort = function() {
onFinishedWithPort();
} else {
console.log("Opening serial device " + port);
chrome.experimental.serial.open(port, onOpen);
chrome.serial.open(port, onOpen);
}
}
......@@ -67,7 +67,7 @@ var testMaybeOpenPort = function() {
}
}
chrome.experimental.serial.getPorts(onGetPorts);
chrome.serial.getPorts(onGetPorts);
};
var tests = [testGetPorts, testMaybeOpenPort];
......
{
"name": "chrome.experimental.serial",
"name": "chrome.serial real hardware",
"version": "0.1",
"manifest_version": 2,
"description": "end-to-end browser test for chrome.experimental.serial API",
"description": "end-to-end real-hardware test for chrome.serial API",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"permissions": [
"experimental",
"serial"
]
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment