Chromium Code Reviews| Index: chrome/renderer/extensions/request_sender.h |
| =================================================================== |
| --- chrome/renderer/extensions/request_sender.h (revision 246091) |
| +++ chrome/renderer/extensions/request_sender.h (working copy) |
| @@ -42,6 +42,20 @@ |
| const std::string& error) = 0; |
| }; |
| + // Helper class to (re)set the |source_tab_id_| below. |
| + class ScopedTabID { |
| + public: |
| + ScopedTabID(RequestSender* request_sender, int tab_id); |
| + ~ScopedTabID(); |
| + |
| + private: |
| + RequestSender* const request_sender_; |
| + const int tab_id_; |
| + const int previous_tab_id_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ScopedTabID); |
| + }; |
| + |
| explicit RequestSender(Dispatcher* dispatcher); |
| ~RequestSender(); |
| @@ -60,6 +74,7 @@ |
| int request_id, |
| bool has_callback, |
| bool for_io_thread, |
| + int source_tab_id, |
| base::ListValue* value_args); |
| // Handles responses from the extension host to calls made by StartRequest(). |
| @@ -72,7 +87,12 @@ |
| // TODO(kalman): Do this in a generic/safe way. |
| void InvalidateSource(Source* source); |
| + int sender_tab_id() const { |
|
not at google - send to devlin
2014/01/28 18:45:45
(see comment in request_sender.cc; does this need
|
| + return sender_tab_id_; |
| + } |
| + |
| private: |
| + friend class ScopedTabID; |
| typedef std::map<int, linked_ptr<PendingRequest> > PendingRequestMap; |
| void InsertRequest(int request_id, PendingRequest* pending_request); |
| @@ -81,6 +101,8 @@ |
| Dispatcher* dispatcher_; |
| PendingRequestMap pending_requests_; |
| + int sender_tab_id_; // Id of the tab sending the request, or -1 if no tab. |
| + |
| DISALLOW_COPY_AND_ASSIGN(RequestSender); |
| }; |