| Index: ipc/ipc_channel_proxy.h
 | 
| diff --git a/ipc/ipc_channel_proxy.h b/ipc/ipc_channel_proxy.h
 | 
| index 0c9323304098c2fc18c75f247479a749b1d3f27b..c28ba2f0940045362f905a9665bf84f7a86ecc0e 100644
 | 
| --- a/ipc/ipc_channel_proxy.h
 | 
| +++ b/ipc/ipc_channel_proxy.h
 | 
| @@ -123,10 +123,24 @@ class IPC_EXPORT ChannelProxy : public Endpoint, public base::NonThreadSafe {
 | 
|    // with / allow for this possibility.
 | 
|    void Close();
 | 
|  
 | 
| -  // Send a message asynchronously.  The message is routed to the background
 | 
| -  // thread where it is passed to the IPC::Channel's Send method.
 | 
| +  // DEPRECATED: Please use either SendNow or SendOnIPCThread to make ordering
 | 
| +  // expectations explicit.
 | 
| +  //
 | 
| +  // This is an alias for for SendOnIPCThread.
 | 
|    bool Send(Message* message) override;
 | 
|  
 | 
| +  // Send a message as soon as possible. This method may send the message
 | 
| +  // immediately, or it may defer and send on the IPC thread. Use this when you
 | 
| +  // you don't care about strict ordering of the send operation with respect to
 | 
| +  // tasks on the IPC thread. This is most commonly what you want.
 | 
| +  virtual bool SendNow(std::unique_ptr<Message> message);
 | 
| +
 | 
| +  // Send a message from the IPC thread. This immediately posts a task to the
 | 
| +  // IPC thread task runner to send the message. Use this when you're posting
 | 
| +  // other related tasks to the IPC thread and you need to guarantee that the
 | 
| +  // send operation is ordered with respect to those tasks.
 | 
| +  virtual bool SendOnIPCThread(std::unique_ptr<Message> message);
 | 
| +
 | 
|    // Used to intercept messages as they are received on the background thread.
 | 
|    //
 | 
|    // Ordinarily, messages sent to the ChannelProxy are routed to the matching
 | 
| @@ -181,7 +195,7 @@ class IPC_EXPORT ChannelProxy : public Endpoint, public base::NonThreadSafe {
 | 
|      void OnDispatchMessage(const Message& message);
 | 
|  
 | 
|      // Sends |message| from appropriate thread.
 | 
| -    void Send(Message* message);
 | 
| +    bool Send(std::unique_ptr<Message> message, bool force_io_thread);
 | 
|  
 | 
|      // Indicates if the underlying channel's Send is thread-safe.
 | 
|      bool IsChannelSendThreadSafe() const;
 | 
| @@ -235,7 +249,6 @@ class IPC_EXPORT ChannelProxy : public Endpoint, public base::NonThreadSafe {
 | 
|      void OnDispatchError();
 | 
|      void OnDispatchBadMessage(const Message& message);
 | 
|  
 | 
| -    void SendFromThisThread(Message* message);
 | 
|      void ClearChannel();
 | 
|  
 | 
|      scoped_refptr<base::SingleThreadTaskRunner> listener_task_runner_;
 | 
| @@ -296,6 +309,8 @@ class IPC_EXPORT ChannelProxy : public Endpoint, public base::NonThreadSafe {
 | 
|    // Always called once immediately after Init.
 | 
|    virtual void OnChannelInit();
 | 
|  
 | 
| +  bool SendImpl(std::unique_ptr<Message> message, bool force_io_thread);
 | 
| +
 | 
|    // By maintaining this indirection (ref-counted) to our internal state, we
 | 
|    // can safely be destroyed while the background thread continues to do stuff
 | 
|    // that involves this data.
 | 
| 
 |