| Index: device/serial/serial_io_handler.h
|
| diff --git a/device/serial/serial_io_handler.h b/device/serial/serial_io_handler.h
|
| index 5b2d0592db6983e52e65c67014fb01cf81d91ab7..46e0ed0fa2be1efd29b34935617ada01426c4a05 100644
|
| --- a/device/serial/serial_io_handler.h
|
| +++ b/device/serial/serial_io_handler.h
|
| @@ -24,7 +24,8 @@ class SerialIoHandler : public base::NonThreadSafe,
|
| public:
|
| // Constructs an instance of some platform-specific subclass.
|
| static scoped_refptr<SerialIoHandler> Create(
|
| - scoped_refptr<base::MessageLoopProxy> file_thread_message_loop);
|
| + scoped_refptr<base::MessageLoopProxy> file_thread_message_loop,
|
| + scoped_refptr<base::MessageLoopProxy> ui_thread_message_loop);
|
|
|
| typedef base::Callback<void(bool success)> OpenCompleteCallback;
|
|
|
| @@ -32,6 +33,9 @@ class SerialIoHandler : public base::NonThreadSafe,
|
| virtual void Open(const std::string& port,
|
| const OpenCompleteCallback& callback);
|
|
|
| + // Signals that the access request for |port| is complete.
|
| + void OnRequestAccessComplete(const std::string& port, bool success);
|
| +
|
| // Performs an async Read operation. Behavior is undefined if this is called
|
| // while a Read is already pending. Otherwise, the Done or DoneWithError
|
| // method on |buffer| will eventually be called with a result.
|
| @@ -79,7 +83,8 @@ class SerialIoHandler : public base::NonThreadSafe,
|
|
|
| protected:
|
| explicit SerialIoHandler(
|
| - scoped_refptr<base::MessageLoopProxy> file_thread_message_loop);
|
| + scoped_refptr<base::MessageLoopProxy> file_thread_message_loop,
|
| + scoped_refptr<base::MessageLoopProxy> ui_thread_message_loop);
|
| virtual ~SerialIoHandler();
|
|
|
| // Performs a platform-specific read operation. This must guarantee that
|
| @@ -92,7 +97,7 @@ class SerialIoHandler : public base::NonThreadSafe,
|
| // Performs a platform-specific write operation. This must guarantee that
|
| // WriteCompleted is called when the underlying async operation is completed
|
| // or the SerialIoHandler instance will leak.
|
| - // NOTE: Implementations of Writempl should never call WriteCompleted
|
| + // NOTE: Implementations of WriteImpl should never call WriteCompleted
|
| // directly. Use QueueWriteCompleted instead to avoid reentrancy.
|
| virtual void WriteImpl() = 0;
|
|
|
| @@ -102,6 +107,12 @@ class SerialIoHandler : public base::NonThreadSafe,
|
| // Platform-specific write cancelation.
|
| virtual void CancelWriteImpl() = 0;
|
|
|
| + // Requests access to the underlying serial device, if needed.
|
| + virtual void RequestAccess(
|
| + const std::string& port,
|
| + scoped_refptr<base::MessageLoopProxy> file_message_loop,
|
| + scoped_refptr<base::MessageLoopProxy> ui_message_loop);
|
| +
|
| // Performs platform-specific, one-time port configuration on open.
|
| virtual bool PostOpen();
|
|
|
| @@ -187,6 +198,8 @@ class SerialIoHandler : public base::NonThreadSafe,
|
| OpenCompleteCallback open_complete_;
|
|
|
| scoped_refptr<base::MessageLoopProxy> file_thread_message_loop_;
|
| + // On Chrome OS, PermissionBrokerClient should be called on the UI thread.
|
| + scoped_refptr<base::MessageLoopProxy> ui_thread_message_loop_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SerialIoHandler);
|
| };
|
|
|